diff --git a/[refs] b/[refs] index 73ee6c0c3280..0f9d27fc6627 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2d51013ed2f2b6a5d2369b7fbbd989df1f6369e2 +refs/heads/master: 701e054e0c2db82359f0454c7ed4fd24346d52eb diff --git a/trunk/fs/proc/base.c b/trunk/fs/proc/base.c index 8df27401d292..795319c54f72 100644 --- a/trunk/fs/proc/base.c +++ b/trunk/fs/proc/base.c @@ -442,7 +442,8 @@ static int mountstats_open(struct inode *inode, struct file *file) if (task) { task_lock(task); - namespace = task->nsproxy->namespace; + if (task->nsproxy) + namespace = task->nsproxy->namespace; if (namespace) get_namespace(namespace); task_unlock(task); diff --git a/trunk/include/linux/nsproxy.h b/trunk/include/linux/nsproxy.h index f6baecdeecd6..971d1c6dfc4b 100644 --- a/trunk/include/linux/nsproxy.h +++ b/trunk/include/linux/nsproxy.h @@ -45,8 +45,10 @@ static inline void exit_task_namespaces(struct task_struct *p) { struct nsproxy *ns = p->nsproxy; if (ns) { - put_nsproxy(ns); + task_lock(p); p->nsproxy = NULL; + task_unlock(p); + put_nsproxy(ns); } } #endif