]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
smb: move create_durable_reconn to common/smb2pdu.h
authorChenXiaoSong <chenxiaosong@kylinos.cn>
Thu, 13 Nov 2025 13:32:51 +0000 (21:32 +0800)
committerSteve French <stfrench@microsoft.com>
Mon, 1 Dec 2025 03:11:45 +0000 (21:11 -0600)
The fields in struct create_durable_reconn_req and struct create_durable
are exactly the same, so remove create_durable_reconn_req from server,
and use typedef to define both create_durable_req_t and
create_durable_reconn_t for a single struct.

Rename the following places:

  - struct create_durable -> create_durable_req_t
  - struct create_durable_reconn_req -> create_durable_reconn_t

The documentation references are:

  - SMB2_CREATE_DURABLE_HANDLE_REQUEST   in MS-SMB2 2.2.13.2.3
  - SMB2_CREATE_DURABLE_HANDLE_RECONNECT in MS-SMB2 2.2.13.2.4
  - SMB2_FILEID in MS-SMB2 2.2.14.1

Descriptions of the struct fields:

  - __u8  Reserved[16]: DurableRequest field of SMB2_CREATE_DURABLE_HANDLE_REQUEST.
                        A 16-byte field that MUST be reserved.
  - __u64 PersistentFileId: Persistent field of 2.2.14.1 SMB2_FILEID
  - __u64 VolatileFileId: Volatile field of 2.2.14.1 SMB2_FILEID
  - struct Fid: Data field of SMB2_CREATE_DURABLE_HANDLE_RECONNECT.
                An SMB2_FILEID structure, as specified in section 2.2.14.1.

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

index 62ced22fc5a6e136440b8ed1fbf13e904edb0622..032b4b037f072ad4c7e72cd181f3dc15726199df 100644 (file)
@@ -2229,21 +2229,20 @@ SMB2_tdis(const unsigned int xid, struct cifs_tcon *tcon)
        return rc;
 }
 
-
-static struct create_durable *
+static create_durable_req_t *
 create_durable_buf(void)
 {
-       struct create_durable *buf;
+       create_durable_req_t *buf;
 
-       buf = kzalloc(sizeof(struct create_durable), GFP_KERNEL);
+       buf = kzalloc(sizeof(create_durable_req_t), GFP_KERNEL);
        if (!buf)
                return NULL;
 
        buf->ccontext.DataOffset = cpu_to_le16(offsetof
-                                       (struct create_durable, Data));
+                                       (create_durable_req_t, Data));
        buf->ccontext.DataLength = cpu_to_le32(16);
        buf->ccontext.NameOffset = cpu_to_le16(offsetof
-                               (struct create_durable, Name));
+                               (create_durable_req_t, Name));
        buf->ccontext.NameLength = cpu_to_le16(4);
        /* SMB2_CREATE_DURABLE_HANDLE_REQUEST is "DHnQ" */
        buf->Name[0] = 'D';
@@ -2253,20 +2252,20 @@ create_durable_buf(void)
        return buf;
 }
 
-static struct create_durable *
+static create_durable_req_t *
 create_reconnect_durable_buf(struct cifs_fid *fid)
 {
-       struct create_durable *buf;
+       create_durable_req_t *buf;
 
-       buf = kzalloc(sizeof(struct create_durable), GFP_KERNEL);
+       buf = kzalloc(sizeof(create_durable_req_t), GFP_KERNEL);
        if (!buf)
                return NULL;
 
        buf->ccontext.DataOffset = cpu_to_le16(offsetof
-                                       (struct create_durable, Data));
+                                       (create_durable_req_t, Data));
        buf->ccontext.DataLength = cpu_to_le32(16);
        buf->ccontext.NameOffset = cpu_to_le16(offsetof
-                               (struct create_durable, Name));
+                               (create_durable_req_t, Name));
        buf->ccontext.NameLength = cpu_to_le16(4);
        buf->Data.Fid.PersistentFileId = fid->persistent_fid;
        buf->Data.Fid.VolatileFileId = fid->volatile_fid;
@@ -2552,7 +2551,7 @@ add_durable_context(struct kvec *iov, unsigned int *num_iovec,
                iov[num].iov_base = create_durable_buf();
        if (iov[num].iov_base == NULL)
                return -ENOMEM;
-       iov[num].iov_len = sizeof(struct create_durable);
+       iov[num].iov_len = sizeof(create_durable_req_t);
        *num_iovec = num + 1;
        return 0;
 }
index 824d27297beca2717ac8b14b32348eacfe5b1654..f38c5739a9d218ae0a2ebce6d6be1b93a5e6d822 100644 (file)
@@ -1265,7 +1265,7 @@ struct create_posix {
 } __packed;
 
 /* See MS-SMB2 2.2.13.2.3 and MS-SMB2 2.2.13.2.4 */
-struct create_durable {
+typedef struct {
        struct create_context_hdr ccontext;
        __u8   Name[8];
        union {
@@ -1275,7 +1275,7 @@ struct create_durable {
                        __u64 VolatileFileId;
                } Fid;
        } Data;
-} __packed;
+} __packed create_durable_req_t, create_durable_reconn_t;
 
 /* See MS-SMB2 2.2.13.2.5 */
 struct create_mxac_req {
index 8facd4ca69d09f32639c3f77fd09182588efd062..c2369415c6c4528b3eeba0297829d999f743010a 100644 (file)
@@ -2756,7 +2756,7 @@ static int parse_durable_handle_context(struct ksmbd_work *work,
                }
                case DURABLE_RECONN:
                {
-                       struct create_durable_reconn_req *recon;
+                       create_durable_reconn_t *recon;
 
                        if (dh_info->type == DURABLE_RECONN_V2 ||
                            dh_info->type == DURABLE_REQ_V2) {
@@ -2766,12 +2766,12 @@ static int parse_durable_handle_context(struct ksmbd_work *work,
 
                        if (le16_to_cpu(context->DataOffset) +
                                le32_to_cpu(context->DataLength) <
-                           sizeof(struct create_durable_reconn_req)) {
+                           sizeof(create_durable_reconn_t)) {
                                err = -EINVAL;
                                goto out;
                        }
 
-                       recon = (struct create_durable_reconn_req *)context;
+                       recon = (create_durable_reconn_t *)context;
                        persistent_id = recon->Data.Fid.PersistentFileId;
                        dh_info->fp = ksmbd_lookup_durable_fd(persistent_id);
                        if (!dh_info->fp) {
index b94de41049f401019c71592e94d9eb5028be09be..66cdc8e4a6488d23713807c1661702792b265457 100644 (file)
@@ -68,18 +68,6 @@ struct preauth_integrity_info {
 
 #define DURABLE_HANDLE_MAX_TIMEOUT     300000
 
-struct create_durable_reconn_req {
-       struct create_context_hdr ccontext;
-       __u8   Name[8];
-       union {
-               __u8  Reserved[16];
-               struct {
-                       __u64 PersistentFileId;
-                       __u64 VolatileFileId;
-               } Fid;
-       } Data;
-} __packed;
-
 struct create_alloc_size_req {
        struct create_context_hdr ccontext;
        __u8   Name[8];