Messages in this thread | | | Date | Tue, 16 Jan 2018 13:03:13 -0800 | From | Matthew Wilcox <> | Subject | Re: kmem_cache_attr (was Re: [PATCH 04/36] usercopy: Prepare for usercopy whitelisting) |
| |
On Tue, Jan 16, 2018 at 12:17:01PM -0600, Christopher Lameter wrote: > Draft patch of how the data structs could change. kmem_cache_attr is read > only.
Looks good. Although I would add Kees' user feature:
struct kmem_cache_attr { char name[16]; unsigned int size; unsigned int align; + unsigned int useroffset; + unsigned int usersize; slab_flags_t flags; kmem_cache_ctor ctor; }
And I'd start with +struct kmem_cache *kmem_cache_create_attr(const kmem_cache_attr *);
leaving the old kmem_cache_create to kmalloc a kmem_cache_attr and initialise it.
Can we also do something like this?
-#define KMEM_CACHE(__struct, __flags) kmem_cache_create(#__struct,\ - sizeof(struct __struct), __alignof__(struct __struct),\ - (__flags), NULL) +#define KMEM_CACHE(__struct, __flags) ({ \ + const struct kmem_cache_attr kca ## __stringify(__struct) = { \ + .name = #__struct, \ + .size = sizeof(struct __struct), \ + .align = __alignof__(struct __struct), \ + .flags = (__flags), \ + }; \ + kmem_cache_create_attr(&kca ## __stringify(__struct)); \ +})
That way we won't need to convert any of those users.
| |