mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/
synced 2026-04-03 23:37:40 -04:00
pid: reorder fields in pid_namespace to reduce false sharing
alloc_pid() loads pid_cachep, level and pid_max prior to taking the lock. It dirties idr and pid_allocated with the lock. Some of these fields share the cacheline as is, split them up. No change in the size of the struct. Signed-off-by: Mateusz Guzik <mjguzik@gmail.com> Link: https://patch.msgid.link/20260120204820.1497002-1-mjguzik@gmail.com Reviewed-by: Jan Kara <jack@suse.cz> Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
committed by
Christian Brauner
parent
8021824904
commit
03aef0602f
@@ -27,6 +27,13 @@ struct pid_namespace {
|
||||
struct idr idr;
|
||||
struct rcu_head rcu;
|
||||
unsigned int pid_allocated;
|
||||
#ifdef CONFIG_SYSCTL
|
||||
#if defined(CONFIG_MEMFD_CREATE)
|
||||
int memfd_noexec_scope;
|
||||
#endif
|
||||
struct ctl_table_set set;
|
||||
struct ctl_table_header *sysctls;
|
||||
#endif
|
||||
struct task_struct *child_reaper;
|
||||
struct kmem_cache *pid_cachep;
|
||||
unsigned int level;
|
||||
@@ -40,13 +47,6 @@ struct pid_namespace {
|
||||
int reboot; /* group exit code if this pidns was rebooted */
|
||||
struct ns_common ns;
|
||||
struct work_struct work;
|
||||
#ifdef CONFIG_SYSCTL
|
||||
struct ctl_table_set set;
|
||||
struct ctl_table_header *sysctls;
|
||||
#if defined(CONFIG_MEMFD_CREATE)
|
||||
int memfd_noexec_scope;
|
||||
#endif
|
||||
#endif
|
||||
} __randomize_layout;
|
||||
|
||||
extern struct pid_namespace init_pid_ns;
|
||||
|
||||
Reference in New Issue
Block a user