Unverified Commit 5402c4d4 authored by Amir Goldstein's avatar Amir Goldstein Committed by Christian Brauner
Browse files

exportfs: require ->fh_to_parent() to encode connectable file handles



When user requests a connectable file handle explicitly with the
AT_HANDLE_CONNECTABLE flag, fail the request if filesystem (e.g. nfs)
does not know how to decode a connected non-dir dentry.

Fixes: c374196b ("fs: name_to_handle_at() support for "explicit connectable" file handles")
Signed-off-by: default avatarAmir Goldstein <amir73il@gmail.com>
Link: https://lore.kernel.org/20250525104731.1461704-1-amir73il@gmail.com


Reviewed-by: default avatarJan Kara <jack@suse.cz>
Signed-off-by: default avatarChristian Brauner <brauner@kernel.org>
parent 21fae34a
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -314,6 +314,9 @@ static inline bool exportfs_can_decode_fh(const struct export_operations *nop)
static inline bool exportfs_can_encode_fh(const struct export_operations *nop,
					  int fh_flags)
{
	if (!nop)
		return false;

	/*
	 * If a non-decodeable file handle was requested, we only need to make
	 * sure that filesystem did not opt-out of encoding fid.
@@ -321,6 +324,13 @@ static inline bool exportfs_can_encode_fh(const struct export_operations *nop,
	if (fh_flags & EXPORT_FH_FID)
		return exportfs_can_encode_fid(nop);

	/*
	 * If a connectable file handle was requested, we need to make sure that
	 * filesystem can also decode connected file handles.
	 */
	if ((fh_flags & EXPORT_FH_CONNECTABLE) && !nop->fh_to_parent)
		return false;

	/*
	 * If a decodeable file handle was requested, we need to make sure that
	 * filesystem can also decode file handles.