]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
smb: move create_durable_handle_reconnect_v2 to common/smb2pdu.h
authorChenXiaoSong <chenxiaosong@kylinos.cn>
Sun, 2 Nov 2025 07:30:49 +0000 (15:30 +0800)
committerSteve French <stfrench@microsoft.com>
Mon, 1 Dec 2025 03:11:44 +0000 (21:11 -0600)
Modify the following places:

  - some fields in "struct create_durable_reconn_v2_req" ->
                        struct durable_reconnect_context_v2
  - create_durable_reconn_v2_req -> create_durable_handle_reconnect_v2

Then move duplicate definitions to common header file.

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.h
fs/smb/common/smb2pdu.h
fs/smb/server/smb2pdu.c
fs/smb/server/smb2pdu.h

index a700b404a57c6e354d3ff83be8e206404c3a2c21..741ceabc3bbad4beaa26f7da9f92cfbc0582dca3 100644 (file)
@@ -138,29 +138,12 @@ struct share_redirect_error_context_rsp {
 /* Flags */
 #define SMB2_DHANDLE_FLAG_PERSISTENT   0x00000002
 
-/* See MS-SMB2 2.2.13.2.12 */
-struct durable_reconnect_context_v2 {
-       struct {
-               __u64 PersistentFileId;
-               __u64 VolatileFileId;
-       } Fid;
-       __u8 CreateGuid[16];
-       __le32 Flags; /* see above DHANDLE_FLAG_PERSISTENT */
-} __packed;
-
 /* See MS-SMB2 2.2.14.2.12 */
 struct durable_reconnect_context_v2_rsp {
        __le32 Timeout;
        __le32 Flags; /* see above DHANDLE_FLAG_PERSISTENT */
 } __packed;
 
-struct create_durable_handle_reconnect_v2 {
-       struct create_context_hdr ccontext;
-       __u8   Name[8];
-       struct durable_reconnect_context_v2 dcontext;
-       __u8   Pad[4];
-} __packed;
-
 /* See MS-SMB2 2.2.13.2.5 */
 struct crt_twarp_ctxt {
        struct create_context_hdr ccontext;
index 681855ebacc9d8df964a2af2b6dac5c614decba7..77b1b8eb9c0ee4c6cb7d17d19efbfa534fea5739 100644 (file)
@@ -1304,6 +1304,22 @@ struct create_durable_req_v2 {
        struct durable_context_v2_req dcontext;
 } __packed;
 
+/* See MS-SMB2 2.2.13.2.12 */
+struct durable_reconnect_context_v2 {
+       struct {
+               __u64 PersistentFileId;
+               __u64 VolatileFileId;
+       } Fid;
+       __u8 CreateGuid[16];
+       __le32 Flags; /* see SMB2_DHANDLE_FLAG_PERSISTENT */
+} __packed;
+
+struct create_durable_handle_reconnect_v2 {
+       struct create_context_hdr ccontext;
+       __u8   Name[8];
+       struct durable_reconnect_context_v2 dcontext;
+} __packed;
+
 /* See MS-SMB2 2.2.14.2.5 */
 struct create_mxac_rsp {
        struct create_context_hdr ccontext;
index 07d21d2f882ff9a19cffd4cab7b463b5a3402464..77438830e2de7e30ba9e476f4544eee6a6b2e428 100644 (file)
@@ -2716,7 +2716,7 @@ static int parse_durable_handle_context(struct ksmbd_work *work,
                switch (dh_idx) {
                case DURABLE_RECONN_V2:
                {
-                       struct create_durable_reconn_v2_req *recon_v2;
+                       struct create_durable_handle_reconnect_v2 *recon_v2;
 
                        if (dh_info->type == DURABLE_RECONN ||
                            dh_info->type == DURABLE_REQ_V2) {
@@ -2726,13 +2726,13 @@ 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_v2_req)) {
+                           sizeof(struct create_durable_handle_reconnect_v2)) {
                                err = -EINVAL;
                                goto out;
                        }
 
-                       recon_v2 = (struct create_durable_reconn_v2_req *)context;
-                       persistent_id = recon_v2->Fid.PersistentFileId;
+                       recon_v2 = (struct create_durable_handle_reconnect_v2 *)context;
+                       persistent_id = recon_v2->dcontext.Fid.PersistentFileId;
                        dh_info->fp = ksmbd_lookup_durable_fd(persistent_id);
                        if (!dh_info->fp) {
                                ksmbd_debug(SMB, "Failed to get durable handle state\n");
@@ -2740,7 +2740,7 @@ static int parse_durable_handle_context(struct ksmbd_work *work,
                                goto out;
                        }
 
-                       if (memcmp(dh_info->fp->create_guid, recon_v2->CreateGuid,
+                       if (memcmp(dh_info->fp->create_guid, recon_v2->dcontext.CreateGuid,
                                   SMB2_CREATE_GUID_SIZE)) {
                                err = -EBADF;
                                ksmbd_put_durable_fd(dh_info->fp);
index 93d43da626d4b609b92e90c1f794f13772b3ab36..d4026d313d675554650531d6d12538aadc9160c4 100644 (file)
@@ -80,17 +80,6 @@ struct create_durable_reconn_req {
        } Data;
 } __packed;
 
-struct create_durable_reconn_v2_req {
-       struct create_context_hdr ccontext;
-       __u8   Name[8];
-       struct {
-               __u64 PersistentFileId;
-               __u64 VolatileFileId;
-       } Fid;
-       __u8 CreateGuid[16];
-       __le32 Flags;
-} __packed;
-
 struct create_alloc_size_req {
        struct create_context_hdr ccontext;
        __u8   Name[8];