]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
smb: move some duplicate definitions to common/smb2pdu.h
authorZhangGuoDong <zhangguodong@kylinos.cn>
Sun, 2 Nov 2025 07:30:52 +0000 (15:30 +0800)
committerSteve French <stfrench@microsoft.com>
Mon, 1 Dec 2025 03:11:45 +0000 (21:11 -0600)
In order to maintain the code more easily, move duplicate definitions to
common header file.

There are only 4 different definitions, the client uses cpu_to_le16()
but the server does not:

  - RSS_CAPABLE
  - RDMA_CAPABLE
  - INTERNETWORK
  - INTERNETWORKV6

The other definitions are exactly the same on both client and server.

The struct smb_hdr is defined in MS-CIFS and MS-SMB, but it's also used by
SMB2 and SMB3, so move it to the common smb2pdu.h.

Co-developed-by: ChenXiaoSong <chenxiaosong@kylinos.cn>
Signed-off-by: ChenXiaoSong <chenxiaosong@kylinos.cn>
Signed-off-by: ZhangGuoDong <zhangguodong@kylinos.cn>
Acked-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/client/cifspdu.h
fs/smb/client/smb2pdu.h
fs/smb/common/smb2pdu.h
fs/smb/server/smb2pdu.c
fs/smb/server/smb2pdu.h
fs/smb/server/smb_common.h

index 2fb1eb2fff41862bfc411832275c9676eafa3702..99cdba9f68dceeae1c4639279c86884e403ebcae 100644 (file)
@@ -12,6 +12,7 @@
 #include <net/sock.h>
 #include <linux/unaligned.h>
 #include "../common/smbfsctl.h"
+#include "../common/smb2pdu.h"
 
 #define CIFS_PROT   0
 #define POSIX_PROT  (CIFS_PROT+1)
 #define SMBFLG2_ERR_STATUS cpu_to_le16(0x4000)
 #define SMBFLG2_UNICODE cpu_to_le16(0x8000)
 
