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:
quoted
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