]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
apparmor: replace get_zeroed_page() with kzalloc()
authorMike Rapoport (Microsoft) <rppt@kernel.org>
Wed, 20 May 2026 08:18:57 +0000 (11:18 +0300)
committerJohn Johansen <john.johansen@canonical.com>
Sun, 14 Jun 2026 03:20:13 +0000 (20:20 -0700)
multi_transaction_new() allocates memory with get_zeroed_page() and uses
it as struct multi_transaction.

The usage of that structure does not require struct page access and it is
better to allocate multi_transaction objects with kzalloc() that provides
better scalability and more debugging possibilities.

Replace use of get_zeroed_page() with kzalloc().

Link: https://lore.kernel.org/all/635405e4-9423-4a25-a6e7-e03c8ea0bcbe@redhat.com
Reviewed-by: Paul Moore <paul@paul-moore.com>
Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
Signed-off-by: John Johansen <john.johansen@canonical.com>
security/apparmor/apparmorfs.c

index 94b8c79792310801505a7ec667c21681053bbfc9..56155d7d5b2fc8c0300f01e887dcca22b98e69af 100644 (file)
@@ -9,6 +9,7 @@
  */
 
 #include <linux/ctype.h>
+#include <linux/slab.h>
 #include <linux/security.h>
 #include <linux/vmalloc.h>
 #include <linux/init.h>
@@ -906,7 +907,7 @@ static void multi_transaction_kref(struct kref *kref)
        struct multi_transaction *t;
 
        t = container_of(kref, struct multi_transaction, count);
-       free_page((unsigned long) t);
+       kfree(t);
 }
 
 static struct multi_transaction *
@@ -949,7 +950,7 @@ static struct multi_transaction *multi_transaction_new(struct file *file,
        if (size > MULTI_TRANSACTION_LIMIT - 1)
                return ERR_PTR(-EFBIG);
 
-       t = (struct multi_transaction *)get_zeroed_page(GFP_KERNEL);
+       t = kzalloc(PAGE_SIZE, GFP_KERNEL);
        if (!t)
                return ERR_PTR(-ENOMEM);
        kref_init(&t->count);