]> www.infradead.org Git - users/willy/linux.git/commitdiff
mm/slub: Convert free_consistency_checks() to take a struct slab
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Sat, 2 Oct 2021 01:25:44 +0000 (21:25 -0400)
committerMatthew Wilcox (Oracle) <willy@infradead.org>
Mon, 4 Oct 2021 13:18:00 +0000 (09:18 -0400)
Provides a little more type safety, but mostly this is just pushing
slab_page() calls down.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
mm/slub.c

index 32a1bd4c8a8898e4ba38111e3b95db926d3ac8eb..a8ea2779edf4d948207a23a0780c1c991496dbb2 100644 (file)
--- 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 <none>: 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;
        }