diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/core/net_namespace.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c index 85b62691f4f2..7c6b51a58968 100644 --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c | |||
@@ -373,9 +373,11 @@ struct net *get_net_ns_by_pid(pid_t pid) | |||
373 | tsk = find_task_by_vpid(pid); | 373 | tsk = find_task_by_vpid(pid); |
374 | if (tsk) { | 374 | if (tsk) { |
375 | struct nsproxy *nsproxy; | 375 | struct nsproxy *nsproxy; |
376 | nsproxy = task_nsproxy(tsk); | 376 | task_lock(tsk); |
377 | nsproxy = tsk->nsproxy; | ||
377 | if (nsproxy) | 378 | if (nsproxy) |
378 | net = get_net(nsproxy->net_ns); | 379 | net = get_net(nsproxy->net_ns); |
380 | task_unlock(tsk); | ||
379 | } | 381 | } |
380 | rcu_read_unlock(); | 382 | rcu_read_unlock(); |
381 | return net; | 383 | return net; |
@@ -632,11 +634,11 @@ static void *netns_get(struct task_struct *task) | |||
632 | struct net *net = NULL; | 634 | struct net *net = NULL; |
633 | struct nsproxy *nsproxy; | 635 | struct nsproxy *nsproxy; |
634 | 636 | ||
635 | rcu_read_lock(); | 637 | task_lock(task); |
636 | nsproxy = task_nsproxy(task); | 638 | nsproxy = task->nsproxy; |
637 | if (nsproxy) | 639 | if (nsproxy) |
638 | net = get_net(nsproxy->net_ns); | 640 | net = get_net(nsproxy->net_ns); |
639 | rcu_read_unlock(); | 641 | task_unlock(task); |
640 | 642 | ||
641 | return net; | 643 | return net; |
642 | } | 644 | } |