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)
Sat, Mar 14, 5:01 PM
Unknown Object (File)
Fri, Mar 13, 5:02 AM
Unknown Object (File)
Wed, Mar 11, 10:52 AM
Unknown Object (File)
Tue, Mar 3, 8:43 PM
Unknown Object (File)
Tue, Mar 3, 2:25 PM
Unknown Object (File)
Mon, Mar 2, 12:44 PM
Unknown Object (File)
Mon, Mar 2, 12:44 PM
Unknown Object (File)
Mon, Mar 2, 12:44 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