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
F163476517: D53303.id164897.diff
Thu, Jul 23, 1:43 PM
Unknown Object (File)
Wed, Jul 22, 1:30 PM
Unknown Object (File)
Wed, Jul 22, 5:20 AM
Unknown Object (File)
Sat, Jul 18, 12:17 PM
Unknown Object (File)
Fri, Jul 17, 9:12 PM
Unknown Object (File)
Wed, Jul 15, 6:51 AM
Unknown Object (File)
Wed, Jul 15, 6:51 AM
Unknown Object (File)
Sun, Jul 12, 1:28 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