[PATCH v5 06/14] smb/server: remove create_durable_reconn_req

chenxiaosong.chenxiaosong@linux.dev posted 14 patches 3 months, 1 week ago
There is a newer version of this series
[PATCH v5 06/14] smb/server: remove create_durable_reconn_req
Posted by chenxiaosong.chenxiaosong@linux.dev 3 months, 1 week ago
From: ChenXiaoSong <chenxiaosong@kylinos.cn>

The fields in struct create_durable_reconn_req and struct create_durable
are exactly the same.

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

We can give these two structs a uniform name: create_durable.

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.

Signed-off-by: ChenXiaoSong <chenxiaosong@kylinos.cn>
---
 fs/smb/server/smb2pdu.c |  6 +++---
 fs/smb/server/smb2pdu.h | 12 ------------
 2 files changed, 3 insertions(+), 15 deletions(-)

diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c
index c972b2dd62cd..b95ca0de60c3 100644
--- a/fs/smb/server/smb2pdu.c
+++ b/fs/smb/server/smb2pdu.c
@@ -2766,7 +2766,7 @@ static int parse_durable_handle_context(struct ksmbd_work *work,
 		}
 		case DURABLE_RECONN:
 		{
-			struct create_durable_reconn_req *recon;
+			struct create_durable *recon;
 
 			if (dh_info->type == DURABLE_RECONN_V2 ||
 			    dh_info->type == DURABLE_REQ_V2) {
@@ -2776,12 +2776,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(struct create_durable)) {
 				err = -EINVAL;
 				goto out;
 			}
 
-			recon = (struct create_durable_reconn_req *)context;
+			recon = (struct create_durable *)context;
 			persistent_id = recon->Data.Fid.PersistentFileId;
 			dh_info->fp = ksmbd_lookup_durable_fd(persistent_id);
 			if (!dh_info->fp) {
diff --git a/fs/smb/server/smb2pdu.h b/fs/smb/server/smb2pdu.h
index 46e14bd4f2da..7758aa01034d 100644
--- a/fs/smb/server/smb2pdu.h
+++ b/fs/smb/server/smb2pdu.h
@@ -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];
-- 
2.43.0
Re: [PATCH v5 06/14] smb/server: remove create_durable_reconn_req
Posted by Namjae Jeon 2 months, 3 weeks ago
On Sun, Nov 2, 2025 at 4:32 PM <chenxiaosong.chenxiaosong@linux.dev> wrote:
>
> From: ChenXiaoSong <chenxiaosong@kylinos.cn>
>
> The fields in struct create_durable_reconn_req and struct create_durable
> are exactly the same.
>
> 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
>
> We can give these two structs a uniform name: create_durable.
Please use typedef to define multiple aliases for a single struct.
typedef struct {
  ...
} create_durable, create_durable_reconn_req;

Thanks.
Re: [PATCH v5 06/14] smb/server: remove create_durable_reconn_req
Posted by ChenXiaoSong 2 months, 3 weeks ago
Okay, I'll make the changes.

Once you've applied some of the patches from this version, I'll 
immediately send the next version.

Thanks,
ChenXiaoSong.

On 11/13/25 9:19 AM, Namjae Jeon wrote:
> On Sun, Nov 2, 2025 at 4:32 PM <chenxiaosong.chenxiaosong@linux.dev> wrote:
>>
>> From: ChenXiaoSong <chenxiaosong@kylinos.cn>
>>
>> The fields in struct create_durable_reconn_req and struct create_durable
>> are exactly the same.
>>
>> 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
>>
>> We can give these two structs a uniform name: create_durable.
> Please use typedef to define multiple aliases for a single struct.
> typedef struct {
>    ...
> } create_durable, create_durable_reconn_req;
> 
> Thanks.

Re: [PATCH v5 06/14] smb/server: remove create_durable_reconn_req
Posted by Namjae Jeon 2 months, 3 weeks ago
On Thu, Nov 13, 2025 at 10:46 AM ChenXiaoSong
<chenxiaosong@chenxiaosong.com> wrote:
>
> Okay, I'll make the changes.
>
> Once you've applied some of the patches from this version, I'll
> immediately send the next version.
I have applied all patches except 0006, 0012 patches to #ksmbd-for-next-next.
Thanks!
>
> Thanks,
> ChenXiaoSong.
>
> On 11/13/25 9:19 AM, Namjae Jeon wrote:
> > On Sun, Nov 2, 2025 at 4:32 PM <chenxiaosong.chenxiaosong@linux.dev> wrote:
> >>
> >> From: ChenXiaoSong <chenxiaosong@kylinos.cn>
> >>
> >> The fields in struct create_durable_reconn_req and struct create_durable
> >> are exactly the same.
> >>
> >> 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
> >>
> >> We can give these two structs a uniform name: create_durable.
> > Please use typedef to define multiple aliases for a single struct.
> > typedef struct {
> >    ...
> > } create_durable, create_durable_reconn_req;
> >
> > Thanks.
>
Re: [PATCH v5 06/14] smb/server: remove create_durable_reconn_req
Posted by ChenXiaoSong 2 months, 3 weeks ago
Hi Namjae,

Please do not apply patch 0007 yet.

The struct smb_hdr seems to be used only by SMB1, while SMB2 and SMB3 
use smb2_hdr.

Should we move smb_hdr to a new common/smb1pdu.h?

Thanks,
ChenXiaoSong.

On 11/13/25 10:12 AM, Namjae Jeon wrote:
> On Thu, Nov 13, 2025 at 10:46 AM ChenXiaoSong
> <chenxiaosong@chenxiaosong.com> wrote:
>>
>> Okay, I'll make the changes.
>>
>> Once you've applied some of the patches from this version, I'll
>> immediately send the next version.
> I have applied all patches except 0006, 0012 patches to #ksmbd-for-next-next.
> Thanks!
>>
>> Thanks,
>> ChenXiaoSong.
>>
>> On 11/13/25 9:19 AM, Namjae Jeon wrote:
>>> On Sun, Nov 2, 2025 at 4:32 PM <chenxiaosong.chenxiaosong@linux.dev> wrote:
>>>>
>>>> From: ChenXiaoSong <chenxiaosong@kylinos.cn>
>>>>
>>>> The fields in struct create_durable_reconn_req and struct create_durable
>>>> are exactly the same.
>>>>
>>>> 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
>>>>
>>>> We can give these two structs a uniform name: create_durable.
>>> Please use typedef to define multiple aliases for a single struct.
>>> typedef struct {
>>>     ...
>>> } create_durable, create_durable_reconn_req;
>>>
>>> Thanks.
>>