All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexey Dobriyan <adobriyan@gmail.com>
To: akpm@linux-foundation.org
Cc: cl@linux.com, penberg@kernel.org, rientjes@google.com,
	iamjoonsoo.kim@lge.com, linux-mm@kvack.org, adobriyan@gmail.com
Subject: [PATCH 20/25] kasan: make kasan_cache_create() work with 32-bit slab cache sizes
Date: Mon,  5 Mar 2018 23:07:25 +0300	[thread overview]
Message-ID: <20180305200730.15812-20-adobriyan@gmail.com> (raw)
In-Reply-To: <20180305200730.15812-1-adobriyan@gmail.com>

If SLAB doesn't support 4GB+ kmem caches (it never did), KASAN should not
do it as well.

Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
---
 include/linux/kasan.h |  4 ++--
 mm/kasan/kasan.c      | 12 ++++++------
 mm/slab.c             |  2 +-
 mm/slub.c             |  2 +-
 4 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/include/linux/kasan.h b/include/linux/kasan.h
index adc13474a53b..024d4219b953 100644
--- a/include/linux/kasan.h
+++ b/include/linux/kasan.h
@@ -43,7 +43,7 @@ void kasan_unpoison_stack_above_sp_to(const void *watermark);
 void kasan_alloc_pages(struct page *page, unsigned int order);
 void kasan_free_pages(struct page *page, unsigned int order);
 
