]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blobdiff - mm/slub.c
sl[au]b: always get the cache from its page in kmem_cache_free()
[mirror_ubuntu-zesty-kernel.git] / mm / slub.c
index 985332b38852bf309d8e88f4b7562d5272ab9173..6d5f2305d7a452578f7d4acb68b999f7490c564b 100644 (file)
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -2611,19 +2611,10 @@ redo:
 
 void kmem_cache_free(struct kmem_cache *s, void *x)
 {
-       struct page *page;
-
-       page = virt_to_head_page(x);
-
-       if (kmem_cache_debug(s) && page->slab_cache != s) {
-               pr_err("kmem_cache_free: Wrong slab cache. %s but object"
-                       " is from  %s\n", page->slab_cache->name, s->name);
-               WARN_ON_ONCE(1);
+       s = cache_from_obj(s, x);
+       if (!s)
                return;
-       }
-
-       slab_free(s, page, x, _RET_IP_);
-
+       slab_free(s, virt_to_head_page(x), x, _RET_IP_);
        trace_kmem_cache_free(_RET_IP_, x);
 }
 EXPORT_SYMBOL(kmem_cache_free);