kernfs: dont take i_lock on inode attr read
authorIan Kent <raven@themaw.net>
Tue, 18 Oct 2022 02:32:42 +0000 (10:32 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 20 Oct 2022 11:54:26 +0000 (13:54 +0200)
commitaa1d058d48f292aa138e33ad12b7b4d18b5407cd
treeb217058e2baa1422788a68bf13a628d41110bde3
parent5033ac5c580cb22245a0c2b9e53d508e8fdd50d8
kernfs: dont take i_lock on inode attr read

The kernfs write lock is held when the kernfs node inode attributes
are updated. Therefore, when either kernfs_iop_getattr() or
kernfs_iop_permission() are called the kernfs node inode attributes
won't change.

Consequently concurrent kernfs_refresh_inode() calls always copy the
same values from the kernfs node.

So there's no need to take the inode i_lock to get consistent values
for generic_fillattr() and generic_permission(), the kernfs read lock
is sufficient.

Cc: Tejun Heo <tj@kernel.org>
Signed-off-by: Ian Kent <raven@themaw.net>
Link: https://lore.kernel.org/r/166606036215.13363.1288735296954908554.stgit@donald.themaw.net
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/kernfs/inode.c