mirror of
https://git.yoctoproject.org/meta-ti
synced 2026-07-27 06:18:13 +00:00
bb34e69f3d
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net> Signed-off-by: Denys Dmytriyenko <denys@ti.com>
50 lines
1.8 KiB
Diff
50 lines
1.8 KiB
Diff
From 0b21a3eba2629ca8e573e5b0cd7d1627d17c7cf6 Mon Sep 17 00:00:00 2001
|
|
From: Pravin B Shelar <pshelar@nicira.com>
|
|
Date: Fri, 23 Mar 2012 15:02:55 -0700
|
|
Subject: [PATCH 098/147] proc-ns: use d_set_d_op() API to set dentry ops in
|
|
proc_ns_instantiate().
|
|
|
|
commit 1b26c9b334044cff6d1d2698f2be41bc7d9a0864 upstream.
|
|
|
|
The namespace cleanup path leaks a dentry which holds a reference count
|
|
on a network namespace. Keeping that network namespace from being freed
|
|
when the last user goes away. Leaving things like vlan devices in the
|
|
leaked network namespace.
|
|
|
|
If you use ip netns add for much real work this problem becomes apparent
|
|
pretty quickly. It light testing the problem hides because frequently
|
|
you simply don't notice the leak.
|
|
|
|
Use d_set_d_op() so that DCACHE_OP_* flags are set correctly.
|
|
|
|
This issue exists back to 3.0.
|
|
|
|
Acked-by: "Eric W. Biederman" <ebiederm@xmission.com>
|
|
Reported-by: Justin Pettit <jpettit@nicira.com>
|
|
Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
|
|
Signed-off-by: Jesse Gross <jesse@nicira.com>
|
|
Cc: David Miller <davem@davemloft.net>
|
|
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
|
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
---
|
|
fs/proc/namespaces.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/fs/proc/namespaces.c b/fs/proc/namespaces.c
|
|
index be177f7..d6c078e 100644
|
|
--- a/fs/proc/namespaces.c
|
|
+++ b/fs/proc/namespaces.c
|
|
@@ -54,7 +54,7 @@ static struct dentry *proc_ns_instantiate(struct inode *dir,
|
|
ei->ns_ops = ns_ops;
|
|
ei->ns = ns;
|
|
|
|
- dentry->d_op = &pid_dentry_operations;
|
|
+ d_set_d_op(dentry, &pid_dentry_operations);
|
|
d_add(dentry, inode);
|
|
/* Close the race of the process dying before we return the dentry */
|
|
if (pid_revalidate(dentry, NULL))
|
|
--
|
|
1.7.9.4
|
|
|