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)
Tue, Jun 16, 4:35 PM
Unknown Object (File)
May 19 2026, 11:33 AM
Unknown Object (File)
May 18 2026, 11:37 AM
Unknown Object (File)
May 14 2026, 1:00 PM
Unknown Object (File)
May 13 2026, 1:56 PM
Unknown Object (File)
May 13 2026, 7:03 AM
Unknown Object (File)
May 13 2026, 7:03 AM
Unknown Object (File)
May 12 2026, 10:52 AM
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