KVM: MIPS: Enable after disabling interrupt
[firefly-linux-kernel-4.4.55.git] / mm / slab_common.c
index 1a1cc89acaa3c86fcbfd3a98a31e888390cf27e1..999bb3424d44df71eb9b92d3ae6da75287a391d4 100644 (file)
@@ -295,8 +295,8 @@ unsigned long calculate_alignment(unsigned long flags,
 }
 
 static struct kmem_cache *
-do_kmem_cache_create(char *name, size_t object_size, size_t size, size_t align,
-                    unsigned long flags, void (*ctor)(void *),
+do_kmem_cache_create(const char *name, size_t object_size, size_t size,
+                    size_t align, unsigned long flags, void (*ctor)(void *),
                     struct mem_cgroup *memcg, struct kmem_cache *root_cache)
 {
        struct kmem_cache *s;
@@ -363,7 +363,7 @@ kmem_cache_create(const char *name, size_t size, size_t align,
                  unsigned long flags, void (*ctor)(void *))
 {
        struct kmem_cache *s;
-       char *cache_name;
+       const char *cache_name;
        int err;
 
        get_online_cpus();
@@ -390,7 +390,7 @@ kmem_cache_create(const char *name, size_t size, size_t align,
        if (s)
                goto out_unlock;
 
-       cache_name = kstrdup(name, GFP_KERNEL);
+       cache_name = kstrdup_const(name, GFP_KERNEL);
        if (!cache_name) {
                err = -ENOMEM;
                goto out_unlock;
@@ -401,7 +401,7 @@ kmem_cache_create(const char *name, size_t size, size_t align,
                                 flags, ctor, NULL, NULL);
        if (IS_ERR(s)) {
                err = PTR_ERR(s);
-               kfree(cache_name);
+               kfree_const(cache_name);
        }
 
 out_unlock:
@@ -607,7 +607,7 @@ void memcg_destroy_kmem_caches(struct mem_cgroup *memcg)
 void slab_kmem_cache_release(struct kmem_cache *s)
 {
        destroy_memcg_params(s);
-       kfree(s->name);
+       kfree_const(s->name);
        kmem_cache_free(kmem_cache, s);
 }
 
@@ -898,6 +898,7 @@ void *kmalloc_order(size_t size, gfp_t flags, unsigned int order)
        page = alloc_kmem_pages(flags, order);
        ret = page ? page_address(page) : NULL;
        kmemleak_alloc(ret, size, 1, flags);
+       kasan_kmalloc_large(ret, size);
        return ret;
 }
 EXPORT_SYMBOL(kmalloc_order);
@@ -1077,8 +1078,10 @@ static __always_inline void *__do_krealloc(const void *p, size_t new_size,
        if (p)
                ks = ksize(p);
 
-       if (ks >= new_size)
+       if (ks >= new_size) {
+               kasan_krealloc((void *)p, new_size);
                return (void *)p;
+       }
 
        ret = kmalloc_track_caller(new_size, flags);
        if (ret && p)