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)
Tue, Dec 31, 7:14 PM
Unknown Object (File)
Sun, Dec 29, 12:55 AM
Unknown Object (File)
Dec 4 2024, 12:44 AM
Unknown Object (File)
Nov 20 2024, 10:34 PM
Unknown Object (File)
Nov 12 2024, 2:36 AM
Unknown Object (File)
Oct 10 2024, 3:46 PM
Unknown Object (File)
Oct 7 2024, 4:42 PM
Unknown Object (File)
Oct 6 2024, 1:54 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.