Re: [PATCH] proc_sysctl: Fix up ->is_seen() handling

From: Al Viro
Date: Thu Jun 12 2025 - 21:54:35 EST


On Fri, Jun 13, 2025 at 10:37:58AM +1000, NeilBrown wrote:
>
> Some sysctl tables can provide an is_seen() function which reports if
> the sysctl should be visible to the current process. This is currently
> used to cause d_compare to fail for invisible sysctls.
>
> This technique might have worked in 2.6.26 when it was implemented, but
> it cannot work now. In particular if ->d_compare always fails for a
> particular name, then d_alloc_parallel() will always create a new dentry
> and pass it to lookup() resulting in a new inode for every lookup. I
> tested this by changing sysctl_is_seen() to always return 0. When
> all sysctls were still visible and repeated lookups (ls -li) reported
> different inode numbers.

What do you mean, "name"?