ovl: do not encode lower fh with upper sb_writers held

[ Upstream commit 5b02bfc1e7 ]

When lower fs is a nested overlayfs, calling encode_fh() on a lower
directory dentry may trigger copy up and take sb_writers on the upper fs
of the lower nested overlayfs.

The lower nested overlayfs may have the same upper fs as this overlayfs,
so nested sb_writers lock is illegal.

Move all the callers that encode lower fh to before ovl_want_write().

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Stable-dep-of: c45beebfde ("ovl: support encoding fid from inode with no alias")
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Amir Goldstein 2023-08-16 16:47:59 +03:00 • committed by Greg Kroah-Hartman
commit 26423e18cd
5 changed files with 104 additions and 42 deletions