Page MenuHomeFreeBSD

wg: Fix some mbuf leaks in the input path
ClosedPublic

Authored by markj on Mar 2 2021, 3:10 PM.
Tags
None
Referenced Files
F153213619: D29011.id84949.diff
Sun, Apr 19, 8:38 PM
Unknown Object (File)
Thu, Apr 9, 11:55 AM
Unknown Object (File)
Thu, Apr 9, 6:09 AM
Unknown Object (File)
Thu, Apr 9, 12:34 AM
Unknown Object (File)
Fri, Apr 3, 6:14 AM
Unknown Object (File)
Wed, Apr 1, 6:23 PM
Unknown Object (File)
Tue, Mar 31, 9:18 PM
Unknown Object (File)
Sun, Mar 29, 4:11 AM
Subscribers

Details

Summary
  • When m_defrag() fails we have to free the mbuf ourselves.
  • If the handshake input queue is full, we are responsible for dropping the packet.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 37501
Build 34390: arc lint + arc unit

Event Timeline

markj requested review of this revision.Mar 2 2021, 3:11 PM
sys/dev/if_wg/module/if_wg_session.c
1939

How is this queue locked?

afedorov added inline comments.
sys/dev/if_wg/module/if_wg_session.c
1908

Hmm, is m_defrag() really needed here? This is a very costly operation due to allocation. Because we only need to get "pkttype", maybe using m_pullup is enough?

sys/dev/if_wg/module/if_wg_session.c
1908

That's a good question. wg_handshake() assumes that the entire packet is contiguous, though, so a pullup to get the packet type is not sufficient.

This revision is now accepted and ready to land.Mar 8 2021, 6:45 AM