On Thu, Feb 20, 2020 at 10:54:20PM +0000, Al Viro wrote: > On Thu, Feb 20, 2020 at 02:49:53PM -0600, Eric W. Biederman wrote: > > > > The function d_prune_aliases has the problem that it will only prune > > aliases thare are completely unused. It will not remove aliases for > > the dcache or even think of removing mounts from the dcache. For that > > behavior d_invalidate is needed. > > > > To use d_invalidate replace d_prune_aliases with d_find_alias > > followed by d_invalidate and dput. This is safe and complete > > because no inode in proc has any hardlinks or aliases. > > s/no inode.*/it's a fucking directory inode./ Wait... You are using it for sysctls as well? Ho-hum... The thing is, for sysctls you are likely to run into consequent entries with the same superblock, making for a big pile of useless playing with ->s_active... And yes, that applied to mainline as well