@@ -254,7 +254,7 @@ bool __kasan_slab_free(struct kmem_cache *cache, void *object,
254
254
return ____kasan_slab_free (cache , object , ip , true, init );
255
255
}
256
256
257
- static inline bool ____kasan_kfree_large (void * ptr , unsigned long ip )
257
+ static inline bool check_page_allocation (void * ptr , unsigned long ip )
258
258
{
259
259
if (!kasan_arch_is_ready ())
260
260
return false;
@@ -269,17 +269,14 @@ static inline bool ____kasan_kfree_large(void *ptr, unsigned long ip)
269
269
return true;
270
270
}
271
271
272
- /*
273
- * The object will be poisoned by kasan_poison_pages() or
274
- * kasan_mempool_poison_object().
275
- */
276
-
277
272
return false;
278
273
}
279
274
280
275
void __kasan_kfree_large (void * ptr , unsigned long ip )
281
276
{
282
- ____kasan_kfree_large (ptr , ip );
277
+ check_page_allocation (ptr , ip );
278
+
279
+ /* The object will be poisoned by kasan_poison_pages(). */
283
280
}
284
281
285
282
void * __must_check __kasan_slab_alloc (struct kmem_cache * cache ,
@@ -429,7 +426,7 @@ void * __must_check __kasan_krealloc(const void *object, size_t size, gfp_t flag
429
426
return ____kasan_kmalloc (slab -> slab_cache , object , size , flags );
430
427
}
431
428
432
- void __kasan_mempool_poison_object (void * ptr , unsigned long ip )
429
+ bool __kasan_mempool_poison_object (void * ptr , unsigned long ip )
433
430
{
434
431
struct folio * folio ;
435
432
@@ -442,13 +439,15 @@ void __kasan_mempool_poison_object(void *ptr, unsigned long ip)
442
439
* KMALLOC_MAX_SIZE, and kmalloc falls back onto page_alloc.
443
440
*/
444
441
if (unlikely (!folio_test_slab (folio ))) {
445
- if (____kasan_kfree_large (ptr , ip ))
446
- return ;
442
+ if (check_page_allocation (ptr , ip ))
443
+ return false ;
447
444
kasan_poison (ptr , folio_size (folio ), KASAN_PAGE_FREE , false);
445
+ return true;
448
446
} else {
449
447
struct slab * slab = folio_slab (folio );
450
448
451
- ____kasan_slab_free (slab -> slab_cache , ptr , ip , false, false);
449
+ return !____kasan_slab_free (slab -> slab_cache , ptr , ip ,
450
+ false, false);
452
451
}
453
452
}
454
453
0 commit comments