-void kasan_cache_create(struct kmem_cache *cache, size_t *size,
+void kasan_cache_create(struct kmem_cache *cache, unsigned int *size,
 			slab_flags_t *flags);
 void kasan_cache_shrink(struct kmem_cache *cache);
 void kasan_cache_shutdown(struct kmem_cache *cache);
@@ -92,7 +92,7 @@ static inline void kasan_alloc_pages(struct page *page, unsigned int order) {}
 static inline void kasan_free_pages(struct page *page, unsigned int order) {}
 
 static inline void kasan_cache_create(struct kmem_cache *cache,
-				      size_t *size,
+				      unsigned int *size,
 				      slab_flags_t *flags) {}
 static inline void kasan_cache_shrink(struct kmem_cache *cache) {}
 static inline void kasan_cache_shutdown(struct kmem_cache *cache) {}
diff --git a/mm/kasan/kasan.c b/mm/kasan/kasan.c
index e13d911251e7..f7a5e1d1ba87 100644
--- a/mm/kasan/kasan.c
+++ b/mm/kasan/kasan.c
@@ -323,9 +323,9 @@ void kasan_free_pages(struct page *page, unsigned int order)
  * Adaptive redzone policy taken from the userspace AddressSanitizer runtime.
  * For larger allocations larger redzones are used.
  */
-static size_t optimal_redzone(size_t object_size)
+static unsigned int optimal_redzone(unsigned int object_size)
 {
-	int rz =
+	return
 		object_size <= 64        - 16   ? 16 :
 		object_size <= 128       - 32   ? 32 :
 		object_size <= 512       - 64   ? 64 :
@@ -333,14 +333,13 @@ static size_t optimal_redzone(size_t object_size)
 		object_size <= (1 << 14) - 256  ? 256 :
 		object_size <= (1 << 15) - 512  ? 512 :
 		object_size <= (1 << 16) - 1024 ? 1024 : 2048;
-	return rz;
 }
 
-void kasan_cache_create(struct kmem_cache *cache, size_t *size,
+void kasan_cache_create(struct kmem_cache *cache, unsigned int *size,
 			slab_flags_t *flags)
 {
+	unsigned int orig_size = *size;
 	int redzone_adjust;
-	int orig_size = *size;
 
 	/* Add alloc meta. */
 	cache->kasan_info.alloc_meta_offset = *size;
@@ -358,7 +357,8 @@ void kasan_cache_create(struct kmem_cache *cache, size_t *size,
 	if (redzone_adjust > 0)
 		*size += redzone_adjust;
 
-	*size = min(KMALLOC_MAX_SIZE, max(*size, cache->object_size +
+	*size = min_t(unsigned int, KMALLOC_MAX_SIZE,
+			max(*size, cache->object_size +
 					optimal_redzone(cache->object_size)));
 
 	/*
diff --git a/mm/slab.c b/mm/slab.c
index 7d17206dd574..5988f9a1cca8 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -1993,7 +1993,7 @@ int __kmem_cache_create(struct kmem_cache *cachep, slab_flags_t flags)
 	size_t ralign = BYTES_PER_WORD;
 	gfp_t gfp;
 	int err;
-	size_t size = cachep->size;
+	unsigned int size = cachep->size;
 
 #if DEBUG
 #if FORCED_DEBUG
diff --git a/mm/slub.c b/mm/slub.c
index e82a6b50b3ef..87a7a947f2c9 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -3457,7 +3457,7 @@ static void set_cpu_partial(struct kmem_cache *s)
 static int calculate_sizes(struct kmem_cache *s, int forced_order)
 {
 	slab_flags_t flags = s->flags;
-	size_t size = s->object_size;
+	unsigned int size = s->object_size;
 	int order;
 
 	/*
-- 
2.16.1

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  parent reply	other threads:[~2018-03-05 20:08 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-05 20:07 [PATCH 01/25] slab: fixup calculate_alignment() argument type Alexey Dobriyan
2018-03-05 20:07 ` [PATCH 02/25] slab: make kmalloc_index() return "unsigned int" Alexey Dobriyan
2018-03-06 18:24   ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 03/25] slab: make kmalloc_size() " Alexey Dobriyan
2018-03-06 18:24   ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 04/25] slab: make create_kmalloc_cache() work with 32-bit sizes Alexey Dobriyan
2018-03-06 18:32   ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 05/25] slab: make create_boot_cache() " Alexey Dobriyan
2018-03-06 18:34   ` Christopher Lameter
2018-03-06 19:14     ` Matthew Wilcox
2018-03-05 20:07 ` [PATCH 06/25] slab: make kmem_cache_create() " Alexey Dobriyan
2018-03-06 18:37   ` Christopher Lameter
2018-04-05 21:48     ` Andrew Morton
2018-04-06  8:40       ` Alexey Dobriyan
2018-04-07 15:13         ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 07/25] slab: make size_index[] array u8 Alexey Dobriyan
2018-03-06 18:38   ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 08/25] slab: make size_index_elem() unsigned int Alexey Dobriyan
2018-03-06 18:39   ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 09/25] slub: make ->remote_node_defrag_ratio " Alexey Dobriyan
2018-03-06 18:41   ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 10/25] slub: make ->max_attr_size " Alexey Dobriyan
2018-03-06 18:42   ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 11/25] slub: make ->red_left_pad " Alexey Dobriyan
2018-03-06 18:42   ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 12/25] slub: make ->reserved " Alexey Dobriyan
2018-03-06 18:43   ` Christopher Lameter
2018-03-09 15:51     ` Alexey Dobriyan
2018-03-06 18:45   ` Matthew Wilcox
2018-03-09 22:42     ` Alexey Dobriyan
2018-03-05 20:07 ` [PATCH 13/25] slub: make ->align " Alexey Dobriyan
2018-03-06 18:43   ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 14/25] slub: make ->inuse " Alexey Dobriyan
2018-03-06 18:44   ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 15/25] slub: make ->cpu_partial " Alexey Dobriyan
2018-03-06 18:44   ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 16/25] slub: make ->offset " Alexey Dobriyan
2018-03-06 18:45   ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 17/25] slub: make ->object_size " Alexey Dobriyan
2018-03-06 18:45   ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 18/25] slub: make ->size " Alexey Dobriyan
2018-03-06 18:46   ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 19/25] slab: make kmem_cache_flags accept 32-bit object size Alexey Dobriyan
2018-03-06 18:47   ` Christopher Lameter
2018-03-05 20:07 ` Alexey Dobriyan [this message]
2018-03-05 20:07 ` [PATCH 21/25] slab: make usercopy region 32-bit Alexey Dobriyan
2018-03-05 20:07 ` [PATCH 22/25] slub: make slab_index() return unsigned int Alexey Dobriyan
2018-03-06 18:48   ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 23/25] slub: make struct kmem_cache_order_objects::x " Alexey Dobriyan
2018-03-06 18:51   ` Christopher Lameter
2018-04-05 21:51     ` Andrew Morton
2018-04-06 18:02       ` Alexey Dobriyan
2018-04-07 15:18         ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 24/25] slub: make size_from_object() return " Alexey Dobriyan
2018-03-06 18:52   ` Christopher Lameter
2018-03-05 20:07 ` [PATCH 25/25] slab: use 32-bit arithmetic in freelist_randomize() Alexey Dobriyan
2018-03-06 18:52   ` Christopher Lameter
2018-03-06 18:21 ` [PATCH 01/25] slab: fixup calculate_alignment() argument type Christopher Lameter
2018-04-10 20:25 ` Matthew Wilcox
2018-04-10 20:47   ` Alexey Dobriyan
2018-04-10 21:02     ` Matthew Wilcox

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=20180305200730.15812-20-adobriyan@gmail.com \
    --to=adobriyan@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=cl@linux.com \
    --cc=iamjoonsoo.kim@lge.com \
    --cc=linux-mm@kvack.org \
    --cc=penberg@kernel.org \
    --cc=rientjes@google.com \
    /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.