OSDN Git Service

tomoyo: replace tomoyo_round2() with kmalloc_size_roundup() tomoyo-pr-20230424
authorVlastimil Babka <vbabka@suse.cz>
Tue, 28 Feb 2023 09:35:56 +0000 (10:35 +0100)
committerTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Wed, 1 Mar 2023 14:46:12 +0000 (23:46 +0900)
It seems tomoyo has had its own implementation of what
kmalloc_size_roundup() does today. Remove the function tomoyo_round2()
and replace it with kmalloc_size_roundup(). It provides more accurate
results and doesn't contain a while loop.

Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
security/tomoyo/audit.c
security/tomoyo/common.c
security/tomoyo/common.h

index 7cf8fdb..610c153 100644 (file)
@@ -271,7 +271,7 @@ char *tomoyo_init_log(struct tomoyo_request_info *r, int len, const char *fmt,
                /* +18 is for " symlink.target=\"%s\"" */
                len += 18 + strlen(symlink);
        }
-       len = tomoyo_round2(len);
+       len = kmalloc_size_roundup(len);
        buf = kzalloc(len, GFP_NOFS);
        if (!buf)
                goto out;
@@ -382,12 +382,12 @@ void tomoyo_write_log2(struct tomoyo_request_info *r, int len, const char *fmt,
                goto out;
        }
        entry->log = buf;
-       len = tomoyo_round2(strlen(buf) + 1);
+       len = kmalloc_size_roundup(strlen(buf) + 1);
        /*
         * The entry->size is used for memory quota checks.
         * Don't go beyond strlen(entry->log).
         */
-       entry->size = len + tomoyo_round2(sizeof(*entry));
+       entry->size = len + kmalloc_size_roundup(sizeof(*entry));
        spin_lock(&tomoyo_log_lock);
        if (tomoyo_memory_quota[TOMOYO_MEMORY_AUDIT] &&
            tomoyo_memory_used[TOMOYO_MEMORY_AUDIT] + entry->size >=
index f4cd9b5..969d4aa 100644 (file)
@@ -2094,7 +2094,7 @@ int tomoyo_supervisor(struct tomoyo_request_info *r, const char *fmt, ...)
                tomoyo_add_entry(r->domain, entry.query);
                goto out;
        }
-       len = tomoyo_round2(entry.query_len);
+       len = kmalloc_size_roundup(entry.query_len);
        entry.domain = r->domain;
        spin_lock(&tomoyo_query_list_lock);
        if (tomoyo_memory_quota[TOMOYO_MEMORY_QUERY] &&
index ca285f3..a539b2c 100644 (file)
@@ -1276,50 +1276,6 @@ static inline struct tomoyo_policy_namespace *tomoyo_current_namespace(void)
        return tomoyo_domain()->ns;
 }
 
-#if defined(CONFIG_SLOB)
-
-/**
- * tomoyo_round2 - Round up to power of 2 for calculating memory usage.
- *
- * @size: Size to be rounded up.
- *
- * Returns @size.
- *
- * Since SLOB does not round up, this function simply returns @size.
- */
-static inline int tomoyo_round2(size_t size)
-{
-       return size;
-}
-
-#else
-
-/**
- * tomoyo_round2 - Round up to power of 2 for calculating memory usage.
- *
- * @size: Size to be rounded up.
- *
- * Returns rounded size.
- *
- * Strictly speaking, SLAB may be able to allocate (e.g.) 96 bytes instead of
- * (e.g.) 128 bytes.
- */
-static inline int tomoyo_round2(size_t size)
-{
-#if PAGE_SIZE == 4096
-       size_t bsize = 32;
-#else
-       size_t bsize = 64;
-#endif
-       if (!size)
-               return 0;
-       while (size > bsize)
-               bsize <<= 1;
-       return bsize;
-}
-
-#endif
-
 /**
  * list_for_each_cookie - iterate over a list with cookie.
  * @pos:        the &struct list_head to use as a loop cursor.