diff options
author | Alexey Dobriyan <adobriyan@gmail.com> | 2018-04-05 16:20:37 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-04-05 21:36:23 -0700 |
commit | f4957d5bd09165b165df851fbf8c658f7fcd9922 (patch) | |
tree | 021c72366564d4082e2885999640b79d174e5296 /mm/slub.c | |
parent | 361d575e5c7a39c73a8a9bdd504c1d1274f280aa (diff) | |
download | linux-f4957d5bd09165b165df851fbf8c658f7fcd9922.tar.gz linux-f4957d5bd09165b165df851fbf8c658f7fcd9922.tar.bz2 linux-f4957d5bd09165b165df851fbf8c658f7fcd9922.zip |
slab: make kmem_cache_create() work with 32-bit sizes
struct kmem_cache::size and ::align were always 32-bit.
Out of curiosity I created 4GB kmem_cache, it oopsed with division by 0.
kmem_cache_create(1UL<<32+1) created 1-byte cache as expected.
size_t doesn't work and never did.
Link: http://lkml.kernel.org/r/20180305200730.15812-6-adobriyan@gmail.com
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Cc: Christoph Lameter <cl@linux.com>
Cc: Pekka Enberg <penberg@kernel.org>
Cc: David Rientjes <rientjes@google.com>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/slub.c')
-rw-r--r-- | mm/slub.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/mm/slub.c b/mm/slub.c index d92218ed7f1c..495c785c8d7e 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -4242,7 +4242,7 @@ void __init kmem_cache_init_late(void) } struct kmem_cache * -__kmem_cache_alias(const char *name, size_t size, size_t align, +__kmem_cache_alias(const char *name, unsigned int size, unsigned int align, slab_flags_t flags, void (*ctor)(void *)) { struct kmem_cache *s, *c; |