From: Pravin B Shelar <[email protected]> Subject: proc-ns: use d_set_d_op() API to set dentry ops in proc_ns_instantiate().
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" <[email protected]> Reported-by: Justin Pettit <[email protected]> Signed-off-by: Pravin B Shelar <[email protected]> Signed-off-by: Jesse Gross <[email protected]> Cc: David Miller <[email protected]> Cc: <[email protected]> Signed-off-by: Andrew Morton <[email protected]> --- fs/proc/namespaces.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff -puN fs/proc/namespaces.c~proc-ns-use-d_set_d_op-api-to-set-dentry-ops-in-proc_ns_instantiate fs/proc/namespaces.c --- a/fs/proc/namespaces.c~proc-ns-use-d_set_d_op-api-to-set-dentry-ops-in-proc_ns_instantiate +++ a/fs/proc/namespaces.c @@ -53,7 +53,7 @@ static struct dentry *proc_ns_instantiat 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)) _ -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
