All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hyeonggon Yoo <42.hyeyoo@gmail.com>
To: Vlastimil Babka <vbabka@suse.cz>
Cc: Matthew Wilcox <willy@infradead.org>,
	cl@linux.com, penberg@kernel.org, rientjes@google.com,
	iamjoonsoo.kim@lge.com, linux-mm@kvack.org,
	linux-kernel@vger.kernel.org, 42.hyeyoo@gmail.com
Subject: [PATCH v2] mm: kmalloc_index: make compiler break when size is not supported
Date: Tue, 11 May 2021 00:02:30 +0900	[thread overview]
Message-ID: <20210510150230.GA74915@hyeyoo> (raw)
In-Reply-To: <9d0ffe49-a2e2-6c81-377b-4c8d2147dff8@suse.cz>

[-- Attachment #1: Type: text/plain, Size: 50 bytes --]

updated patch. let me know if something is wrong!

[-- Attachment #2: 0001-mm-kmalloc_index-make-compiler-break-when-size-is-no.patch --]
[-- Type: text/x-diff, Size: 2526 bytes --]

From 8fe7ecdfb0f5bd5b08771512303d72f1c6447362 Mon Sep 17 00:00:00 2001
From: Hyeonggon Yoo <42.hyeyoo@gmail.com>
Date: Mon, 10 May 2021 23:57:34 +0900
Subject: [PATCH] mm: kmalloc_index: make compiler break when size is not
 supported

currently when size is not supported by kmalloc_index, compiler will not
break. so changed BUG to BUILD_BUG_ON_MSG to make compiler break if size is
wrong. this is done in compile time.

also removed code that allocates more than 32MB because current
implementation supports only up to 32MB.

Signed-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>
---
 include/linux/slab.h | 7 +++++--
 mm/slab_common.c     | 7 +++----
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/include/linux/slab.h b/include/linux/slab.h
index 0c97d788762c..fd0c7229d105 100644
--- a/include/linux/slab.h
+++ b/include/linux/slab.h
@@ -346,6 +346,9 @@ static __always_inline enum kmalloc_cache_type kmalloc_type(gfp_t flags)
  * 1 =  65 .. 96 bytes
  * 2 = 129 .. 192 bytes
  * n = 2^(n-1)+1 .. 2^n
+ *
+ * Note: you don't need to optimize kmalloc_index because it's evaluated
+ * in compile-time.
  */
 static __always_inline unsigned int kmalloc_index(size_t size)
 {
@@ -382,8 +385,8 @@ static __always_inline unsigned int kmalloc_index(size_t size)
 	if (size <=  8 * 1024 * 1024) return 23;
 	if (size <=  16 * 1024 * 1024) return 24;
 	if (size <=  32 * 1024 * 1024) return 25;
-	if (size <=  64 * 1024 * 1024) return 26;
-	BUG();
+
+	BUILD_BUG_ON_MSG(1, "unexpected size in kmalloc_index()");
 
 	/* Will never be reached. Needed because the compiler may complain */
 	return -1;
diff --git a/mm/slab_common.c b/mm/slab_common.c
index f8833d3e5d47..39d4eca8cf9b 100644
--- a/mm/slab_common.c
+++ b/mm/slab_common.c
@@ -745,8 +745,8 @@ struct kmem_cache *kmalloc_slab(size_t size, gfp_t flags)
 
 /*
  * kmalloc_info[] is to make slub_debug=,kmalloc-xx option work at boot time.
- * kmalloc_index() supports up to 2^26=64MB, so the final entry of the table is
- * kmalloc-67108864.
+ * kmalloc_index() supports up to 2^25=32MB, so the final entry of the table is
+ * kmalloc-33554432.
  */
 const struct kmalloc_info_struct kmalloc_info[] __initconst = {
 	INIT_KMALLOC_INFO(0, 0),
@@ -774,8 +774,7 @@ const struct kmalloc_info_struct kmalloc_info[] __initconst = {
 	INIT_KMALLOC_INFO(4194304, 4M),
 	INIT_KMALLOC_INFO(8388608, 8M),
 	INIT_KMALLOC_INFO(16777216, 16M),
-	INIT_KMALLOC_INFO(33554432, 32M),
-	INIT_KMALLOC_INFO(67108864, 64M)
+	INIT_KMALLOC_INFO(33554432, 32M)
 };
 
 /*
-- 
2.25.1


  reply	other threads:[~2021-05-10 15:24 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-08 22:13 [PATCH] mm: kmalloc_index: remove case when size is more than 32MB Hyeonggon Yoo
2021-05-08 23:19 ` Matthew Wilcox
2021-05-09  5:33   ` Hyeonggon Yoo
2021-05-09  5:33     ` Hyeonggon Yoo
2021-05-10 10:09     ` Vlastimil Babka
2021-05-10 13:58       ` Hyeonggon Yoo
2021-05-10 14:04         ` Vlastimil Babka
2021-05-10 15:02           ` Hyeonggon Yoo [this message]
2021-05-10 15:15             ` [PATCH v2] mm: kmalloc_index: make compiler break when size is not supported Christoph Lameter
2021-05-10 15:15               ` Christoph Lameter
2021-05-10 15:21               ` Vlastimil Babka
2021-05-11  3:09               ` Hyeonggon Yoo
2021-05-10 15:19             ` Vlastimil Babka
2021-05-10 15:38               ` Hyeonggon Yoo
2021-05-11  8:36                 ` Vlastimil Babka
2021-05-11  8:37                   ` Vlastimil Babka
2021-05-11  9:14                     ` Hyeonggon Yoo
2021-05-11  2:59               ` [PATCH v3] mm: change run-time assertion in kmalloc_index() to compile-time Hyeonggon Yoo
2021-05-10 15:44             ` [PATCH v2] mm: kmalloc_index: make compiler break when size is not supported Matthew Wilcox
2021-05-11  3:03               ` Hyeonggon Yoo
2021-05-11  8:33                 ` Vlastimil Babka

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210510150230.GA74915@hyeyoo \
    --to=42.hyeyoo@gmail.com \
    --cc=cl@linux.com \
    --cc=iamjoonsoo.kim@lge.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=penberg@kernel.org \
    --cc=rientjes@google.com \
    --cc=vbabka@suse.cz \
    --cc=willy@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.