Messages in this thread Patch in this message | | | From | Parav Pandit <> | Subject | [PATCH RESEND] nsproxy: Reuse already available put_nsproxy helper function. | Date | Fri, 27 Jan 2017 13:39:08 -0600 |
| |
This patch makes use of already available put_nsproxy() helper function which already perform atomic check and conditional free. It also remove braces in put_nsproxy() for single line conditional statement. Minor fixes for trailing white space, 80 characters etc warnings reported by checkpatch.pl.
Resending it to include Eric Biederman to merge the changes.
Signed-off-by: Parav Pandit <parav@mellanox.com> --- include/linux/nsproxy.h | 10 +++++----- kernel/nsproxy.c | 12 +++++++----- 2 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/include/linux/nsproxy.h b/include/linux/nsproxy.h index ac0d65b..24556f4 100644 --- a/include/linux/nsproxy.h +++ b/include/linux/nsproxy.h @@ -33,7 +33,7 @@ struct nsproxy { struct ipc_namespace *ipc_ns; struct mnt_namespace *mnt_ns; struct pid_namespace *pid_ns_for_children; - struct net *net_ns; + struct net *net_ns; struct cgroup_namespace *cgroup_ns; }; extern struct nsproxy init_nsproxy; @@ -68,15 +68,15 @@ struct nsproxy { void exit_task_namespaces(struct task_struct *tsk); void switch_task_namespaces(struct task_struct *tsk, struct nsproxy *new); void free_nsproxy(struct nsproxy *ns); -int unshare_nsproxy_namespaces(unsigned long, struct nsproxy **, - struct cred *, struct fs_struct *); +int unshare_nsproxy_namespaces(unsigned long unshare_flags, + struct nsproxy **new_nsp, struct cred *new_cred, + struct fs_struct *new_fs); int __init nsproxy_cache_init(void); static inline void put_nsproxy(struct nsproxy *ns) { - if (atomic_dec_and_test(&ns->count)) { + if (atomic_dec_and_test(&ns->count)) free_nsproxy(ns); - } } static inline void get_nsproxy(struct nsproxy *ns) diff --git a/kernel/nsproxy.c b/kernel/nsproxy.c index 782102e..f253655 100644 --- a/kernel/nsproxy.c +++ b/kernel/nsproxy.c @@ -71,7 +71,8 @@ static struct nsproxy *create_new_namespaces(unsigned long flags, if (!new_nsp) return ERR_PTR(-ENOMEM); - new_nsp->mnt_ns = copy_mnt_ns(flags, tsk->nsproxy->mnt_ns, user_ns, new_fs); + new_nsp->mnt_ns = copy_mnt_ns(flags, tsk->nsproxy->mnt_ns, user_ns, + new_fs); if (IS_ERR(new_nsp->mnt_ns)) { err = PTR_ERR(new_nsp->mnt_ns); goto out_ns; @@ -158,7 +159,7 @@ int copy_namespaces(unsigned long flags, struct task_struct *tsk) * it along with CLONE_NEWIPC. */ if ((flags & (CLONE_NEWIPC | CLONE_SYSVSEM)) == - (CLONE_NEWIPC | CLONE_SYSVSEM)) + (CLONE_NEWIPC | CLONE_SYSVSEM)) return -EINVAL; new_ns = create_new_namespaces(flags, tsk, user_ns, tsk->fs); @@ -189,7 +190,8 @@ void free_nsproxy(struct nsproxy *ns) * On success, returns the new nsproxy. */ int unshare_nsproxy_namespaces(unsigned long unshare_flags, - struct nsproxy **new_nsp, struct cred *new_cred, struct fs_struct *new_fs) + struct nsproxy **new_nsp, struct cred *new_cred, + struct fs_struct *new_fs) { struct user_namespace *user_ns; int err = 0; @@ -224,8 +226,8 @@ void switch_task_namespaces(struct task_struct *p, struct nsproxy *new) p->nsproxy = new; task_unlock(p); - if (ns && atomic_dec_and_test(&ns->count)) - free_nsproxy(ns); + if (ns) + put_nsproxy(ns); } void exit_task_namespaces(struct task_struct *p) -- 1.8.3.1
| |