On 2/22/23 11:00?AM, Breno Leitao wrote: > -static inline struct io_cache_entry *io_alloc_cache_get(struct io_alloc_cache *cache) > +static inline struct io_cache_entry *io_alloc_cache_get(struct io_alloc_cache *cache, > + size_t size) > { > if (cache->list.next) { > struct io_cache_entry *entry; > entry = container_of(cache->list.next, struct io_cache_entry, node); > + kasan_unpoison_range(entry, size); > cache->list.next = cache->list.next->next; > return entry; > } Does this generate the same code if KASAN isn't enabled? Since there's a 4-byte hole in struct io_alloc_cache(), might be cleaner to simply add the 'size' argument to io_alloc_cache_init() and store it in the cache. Then the above just becomes: kasan_unpoison_range(entry, cache->elem_size); instead and that'd definitely generate the same code as before if KASAN isn't enabled. -- Jens Axboe