]> www.infradead.org Git - users/jedix/linux-maple.git/commit
cifs: Improve SMB2+ stat() to work also without FILE_READ_ATTRIBUTES
authorPali Rohár <pali@kernel.org>
Sat, 5 Oct 2024 12:59:21 +0000 (14:59 +0200)
committerSteve French <stfrench@microsoft.com>
Tue, 1 Apr 2025 09:58:05 +0000 (04:58 -0500)
commitb07687edee99b9e53465fbd7f24406616f67070e
treebc93e7eca35090609d9ae349404b19c1f66f3f7a
parente255612b5ed9f179abe8196df7c2ba09dd227900
cifs: Improve SMB2+ stat() to work also without FILE_READ_ATTRIBUTES

If SMB2_OP_QUERY_INFO (called when POSIX extensions are not used) failed
with STATUS_ACCESS_DENIED then it means that caller does not have
permission to open the path with FILE_READ_ATTRIBUTES access and therefore
cannot issue SMB2_OP_QUERY_INFO command.

This will result in the -EACCES error from stat() sycall.

There is an alternative way how to query limited information about path but
still suitable for stat() syscall. SMB2 OPEN/CREATE operation returns in
its successful response subset of query information.

So try to open the path without FILE_READ_ATTRIBUTES but with
MAXIMUM_ALLOWED access which will grant the maximum possible access to the
file and the response will contain required query information for stat()
syscall.

This will improve smb2_query_path_info() to query also files which do not
grant FILE_READ_ATTRIBUTES access to caller.

Signed-off-by: Pali Rohár <pali@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/client/smb2file.c
fs/smb/client/smb2glob.h
fs/smb/client/smb2inode.c