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
Unknown Object (File)
Feb 18 2024, 1:57 AM
Unknown Object (File)
Dec 20 2023, 7:20 AM
Unknown Object (File)
Dec 10 2023, 7:08 PM
Unknown Object (File)
Nov 17 2023, 5:55 AM
Unknown Object (File)
Sep 6 2023, 1:38 AM
Unknown Object (File)
Sep 6 2023, 1:37 AM
Unknown Object (File)
Sep 6 2023, 1:36 AM
Unknown Object (File)
Aug 31 2023, 11:47 PM
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.