diff options
| author | Alexey Dobriyan <[email protected]> | 2022-05-10 01:29:19 +0000 |
|---|---|---|
| committer | akpm <[email protected]> | 2022-05-10 01:29:19 +0000 |
| commit | 7055197705709c59b8ab77e6a5c7d46d61edd96e (patch) | |
| tree | 4040061d0b55c45fbd02389c9f354a0b6ced1864 /fs/proc/proc_net.c | |
| parent | fs: sysv: check sbi->s_firstdatazone in complete_read_super (diff) | |
| download | kernel-7055197705709c59b8ab77e6a5c7d46d61edd96e.tar.gz kernel-7055197705709c59b8ab77e6a5c7d46d61edd96e.zip | |
proc: fix dentry/inode overinstantiating under /proc/${pid}/net
When a process exits, /proc/${pid}, and /proc/${pid}/net dentries are
flushed. However some leaf dentries like /proc/${pid}/net/arp_cache
aren't. That's because respective PDEs have proc_misc_d_revalidate() hook
which returns 1 and leaves dentries/inodes in the LRU.
Force revalidation/lookup on everything under /proc/${pid}/net by
inheriting proc_net_dentry_ops.
[[email protected]: coding-style cleanups]
Link: https://lkml.kernel.org/r/[email protected]
Fixes: c6c75deda813 ("proc: fix lookup in /proc/net subdirectories after setns(2)")
Signed-off-by: Alexey Dobriyan <[email protected]>
Reported-by: hui li <[email protected]>
Cc: Al Viro <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Diffstat (limited to 'fs/proc/proc_net.c')
| -rw-r--r-- | fs/proc/proc_net.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/proc/proc_net.c b/fs/proc/proc_net.c index e1cfeda397f3..913e5acefbb6 100644 --- a/fs/proc/proc_net.c +++ b/fs/proc/proc_net.c @@ -376,6 +376,9 @@ static __net_init int proc_net_ns_init(struct net *net) proc_set_user(netd, uid, gid); + /* Seed dentry revalidation for /proc/${pid}/net */ + pde_force_lookup(netd); + err = -EEXIST; net_statd = proc_net_mkdir(net, "stat", netd); if (!net_statd) |
