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)
Sun, Oct 12, 7:50 AM
Unknown Object (File)
Thu, Oct 9, 4:15 AM
Unknown Object (File)
Mon, Oct 6, 8:43 AM
Unknown Object (File)
Sun, Oct 5, 3:59 AM
Unknown Object (File)
Fri, Sep 26, 9:00 AM
Unknown Object (File)
Thu, Sep 25, 8:52 PM
Unknown Object (File)
Wed, Sep 24, 5:15 PM
Unknown Object (File)
Tue, Sep 23, 4:59 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.