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
F157408463: D29011.diff
Thu, May 21, 2:06 AM
Unknown Object (File)
Thu, Apr 30, 7:28 AM
Unknown Object (File)
Sat, Apr 25, 10:43 AM
Unknown Object (File)
Sat, Apr 25, 3:00 AM
Unknown Object (File)
Fri, Apr 24, 6:21 PM
Unknown Object (File)
Thu, Apr 23, 9:45 PM
Unknown Object (File)
Thu, Apr 23, 9:45 PM
Unknown Object (File)
Wed, Apr 22, 11:24 PM
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
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

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

How is this queue locked?

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

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–1914

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