Page MenuHomeFreeBSD

if: Fix panic when destroying vnet and epair simultaneously
ClosedPublic

Authored by kp on Nov 26 2020, 12:04 AM.
Tags
None
Referenced Files
F103138149: D27378.diff
Thu, Nov 21, 12:30 PM
Unknown Object (File)
Tue, Nov 19, 6:04 PM
Unknown Object (File)
Wed, Nov 6, 5:58 PM
Unknown Object (File)
Tue, Oct 29, 9:36 PM
Unknown Object (File)
Oct 17 2024, 3:52 PM
Unknown Object (File)
Oct 16 2024, 2:48 PM
Unknown Object (File)
Oct 14 2024, 6:53 PM
Unknown Object (File)
Oct 13 2024, 7:58 AM
Subscribers

Details

Summary

When destroying a vnet and an epair (with one end in the vnet) we often
panicked. This was the result of the destruction of the epair, which
destroys both ends, happening while vnet_if_return() was moving the
struct ifnet to its home vnet. This can result in a freed ifnet being
re-added to the home vnet V_ifnet list. That in turn panics the next
time the ifnet is used.

Prevent this race by ensuring that vnet_if_return() cannot run at the
same time as if_detach() or epair_clone_destroy().

PR: 238870, 234985, 244703, 250870
MFC after: 2 weeks
Sponsored by: Modirum MDPay

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

kp requested review of this revision.Nov 26 2020, 12:04 AM
This revision was not accepted when it landed; it landed in state Needs Review.Dec 1 2020, 4:24 PM
This revision was automatically updated to reflect the committed changes.