From: Pavel Emelyanov These values represent the nesting level of a namespace and pids living in it, and it's always non-negative. Turning this from int to unsigned int saves some space in pid.c (11 bytes on x86 and 64 on ia64) by letting the compiler optimize the pid_nr_ns a bit. E.g. on ia64 this removes the sign extension calls, which compiler adds to optimize access to pid->nubers[ns->level]. Signed-off-by: Pavel Emelyanov Cc: "Eric W. Biederman" Signed-off-by: Andrew Morton --- include/linux/pid.h | 2 +- include/linux/pid_namespace.h | 2 +- kernel/pid_namespace.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff -puN include/linux/pid.h~pidns-make-pid-level-and-pid_ns-level-unsigned include/linux/pid.h --- a/include/linux/pid.h~pidns-make-pid-level-and-pid_ns-level-unsigned +++ a/include/linux/pid.h @@ -60,7 +60,7 @@ struct pid /* lists of tasks that use this pid */ struct hlist_head tasks[PIDTYPE_MAX]; struct rcu_head rcu; - int level; + unsigned int level; struct upid numbers[1]; }; diff -puN include/linux/pid_namespace.h~pidns-make-pid-level-and-pid_ns-level-unsigned include/linux/pid_namespace.h --- a/include/linux/pid_namespace.h~pidns-make-pid-level-and-pid_ns-level-unsigned +++ a/include/linux/pid_namespace.h @@ -20,7 +20,7 @@ struct pid_namespace { int last_pid; struct task_struct *child_reaper; struct kmem_cache *pid_cachep; - int level; + unsigned int level; struct pid_namespace *parent; #ifdef CONFIG_PROC_FS struct vfsmount *proc_mnt; diff -puN kernel/pid_namespace.c~pidns-make-pid-level-and-pid_ns-level-unsigned kernel/pid_namespace.c --- a/kernel/pid_namespace.c~pidns-make-pid-level-and-pid_ns-level-unsigned +++ a/kernel/pid_namespace.c @@ -66,7 +66,7 @@ err_alloc: return NULL; } -static struct pid_namespace *create_pid_namespace(int level) +static struct pid_namespace *create_pid_namespace(unsigned int level) { struct pid_namespace *ns; int i; _