Page MenuHomeFreeBSD

for a cache-only zone the destructor tries to destroy a non-existent keg
ClosedPublic

Authored by tychon on Apr 5 2019, 11:55 PM.
Tags
None
Referenced Files
Unknown Object (File)
Thu, Feb 27, 8:53 PM
Unknown Object (File)
Wed, Feb 26, 7:00 PM
Unknown Object (File)
Fri, Feb 21, 10:59 PM
Unknown Object (File)
Sat, Feb 15, 12:02 PM
Unknown Object (File)
Sat, Feb 8, 1:04 AM
Unknown Object (File)
Feb 3 2025, 5:00 AM
Unknown Object (File)
Feb 1 2025, 10:41 AM
Unknown Object (File)
Feb 1 2025, 10:39 AM
Subscribers

Details

Summary

Pure cache zones have no kegs. However since uz_keg and uz_lockptr are shared members of struct uma_zone a pointer to a lock may masquerade as a pointer to a keg. Therefore it’s insufficient to test uz_keg to determine if a zone has a keg.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

sys/vm/uma_core.c
1921 ↗(On Diff #55868)

I believe you can test (uz_flags & UMA_ZFLAG_CACHE) == 0 instead.

tychon edited the summary of this revision. (Show Details)

Use markj@'s suggestion for a more overt/intuitive fix.

markj added inline comments.
sys/vm/uma_core.c
1922 ↗(On Diff #56091)

These tests can be combined into one.

This revision is now accepted and ready to land.Apr 11 2019, 5:16 PM

Might a well make this as good as can be. I combined the tests into one.

This revision now requires review to proceed.Apr 12 2019, 11:01 AM
This revision is now accepted and ready to land.Apr 12 2019, 11:57 AM
This revision was automatically updated to reflect the committed changes.