mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
pid: use struct_size_t() helper
Before commitd67790ddf0
("overflow: Add struct_size_t() helper") only struct_size() existed, which expects a valid pointer instance containing the flexible array. However, when we determine the default struct pid allocation size for the associated kmem cache of a pid namespace we need to take the nesting depth of the pid namespace into account without an variable instance necessarily being available. In commitb69f0aeb06
("pid: Replace struct pid 1-element array with flex-array") we used to handle this the old fashioned way and cast NULL to a struct pid pointer type. However, we do apparently have a dedicated struct_size_t() helper for exactly this case. So switch to that. Suggested-by: Kees Cook <keescook@chromium.org> Suggested-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Christian Brauner <brauner@kernel.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
408579cd62
commit
dd546618ba
@ -657,7 +657,7 @@ void __init pid_idr_init(void)
|
||||
idr_init(&init_pid_ns.idr);
|
||||
|
||||
init_pid_ns.pid_cachep = kmem_cache_create("pid",
|
||||
struct_size((struct pid *)NULL, numbers, 1),
|
||||
struct_size_t(struct pid, numbers, 1),
|
||||
__alignof__(struct pid),
|
||||
SLAB_HWCACHE_ALIGN | SLAB_PANIC | SLAB_ACCOUNT,
|
||||
NULL);
|
||||
|
@ -48,7 +48,7 @@ static struct kmem_cache *create_pid_cachep(unsigned int level)
|
||||
return kc;
|
||||
|
||||
snprintf(name, sizeof(name), "pid_%u", level + 1);
|
||||
len = struct_size((struct pid *)NULL, numbers, level + 1);
|
||||
len = struct_size_t(struct pid, numbers, level + 1);
|
||||
mutex_lock(&pid_caches_mutex);
|
||||
/* Name collision forces to do allocation under mutex. */
|
||||
if (!*pkc)
|
||||
|
Loading…
Reference in New Issue
Block a user