Page MenuHomeFreeBSD

uma: Add KASAN state transitions
ClosedPublic

Authored by markj on Mar 27 2021, 11:29 PM.

Details

Summary


- Add a UMA_ZONE_NOKASAN flag to indicate that items from a particular
zone should not be sanitized. This is applied implicitly for NOFREE
and cache zones.
- Add KASAN call backs which get invoked:
1) when a slab is imported into a keg
2) when an item is allocated from a zone
3) when an item is freed to a zone
4) when a slab is freed back to the VM

In state transitions 1 and 3, memory is poisoned so that accesses will
trigger a panic. In state transitions 2 and 4, memory is marked
valid.
- Disable trashing if KASAN is enabled. It just adds extra CPU overhead
to catch problems that are detected by KASAN.

Diff Detail

Repository
R10 FreeBSD src repository
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

sys/vm/uma.h
278

Aside, in cases like this I'd like style(9) to put the first line of the comment beside the /*.

sys/vm/uma_core.c
535

Sort of bikeshed territory, but I wonder if

#ifdef KASAN
... implementation
#else
... stubs
#endif

isn't more straightforward

1688–1690

these and a couple of other changes can be committed independently first?

sys/vm/uma_core.c
1688–1690

I should just drop this part, it's left over from an earlier version of the patch.

markj marked 2 inline comments as done.
  • Drop spurious hunk.
  • Provide separate stubs for the !KASAN case.
This revision was not accepted when it landed; it landed in state Needs Review.Tue, Apr 13, 9:42 PM
This revision was automatically updated to reflect the committed changes.