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)
Wed, Nov 5, 8:54 AM
Unknown Object (File)
Wed, Nov 5, 8:50 AM
Unknown Object (File)
Wed, Nov 5, 8:49 AM
Unknown Object (File)
Sat, Nov 1, 2:47 PM
Unknown Object (File)
Oct 20 2025, 9:20 PM
Unknown Object (File)
Oct 20 2025, 9:20 PM
Unknown Object (File)
Oct 20 2025, 10:18 AM
Unknown Object (File)
Oct 19 2025, 7:43 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