-/*
- * These are the file access permission bits defined in CIFS for the
- * NTCreateAndX as well as the level 0x107
- * TRANS2_QUERY_PATH_INFORMATION API.  The level 0x107, SMB_QUERY_FILE_ALL_INFO
- * responds with the AccessFlags.
- * The AccessFlags specifies the access permissions a caller has to the
- * file and can have any suitable combination of the following values:
- */
-
-#define FILE_READ_DATA        0x00000001  /* Data can be read from the file   */
-                                         /* or directory child entries can   */
-                                         /* be listed together with the      */
-                                         /* associated child attributes      */
-                                         /* (so the FILE_READ_ATTRIBUTES on  */
-                                         /* the child entry is not needed)   */
-#define FILE_WRITE_DATA       0x00000002  /* Data can be written to the file  */
-                                         /* or new file can be created in    */
-                                         /* the directory                    */
-#define FILE_APPEND_DATA      0x00000004  /* Data can be appended to the file */
-                                         /* (for non-local files over SMB it */
-                                         /* is same as FILE_WRITE_DATA)      */
-                                         /* or new subdirectory can be       */
-                                         /* created in the directory         */
-#define FILE_READ_EA          0x00000008  /* Extended attributes associated   */
-                                         /* with the file can be read        */
-#define FILE_WRITE_EA         0x00000010  /* Extended attributes associated   */
-                                         /* with the file can be written     */
-#define FILE_EXECUTE          0x00000020  /*Data can be read into memory from */
-                                         /* the file using system paging I/O */
-                                         /* for executing the file / script  */
-                                         /* or right to traverse directory   */
-                                         /* (but by default all users have   */
-                                         /* directory bypass traverse        */
-                                         /* privilege and do not need this   */
-                                         /* permission on directories at all)*/
-#define FILE_DELETE_CHILD     0x00000040  /* Child entry can be deleted from  */
-                                         /* the directory (so the DELETE on  */
-                                         /* the child entry is not needed)   */
-#define FILE_READ_ATTRIBUTES  0x00000080  /* Attributes associated with the   */
-                                         /* file or directory can be read    */
-#define FILE_WRITE_ATTRIBUTES 0x00000100  /* Attributes associated with the   */
-                                         /* file or directory can be written */
-#define DELETE                0x00010000  /* The file or dir can be deleted   */
-#define READ_CONTROL          0x00020000  /* The discretionary access control */
-                                         /* list and ownership associated    */
-                                         /* with the file or dir can be read */
-#define WRITE_DAC             0x00040000  /* The discretionary access control */
-                                         /* list associated with the file or */
-                                         /* directory can be written         */
-#define WRITE_OWNER           0x00080000  /* Ownership information associated */
-                                         /* with the file/dir can be written */
-#define SYNCHRONIZE           0x00100000  /* The file handle can waited on to */
-                                         /* synchronize with the completion  */
-                                         /* of an input/output request       */
-#define SYSTEM_SECURITY       0x01000000  /* The system access control list   */
-                                         /* associated with the file or      */
-                                         /* directory can be read or written */
-                                         /* (cannot be in DACL, can in SACL) */
-#define MAXIMUM_ALLOWED       0x02000000  /* Maximal subset of GENERIC_ALL    */
-                                         /* permissions which can be granted */
-                                         /* (cannot be in DACL nor SACL)     */
-#define GENERIC_ALL           0x10000000  /* Same as: GENERIC_EXECUTE |       */
-                                         /*          GENERIC_WRITE |         */
-                                         /*          GENERIC_READ |          */
-                                         /*          FILE_DELETE_CHILD |     */
-                                         /*          DELETE |                */
-                                         /*          WRITE_DAC |             */
-                                         /*          WRITE_OWNER             */
-                                         /* So GENERIC_ALL contains all bits */
-                                         /* mentioned above except these two */
-                                         /* SYSTEM_SECURITY  MAXIMUM_ALLOWED */
-#define GENERIC_EXECUTE       0x20000000  /* Same as: FILE_EXECUTE |          */
-                                         /*          FILE_READ_ATTRIBUTES |  */
-                                         /*          READ_CONTROL |          */
-                                         /*          SYNCHRONIZE             */
-#define GENERIC_WRITE         0x40000000  /* Same as: FILE_WRITE_DATA |       */
-                                         /*          FILE_APPEND_DATA |      */
-                                         /*          FILE_WRITE_EA |         */
-                                         /*          FILE_WRITE_ATTRIBUTES | */
-                                         /*          READ_CONTROL |          */
-                                         /*          SYNCHRONIZE             */
-#define GENERIC_READ          0x80000000  /* Same as: FILE_READ_DATA |        */
-                                         /*          FILE_READ_EA |          */
-                                         /*          FILE_READ_ATTRIBUTES |  */
-                                         /*          READ_CONTROL |          */
-                                         /*          SYNCHRONIZE             */
-
-#define FILE_READ_RIGHTS (FILE_READ_DATA | FILE_READ_EA | FILE_READ_ATTRIBUTES)
-#define FILE_WRITE_RIGHTS (FILE_WRITE_DATA | FILE_APPEND_DATA \
-                               | FILE_WRITE_EA | FILE_WRITE_ATTRIBUTES)
-#define FILE_EXEC_RIGHTS (FILE_EXECUTE)
-
+/* Combinations of file access permission bits */
 #define SET_FILE_READ_RIGHTS (FILE_READ_DATA | FILE_READ_EA | FILE_WRITE_EA \
                                | FILE_READ_ATTRIBUTES \
                                | FILE_WRITE_ATTRIBUTES \
                                | FILE_WRITE_ATTRIBUTES \
                                | DELETE | READ_CONTROL | WRITE_DAC \
                                | WRITE_OWNER | SYNCHRONIZE)
-#define SET_FILE_EXEC_RIGHTS (FILE_READ_EA | FILE_WRITE_EA | FILE_EXECUTE \
-                               | FILE_READ_ATTRIBUTES \
-                               | FILE_WRITE_ATTRIBUTES \
-                               | DELETE | READ_CONTROL | WRITE_DAC \
-                               | WRITE_OWNER | SYNCHRONIZE)
-
-#define SET_MINIMUM_RIGHTS (FILE_READ_EA | FILE_READ_ATTRIBUTES \
-                               | READ_CONTROL | SYNCHRONIZE)
-
 
 /*
  * Invalid readdir handle
 #define GETU16(var)  (*((__u16 *)var)) /* BB check for endian issues */
 #define GETU32(var)  (*((__u32 *)var)) /* BB check for endian issues */
 
