Skip to content

Commit

Permalink
slab: make usercopy region 32-bit
Browse files Browse the repository at this point in the history
If kmem case sizes are 32-bit, then usecopy region should be too.

Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Alexey Dobriyan <[email protected]>
Cc: David Miller <[email protected]>
Cc: Christoph Lameter <[email protected]>
Cc: Pekka Enberg <[email protected]>
Cc: David Rientjes <[email protected]>
Cc: Joonsoo Kim <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
Alexey Dobriyan authored and torvalds committed Apr 6, 2018
1 parent be4a798 commit 7bbdb81
Show file tree
Hide file tree
Showing 7 changed files with 14 additions and 13 deletions.
2 changes: 1 addition & 1 deletion include/linux/slab.h
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ struct kmem_cache *kmem_cache_create(const char *name, unsigned int size,
struct kmem_cache *kmem_cache_create_usercopy(const char *name,
unsigned int size, unsigned int align,
slab_flags_t flags,
size_t useroffset, size_t usersize,
unsigned int useroffset, unsigned int usersize,
void (*ctor)(void *));
void kmem_cache_destroy(struct kmem_cache *);
int kmem_cache_shrink(struct kmem_cache *);
Expand Down
4 changes: 2 additions & 2 deletions include/linux/slab_def.h
Original file line number Diff line number Diff line change
Expand Up @@ -85,8 +85,8 @@ struct kmem_cache {
unsigned int *random_seq;
#endif

size_t useroffset; /* Usercopy region offset */
size_t usersize; /* Usercopy region size */
unsigned int useroffset; /* Usercopy region offset */
unsigned int usersize; /* Usercopy region size */

struct kmem_cache_node *node[MAX_NUMNODES];
};
Expand Down
4 changes: 2 additions & 2 deletions include/linux/slub_def.h
Original file line number Diff line number Diff line change
Expand Up @@ -137,8 +137,8 @@ struct kmem_cache {
struct kasan_cache kasan_info;
#endif

size_t useroffset; /* Usercopy region offset */
size_t usersize; /* Usercopy region size */
unsigned int useroffset; /* Usercopy region offset */
unsigned int usersize; /* Usercopy region size */

struct kmem_cache_node *node[MAX_NUMNODES];
};
Expand Down
4 changes: 2 additions & 2 deletions include/net/sock.h
Original file line number Diff line number Diff line change
Expand Up @@ -1114,8 +1114,8 @@ struct proto {
struct kmem_cache *slab;
unsigned int obj_size;
slab_flags_t slab_flags;
size_t useroffset; /* Usercopy region offset */
size_t usersize; /* Usercopy region size */
unsigned int useroffset; /* Usercopy region offset */
unsigned int usersize; /* Usercopy region size */

struct percpu_counter *orphan_count;

Expand Down
4 changes: 2 additions & 2 deletions mm/slab.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ struct kmem_cache {
unsigned int size; /* The aligned/padded/added on size */
unsigned int align; /* Alignment as calculated */
slab_flags_t flags; /* Active flags on the slab */
size_t useroffset; /* Usercopy region offset */
size_t usersize; /* Usercopy region size */
unsigned int useroffset;/* Usercopy region offset */
unsigned int usersize; /* Usercopy region size */
const char *name; /* Slab name for sysfs */
int refcount; /* Use counter */
void (*ctor)(void *); /* Called on object slot creation */
Expand Down
7 changes: 4 additions & 3 deletions mm/slab_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -380,8 +380,8 @@ struct kmem_cache *find_mergeable(unsigned int size, unsigned int align,

static struct kmem_cache *create_cache(const char *name,
unsigned int object_size, unsigned int size, unsigned int align,
slab_flags_t flags, size_t useroffset,
size_t usersize, void (*ctor)(void *),
slab_flags_t flags, unsigned int useroffset,
unsigned int usersize, void (*ctor)(void *),
struct mem_cgroup *memcg, struct kmem_cache *root_cache)
{
struct kmem_cache *s;
Expand Down Expand Up @@ -454,7 +454,8 @@ static struct kmem_cache *create_cache(const char *name,
struct kmem_cache *
kmem_cache_create_usercopy(const char *name,
unsigned int size, unsigned int align,
slab_flags_t flags, size_t useroffset, size_t usersize,
slab_flags_t flags,
unsigned int useroffset, unsigned int usersize,
void (*ctor)(void *))
{
struct kmem_cache *s = NULL;
Expand Down
2 changes: 1 addition & 1 deletion mm/slub.c
Original file line number Diff line number Diff line change
Expand Up @@ -5081,7 +5081,7 @@ SLAB_ATTR_RO(cache_dma);

static ssize_t usersize_show(struct kmem_cache *s, char *buf)
{
return sprintf(buf, "%zu\n", s->usersize);
return sprintf(buf, "%u\n", s->usersize);
}
SLAB_ATTR_RO(usersize);

Expand Down

0 comments on commit 7bbdb81

Please sign in to comment.