Page MenuHomeFreeBSD

tcp: Missing mfree in rack and bbr.
ClosedPublic

Authored by rrs on Jun 11 2021, 3:05 PM.
Tags
None
Referenced Files
Unknown Object (File)
Wed, Oct 23, 7:25 PM
Unknown Object (File)
Oct 3 2024, 10:33 PM
Unknown Object (File)
Oct 3 2024, 9:39 PM
Unknown Object (File)
Oct 1 2024, 6:39 PM
Unknown Object (File)
Oct 1 2024, 5:07 PM
Unknown Object (File)
Sep 28 2024, 8:51 AM
Unknown Object (File)
Sep 27 2024, 10:39 PM
Unknown Object (File)
Sep 24 2024, 9:31 AM
Subscribers

Details

Summary

Recently we added logic that protects against a peer negotiating a timestamp, and
then not including a timestamp. This involved in the input path doing a goto done_with_input
label. Now I suspect the code was cribbed from one in Rack that has to do with the SYN.
This had a bug, i.e. it should have a m_freem(m) before going to the label (bbr had this
missing m_freem() but rack did not). This then caused the missing m_freem to show
up in both BBR and Rack. Also looking at the code referencing m->m_pkthdr.lro_nsegs
later (after processing) is not a good idea, even though its only for logging. Best to
copy that off before any frees can take place.

Test Plan

Run my setup that has had the mbuf leak and see if it cures it.

Diff Detail

Lint
Lint Skipped
Unit
Tests Skipped