From: Matthew Wilcox (Oracle) Date: Sat, 2 Oct 2021 01:25:44 +0000 (-0400) Subject: mm/slub: Convert free_consistency_checks() to take a struct slab X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=941890553bb0e9bf8c4c6cb8e1edb1a8a95e1526;p=users%2Fwilly%2Flinux.git mm/slub: Convert free_consistency_checks() to take a struct slab Provides a little more type safety, but mostly this is just pushing slab_page() calls down. Signed-off-by: Matthew Wilcox (Oracle) --- diff --git a/mm/slub.c b/mm/slub.c index 32a1bd4c8a889..a8ea2779edf4d 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -1308,32 +1308,32 @@ bad: } static inline int free_consistency_checks(struct kmem_cache *s, - struct page *page, void *object, unsigned long addr) + struct slab *slab, void *object, unsigned long addr) { - if (!check_valid_pointer(s, page, object)) { - slab_err(s, page, "Invalid object pointer 0x%p", object); + if (!check_valid_pointer(s, slab_page(slab), object)) { + slab_err(s, slab_page(slab), "Invalid object pointer 0x%p", object); return 0; } - if (on_freelist(s, page, object)) { - object_err(s, page, object, "Object already free"); + if (on_freelist(s, slab_page(slab), object)) { + object_err(s, slab_page(slab), object, "Object already free"); return 0; } - if (!check_object(s, page, object, SLUB_RED_ACTIVE)) + if (!check_object(s, slab_page(slab), object, SLUB_RED_ACTIVE)) return 0; - if (unlikely(s != page->slab_cache)) { - if (!PageSlab(page)) { - slab_err(s, page, "Attempt to free object(0x%p) outside of slab", + if (unlikely(s != slab->slab_cache)) { + if (!slab_test_cache(slab)) { + slab_err(s, slab_page(slab), "Attempt to free object(0x%p) outside of slab", object); - } else if (!page->slab_cache) { + } else if (!slab->slab_cache) { pr_err("SLUB : no slab for object 0x%p.\n", object); dump_stack(); } else - object_err(s, page, object, - "page slab pointer corrupt."); + object_err(s, slab_page(slab), object, + "slab pointer corrupt."); return 0; } return 1; @@ -1363,7 +1363,7 @@ next_object: cnt++; if (s->flags & SLAB_CONSISTENCY_CHECKS) { - if (!free_consistency_checks(s, slab_page(slab), object, addr)) + if (!free_consistency_checks(s, slab, object, addr)) goto out; }