-struct smb_hdr {
-       __be32 smb_buf_length;  /* BB length is only two (rarely three) bytes,
-               with one or two byte "type" preceding it that will be
-               zero - we could mask the type byte off */
-       __u8 Protocol[4];
-       __u8 Command;
-       union {
-               struct {
-                       __u8 ErrorClass;
-                       __u8 Reserved;
-                       __le16 Error;
-               } __attribute__((packed)) DosError;
-               __le32 CifsError;
-       } __attribute__((packed)) Status;
-       __u8 Flags;
-       __le16 Flags2;          /* note: le */
-       __le16 PidHigh;
-       union {
-               struct {
-                       __le32 SequenceNumber;  /* le */
-                       __u32 Reserved; /* zero */
-               } __attribute__((packed)) Sequence;
-               __u8 SecuritySignature[8];      /* le */
-       } __attribute__((packed)) Signature;
-       __u8 pad[2];
-       __u16 Tid;
-       __le16 Pid;
-       __u16 Uid;
-       __le16 Mid;
-       __u8 WordCount;
-} __attribute__((packed));
-
 /* given a pointer to an smb_hdr, retrieve a void pointer to the ByteCount */
 static inline void *
 BCC(struct smb_hdr *smb)
index 32da7a4773e16092541e9cbdfa19d100fbcb3147..98ed7a22cd57a751e981af35b209230138908fc5 100644 (file)
@@ -133,11 +133,6 @@ struct share_redirect_error_context_rsp {
 #define SMB2_LEASE_HANDLE_CACHING_HE   0x02
 #define SMB2_LEASE_WRITE_CACHING_HE    0x04
 
-
-/* See MS-SMB2 2.2.13.2.11 */
-/* Flags */
-#define SMB2_DHANDLE_FLAG_PERSISTENT   0x00000002
-
 /* See MS-SMB2 2.2.13.2.5 */
 struct crt_twarp_ctxt {
        struct create_context_hdr ccontext;
@@ -198,22 +193,6 @@ struct network_resiliency_req {
 } __packed;
 /* There is no buffer for the response ie no struct network_resiliency_rsp */
 
-#define RSS_CAPABLE    cpu_to_le32(0x00000001)
-#define RDMA_CAPABLE   cpu_to_le32(0x00000002)
-
-#define INTERNETWORK   cpu_to_le16(0x0002)
-#define INTERNETWORKV6 cpu_to_le16(0x0017)
-
-struct network_interface_info_ioctl_rsp {
-       __le32 Next; /* next interface. zero if this is last one */
-       __le32 IfIndex;
-       __le32 Capability; /* RSS or RDMA Capable */
-       __le32 Reserved;
-       __le64 LinkSpeed;
-       __le16 Family;
-       __u8 Buffer[126];
-} __packed;
-
 #define NO_FILE_ID 0xFFFFFFFFFFFFFFFFULL /* general ioctls to srv not to file */
 
 struct compress_ioctl {
index 4ea515732b3802d051e5dc511cbfd950c4c038b9..be1e652bb474128e763c744cfd55bd558dc4c88b 100644 (file)
@@ -1149,12 +1149,6 @@ struct smb2_server_client_notification {
 #define FILE_OVERWRITE_IF_LE           cpu_to_le32(0x00000005)
 #define FILE_CREATE_MASK_LE             cpu_to_le32(0x00000007)
 
-#define FILE_READ_RIGHTS (FILE_READ_DATA | FILE_READ_EA \
-                       | FILE_READ_ATTRIBUTES)
-#define FILE_WRITE_RIGHTS (FILE_WRITE_DATA | FILE_APPEND_DATA \
-                       | FILE_WRITE_EA | FILE_WRITE_ATTRIBUTES)
-#define FILE_EXEC_RIGHTS (FILE_EXECUTE)
-
 /* CreateOptions Flags */
 #define FILE_DIRECTORY_FILE_LE         cpu_to_le32(0x00000001)
 /* same as #define CREATE_NOT_FILE_LE  cpu_to_le32(0x00000001) */
@@ -1290,6 +1284,14 @@ struct create_mxac_req {
        __le64 Timestamp;
 } __packed;
 
+/*
+ * Flags
+ * See MS-SMB2 2.2.13.2.11
+ *     MS-SMB2 2.2.13.2.12
+ *     MS-SMB2 2.2.14.2.12
+ */
+#define SMB2_DHANDLE_FLAG_PERSISTENT   0x00000002
+
 /* See MS-SMB2 2.2.13.2.11 */
 struct durable_context_v2_req {
        __le32 Timeout;
@@ -1500,6 +1502,26 @@ struct smb_sockaddr_in6 {
        __be32 ScopeId;
 } __packed;
 
+/* See MS-SMB2 2.2.32.5 and MS-SMB2 2.2.32.5.1 */
+#define RSS_CAPABLE    cpu_to_le32(0x00000001)
+#define RDMA_CAPABLE   cpu_to_le32(0x00000002)
+#define INTERNETWORK   cpu_to_le16(0x0002)
+#define INTERNETWORKV6 cpu_to_le16(0x0017)
+struct network_interface_info_ioctl_rsp {
+       __le32 Next; /* next interface. zero if this is last one */
+       __le32 IfIndex;
+       __le32 Capability; /* RSS or RDMA Capable */
+       __le32 Reserved;
+       __le64 LinkSpeed;
+       union {
+               char    SockAddr_Storage[128];
+               struct {
+                       __le16 Family;
+                       __u8 Buffer[126];
+               };
+       };
+} __packed;
+
 /* this goes in the ioctl buffer when doing FSCTL_SET_ZERO_DATA */
 struct file_zero_data_information {
        __le64  FileOffset;
@@ -1989,6 +2011,144 @@ struct smb2_lease_ack {
        __le64 LeaseDuration;
 } __packed;
 
+/*
+ * See MS-CIFS 2.2.3.1
+ *     MS-SMB 2.2.3.1
+ */
+struct smb_hdr {
+       __be32 smb_buf_length;  /* BB length is only two (rarely three) bytes,
+               with one or two byte "type" preceding it that will be
+               zero - we could mask the type byte off */
+       __u8 Protocol[4];
+       __u8 Command;
+       union {
+               struct {
+                       __u8 ErrorClass;
+                       __u8 Reserved;
+                       __le16 Error;
+               } __packed DosError;
+               __le32 CifsError;
+       } __packed Status;
+       __u8 Flags;
+       __le16 Flags2;          /* note: le */
+       __le16 PidHigh;
+       union {
+               struct {
+                       __le32 SequenceNumber;  /* le */
+                       __u32 Reserved; /* zero */
+               } __packed Sequence;
+               __u8 SecuritySignature[8];      /* le */
+       } __packed Signature;
+       __u8 pad[2];
+       __u16 Tid;
+       __le16 Pid;
+       __u16 Uid;
+       __le16 Mid;
+       __u8 WordCount;
+} __packed;
+
 #define OP_BREAK_STRUCT_SIZE_20                24
 #define OP_BREAK_STRUCT_SIZE_21                36
+
+/*
+ * See MS-SMB2 2.2.13.1.1
+ *     MS-SMB 2.2.1.4.1
+ * These are the file access permission bits defined in CIFS for the
+ * NTCreateAndX as well as the level 0x107
+ * TRANS2_QUERY_PATH_INFORMATION API.  The level 0x107, SMB_QUERY_FILE_ALL_INFO
+ * responds with the AccessFlags.
+ * The AccessFlags specifies the access permissions a caller has to the
+ * file and can have any suitable combination of the following values:
+ */
+#define FILE_READ_DATA        0x00000001  /* Data can be read from the file   */
+                                         /* or directory child entries can   */
+                                         /* be listed together with the      */
+                                         /* associated child attributes      */
+                                         /* (so the FILE_READ_ATTRIBUTES on  */
+                                         /* the child entry is not needed)   */
+#define FILE_WRITE_DATA       0x00000002  /* Data can be written to the file  */
+                                         /* or new file can be created in    */
+                                         /* the directory                    */
+#define FILE_APPEND_DATA      0x00000004  /* Data can be appended to the file */
+                                         /* (for non-local files over SMB it */
+                                         /* is same as FILE_WRITE_DATA)      */
+                                         /* or new subdirectory can be       */
+                                         /* created in the directory         */
+#define FILE_READ_EA          0x00000008  /* Extended attributes associated   */
+                                         /* with the file can be read        */
+#define FILE_WRITE_EA         0x00000010  /* Extended attributes associated   */
+                                         /* with the file can be written     */
+#define FILE_EXECUTE          0x00000020  /*Data can be read into memory from */
+                                         /* the file using system paging I/O */
+                                         /* for executing the file / script  */
+                                         /* or right to traverse directory   */
+                                         /* (but by default all users have   */
+                                         /* directory bypass traverse        */
+                                         /* privilege and do not need this   */
+                                         /* permission on directories at all)*/
+#define FILE_DELETE_CHILD     0x00000040  /* Child entry can be deleted from  */
+                                         /* the directory (so the DELETE on  */
+                                         /* the child entry is not needed)   */
+#define FILE_READ_ATTRIBUTES  0x00000080  /* Attributes associated with the   */
+                                         /* file or directory can be read    */
+#define FILE_WRITE_ATTRIBUTES 0x00000100  /* Attributes associated with the   */
+                                         /* file or directory can be written */
+#define DELETE                0x00010000  /* The file or dir can be deleted   */
+#define READ_CONTROL          0x00020000  /* The discretionary access control */
+                                         /* list and ownership associated    */
+                                         /* with the file or dir can be read */
+#define WRITE_DAC             0x00040000  /* The discretionary access control */
+                                         /* list associated with the file or */
+                                         /* directory can be written         */
+#define WRITE_OWNER           0x00080000  /* Ownership information associated */
+                                         /* with the file/dir can be written */
+#define SYNCHRONIZE           0x00100000  /* The file handle can waited on to */
+                                         /* synchronize with the completion  */
+                                         /* of an input/output request       */
+#define SYSTEM_SECURITY       0x01000000  /* The system access control list   */
+                                         /* associated with the file or      */
+                                         /* directory can be read or written */
+                                         /* (cannot be in DACL, can in SACL) */
+#define MAXIMUM_ALLOWED       0x02000000  /* Maximal subset of GENERIC_ALL    */
+                                         /* permissions which can be granted */
+                                         /* (cannot be in DACL nor SACL)     */
+#define GENERIC_ALL           0x10000000  /* Same as: GENERIC_EXECUTE |       */
+                                         /*          GENERIC_WRITE |         */
+                                         /*          GENERIC_READ |          */
+                                         /*          FILE_DELETE_CHILD |     */
+                                         /*          DELETE |                */
+                                         /*          WRITE_DAC |             */
+                                         /*          WRITE_OWNER             */
+                                         /* So GENERIC_ALL contains all bits */
+                                         /* mentioned above except these two */
+                                         /* SYSTEM_SECURITY  MAXIMUM_ALLOWED */
+#define GENERIC_EXECUTE       0x20000000  /* Same as: FILE_EXECUTE |          */
+                                         /*          FILE_READ_ATTRIBUTES |  */
+                                         /*          READ_CONTROL |          */
+                                         /*          SYNCHRONIZE             */
+#define GENERIC_WRITE         0x40000000  /* Same as: FILE_WRITE_DATA |       */
+                                         /*          FILE_APPEND_DATA |      */
+                                         /*          FILE_WRITE_EA |         */
+                                         /*          FILE_WRITE_ATTRIBUTES | */
+                                         /*          READ_CONTROL |          */
+                                         /*          SYNCHRONIZE             */
+#define GENERIC_READ          0x80000000  /* Same as: FILE_READ_DATA |        */
+                                         /*          FILE_READ_EA |          */
+                                         /*          FILE_READ_ATTRIBUTES |  */
+                                         /*          READ_CONTROL |          */
+                                         /*          SYNCHRONIZE             */
+
+/* Combinations of file access permission bits */
+#define FILE_READ_RIGHTS (FILE_READ_DATA | FILE_READ_EA | FILE_READ_ATTRIBUTES)
+#define FILE_WRITE_RIGHTS (FILE_WRITE_DATA | FILE_APPEND_DATA \
+                       | FILE_WRITE_EA | FILE_WRITE_ATTRIBUTES)
+#define FILE_EXEC_RIGHTS (FILE_EXECUTE)
+#define SET_FILE_EXEC_RIGHTS (FILE_READ_EA | FILE_WRITE_EA | FILE_EXECUTE \
+                               | FILE_READ_ATTRIBUTES \
+                               | FILE_WRITE_ATTRIBUTES \
+                               | DELETE | READ_CONTROL | WRITE_DAC \
+                               | WRITE_OWNER | SYNCHRONIZE)
+#define SET_MINIMUM_RIGHTS (FILE_READ_EA | FILE_READ_ATTRIBUTES \
+                               | READ_CONTROL | SYNCHRONIZE)
+
 #endif                         /* _COMMON_SMB2PDU_H */
index 77438830e2de7e30ba9e476f4544eee6a6b2e428..1f0ed9fb1e836bf70e373e75ac62099251e5adf3 100644 (file)
@@ -7866,9 +7866,9 @@ ipv6_retry:
 
                nii_rsp->Capability = 0;
                if (netdev->real_num_tx_queues > 1)
-                       nii_rsp->Capability |= cpu_to_le32(RSS_CAPABLE);
+                       nii_rsp->Capability |= RSS_CAPABLE;
                if (ksmbd_rdma_capable_netdev(netdev))
-                       nii_rsp->Capability |= cpu_to_le32(RDMA_CAPABLE);
+                       nii_rsp->Capability |= RDMA_CAPABLE;
 
                nii_rsp->Next = cpu_to_le32(152);
                nii_rsp->Reserved = 0;
@@ -7894,7 +7894,7 @@ ipv6_retry:
                if (!ipv4_set) {
                        struct in_device *idev;
 
-                       sockaddr_storage->Family = cpu_to_le16(INTERNETWORK);
+                       sockaddr_storage->Family = INTERNETWORK;
                        sockaddr_storage->addr4.Port = 0;
 
                        idev = __in_dev_get_rtnl(netdev);
@@ -7910,7 +7910,7 @@ ipv6_retry:
                        struct inet6_ifaddr *ifa;
                        __u8 *ipv6_addr = sockaddr_storage->addr6.IPv6Address;
 
-                       sockaddr_storage->Family = cpu_to_le16(INTERNETWORKV6);
+                       sockaddr_storage->Family = INTERNETWORKV6;
                        sockaddr_storage->addr6.Port = 0;
                        sockaddr_storage->addr6.FlowInfo = 0;
 
index 46e14bd4f2da83d895dd27f4ef37fd3f42d167a3..d10374e440931f85d5241562503194f6607889a3 100644 (file)
@@ -95,10 +95,6 @@ struct create_durable_rsp {
        } Data;
 } __packed;
 
-/* See MS-SMB2 2.2.13.2.11 */
-/* Flags */
-#define SMB2_DHANDLE_FLAG_PERSISTENT   0x00000002
-
 /* equivalent of the contents of SMB3.1.1 POSIX open context response */
 struct create_posix_rsp {
        struct create_context_hdr ccontext;
@@ -112,9 +108,6 @@ struct create_posix_rsp {
 
 #define SMB2_0_IOCTL_IS_FSCTL 0x00000001
 
-#define INTERNETWORK   0x0002
-#define INTERNETWORKV6 0x0017
-
 struct sockaddr_storage_rsp {
        __le16 Family;
        union {
@@ -123,18 +116,6 @@ struct sockaddr_storage_rsp {
        };
 } __packed;
 
-#define RSS_CAPABLE    0x00000001
-#define RDMA_CAPABLE   0x00000002
-
-struct network_interface_info_ioctl_rsp {
-       __le32 Next; /* next interface. zero if this is last one */
-       __le32 IfIndex;
-       __le32 Capability; /* RSS or RDMA Capable */
-       __le32 Reserved;
-       __le64 LinkSpeed;
-       char    SockAddr_Storage[128];
-} __packed;
-
 struct file_object_buf_type1_ioctl_rsp {
        __u8 ObjectId[16];
        __u8 BirthVolumeId[16];
index 2669e68dba3ad5355bc41037b4a8f3063a25747d..6be079d78022e8732838600aca6c8decc807cd3c 100644 (file)
 #define FILE_CASE_PRESERVED_NAMES      0x00000002
 #define FILE_CASE_SENSITIVE_SEARCH     0x00000001
 
-#define FILE_READ_DATA        0x00000001  /* Data can be read from the file   */
-#define FILE_WRITE_DATA       0x00000002  /* Data can be written to the file  */
-#define FILE_APPEND_DATA      0x00000004  /* Data can be appended to the file */
-#define FILE_READ_EA          0x00000008  /* Extended attributes associated   */
-/* with the file can be read        */
-#define FILE_WRITE_EA         0x00000010  /* Extended attributes associated   */
-/* with the file can be written     */
-#define FILE_EXECUTE          0x00000020  /*Data can be read into memory from */
-/* the file using system paging I/O */
-#define FILE_DELETE_CHILD     0x00000040
-#define FILE_READ_ATTRIBUTES  0x00000080  /* Attributes associated with the   */
-/* file can be read                 */
-#define FILE_WRITE_ATTRIBUTES 0x00000100  /* Attributes associated with the   */
-/* file can be written              */
-#define DELETE                0x00010000  /* The file can be deleted          */
-#define READ_CONTROL          0x00020000  /* The access control list and      */
-/* ownership associated with the    */
-/* file can be read                 */
-#define WRITE_DAC             0x00040000  /* The access control list and      */
-/* ownership associated with the    */
-/* file can be written.             */
-#define WRITE_OWNER           0x00080000  /* Ownership information associated */
-/* with the file can be written     */
-#define SYNCHRONIZE           0x00100000  /* The file handle can waited on to */
-/* synchronize with the completion  */
-/* of an input/output request       */
-#define GENERIC_ALL           0x10000000
-#define GENERIC_EXECUTE       0x20000000
-#define GENERIC_WRITE         0x40000000
-#define GENERIC_READ          0x80000000
-/* In summary - Relevant file       */
-/* access flags from CIFS are       */
-/* file_read_data, file_write_data  */
-/* file_execute, file_read_attributes*/
-/* write_dac, and delete.           */
-
+/* Combinations of file access permission bits */
 #define SET_FILE_READ_RIGHTS (FILE_READ_DATA | FILE_READ_EA \
                | FILE_READ_ATTRIBUTES \
                | DELETE | READ_CONTROL | WRITE_DAC \
                | FILE_WRITE_ATTRIBUTES \
                | DELETE | READ_CONTROL | WRITE_DAC \
                | WRITE_OWNER | SYNCHRONIZE)
-#define SET_FILE_EXEC_RIGHTS (FILE_READ_EA | FILE_WRITE_EA | FILE_EXECUTE \
-               | FILE_READ_ATTRIBUTES \
-               | FILE_WRITE_ATTRIBUTES \
-               | DELETE | READ_CONTROL | WRITE_DAC \
-               | WRITE_OWNER | SYNCHRONIZE)
-
-#define SET_MINIMUM_RIGHTS (FILE_READ_EA | FILE_READ_ATTRIBUTES \
-               | READ_CONTROL | SYNCHRONIZE)
 
 /* generic flags for file open */
 #define GENERIC_READ_FLAGS     (READ_CONTROL | FILE_READ_DATA | \
 #define SMBFLG2_ERR_STATUS     cpu_to_le16(0x4000)
 #define SMBFLG2_UNICODE                cpu_to_le16(0x8000)
 
-struct smb_hdr {
-       __be32 smb_buf_length;
-       __u8 Protocol[4];
-       __u8 Command;
-       union {
-               struct {
-                       __u8 ErrorClass;
-                       __u8 Reserved;
-                       __le16 Error;
-               } __packed DosError;
-               __le32 CifsError;
-       } __packed Status;
-       __u8 Flags;
-       __le16 Flags2;          /* note: le */
-       __le16 PidHigh;
-       union {
-               struct {
-                       __le32 SequenceNumber;  /* le */
-                       __u32 Reserved; /* zero */
-               } __packed Sequence;
-               __u8 SecuritySignature[8];      /* le */
-       } __packed Signature;
-       __u8 pad[2];
-       __le16 Tid;
-       __le16 Pid;
-       __le16 Uid;
-       __le16 Mid;
-       __u8 WordCount;
-} __packed;
-
 struct smb_negotiate_req {
        struct smb_hdr hdr;     /* wct = 0 */
        __le16 ByteCount;