Page MenuHomeFreeBSD

devfs: make destroy_dev() a release barrier for cdevpriv destructors runs
ClosedPublic

Authored by kib on Oct 23 2025, 6:43 PM.
Tags
None
Referenced Files
Unknown Object (File)
Sun, Nov 30, 10:29 PM
Unknown Object (File)
Nov 18 2025, 3:53 AM
Unknown Object (File)
Nov 3 2025, 5:10 PM
Unknown Object (File)
Oct 25 2025, 6:09 PM
Unknown Object (File)
Oct 25 2025, 6:08 PM
Unknown Object (File)
Oct 25 2025, 6:04 PM
Unknown Object (File)
Oct 25 2025, 5:28 PM
Unknown Object (File)
Oct 25 2025, 12:50 PM
Subscribers

Details

Summary
Ensure that all destructors for cdevpriv finished running after
destroy_dev() returns to the caller.  Otherwise, since
devfs_destroy_cdevpriv() removes the cdevpriv data from the list, drops
the cdevpriv_mtx, and then starts the destructor, it is possible for
destroy_dev() to return before destructor finished in other thread.

This should allow drivers to safely remove cdev instance data that might
be referenced by cdevpriv data.

Diagnosed by:   kevans

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable