On Tue, May 3, 2016 at 9:53 AM, Luruo, Kuthonuzo <kuthonuzo.lu...@hpe.com> wrote: >> I missed that Alexander already landed patches that reduce header size >> to 16 bytes. >> It is not OK to increase them again. Please leave state as bitfield >> and update it with CAS (if we introduce helper functions for state >> manipulation, they will hide the CAS loop, which is nice). >> > > Available CAS primitives/compiler do not support CAS with bitfield. I propose > to change kasan_alloc_meta to: > > struct kasan_alloc_meta { > struct kasan_track track; > u16 size_delta; /* object_size - alloc size */ > u8 state; /* enum kasan_state */ > u8 reserved1; > u32 reserved2; > } > > This shrinks _used_ meta object by 1 byte wrt the original. (btw, patch v1 > does > not increase overall alloc meta object size). "Alloc size", where needed, is > easily calculated as a delta from cache->object_size.
What is the maximum size that slab can allocate? I remember seeing slabs as large as 4MB some time ago (or did I confuse it with something else?). If there are such large objects, that 2 bytes won't be able to hold even delta. However, now on my desktop I don't see slabs larger than 16KB in /proc/slabinfo.