mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00

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>
50 lines
1.2 KiB
C
50 lines
1.2 KiB
C
/* SPDX-License-Identifier: LGPL-2.1 */
|
|
/*
|
|
*
|
|
* Definitions for various global variables and structures
|
|
*
|
|
* Copyright (C) International Business Machines Corp., 2002, 2011
|
|
* Etersoft, 2012
|
|
* Author(s): Steve French (sfrench@us.ibm.com)
|
|
* Jeremy Allison (jra@samba.org)
|
|
* Pavel Shilovsky (pshilovsky@samba.org) 2012
|
|
*
|
|
*/
|
|
#ifndef _SMB2_GLOB_H
|
|
#define _SMB2_GLOB_H
|
|
|
|
/*
|
|
*****************************************************************
|
|
* Constants go here
|
|
*****************************************************************
|
|
*/
|
|
|
|
/*
|
|
* Identifiers for functions that use the open, operation, close pattern
|
|
* in smb2inode.c:smb2_compound_op()
|
|
*/
|
|
enum smb2_compound_ops {
|
|
SMB2_OP_SET_DELETE = 1,
|
|
SMB2_OP_SET_INFO,
|
|
SMB2_OP_QUERY_INFO,
|
|
SMB2_OP_QUERY_DIR,
|
|
SMB2_OP_MKDIR,
|
|
SMB2_OP_RENAME,
|
|
SMB2_OP_DELETE,
|
|
SMB2_OP_HARDLINK,
|
|
SMB2_OP_SET_EOF,
|
|
SMB2_OP_RMDIR,
|
|
SMB2_OP_POSIX_QUERY_INFO,
|
|
SMB2_OP_SET_REPARSE,
|
|
SMB2_OP_GET_REPARSE,
|
|
SMB2_OP_QUERY_WSL_EA,
|
|
SMB2_OP_OPEN_QUERY,
|
|
};
|
|
|
|
/* Used when constructing chained read requests. */
|
|
#define CHAINED_REQUEST 1
|
|
#define START_OF_CHAIN 2
|
|
#define END_OF_CHAIN 4
|
|
#define RELATED_REQUEST 8
|
|
|
|
#endif /* _SMB2_GLOB_H */
|