Page MenuHomeFreeBSD

refcount: add missing release fence to refcount_release_if_gt
ClosedPublic

Authored by mjg on Feb 15 2020, 11:33 PM.
Tags
None
Referenced Files
Unknown Object (File)
Sun, Apr 13, 4:58 AM
Unknown Object (File)
Wed, Apr 9, 10:27 AM
Unknown Object (File)
Sat, Apr 5, 3:21 PM
Unknown Object (File)
Mar 13 2025, 6:59 AM
Unknown Object (File)
Mar 13 2025, 3:32 AM
Unknown Object (File)
Mar 12 2025, 10:15 PM
Unknown Object (File)
Jan 25 2025, 5:54 AM
Unknown Object (File)
Jan 11 2025, 2:19 PM
Subscribers

Details

Reviewers
kib
jeff
markj
jhb
Summary

The CPU succeeding in releasing the not last reference can still have pending stores to the object protected by the affected counter. This opens a time window where another CPU can release the last reference and free the object, resulting in use-after-free. On top of that this prevents the compiler from generating more accesses to the object regardless of how atomic_fcmpset_rel_int is implemented (of course as long as it provides the release semantic).

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Skipped
Unit
Tests Skipped
Build Status
Buildable 29411