linux-cifs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v7 0/2] smb: move duplicate definitions to common header file
@ 2025-11-13 13:32 chenxiaosong.chenxiaosong
  2025-11-13 13:32 ` [PATCH v7 1/2] smb: move CREATE_DURABLE_RECONN to common/smb2pdu.h chenxiaosong.chenxiaosong
  2025-11-13 13:32 ` [PATCH v7 2/2] smb: move FILE_SYSTEM_ATTRIBUTE_INFO to common/fscc.h chenxiaosong.chenxiaosong
  0 siblings, 2 replies; 6+ messages in thread
From: chenxiaosong.chenxiaosong @ 2025-11-13 13:32 UTC (permalink / raw)
  To: sfrench, smfrench, linkinjeon, linkinjeon, christophe.jaillet
  Cc: linux-cifs, linux-kernel, chenxiaosong, ChenXiaoSong

From: ChenXiaoSong <chenxiaosong@kylinos.cn>

In order to maintain the code more easily, move some duplicate definitions
to common header file. Add some MS documentation references for macro and
struct definitions.

I have tested all patches using xfstests and smbtorture, and no additional
test failures were observed in the results. The detailed test results can
be found in https://chenxiaosong.com/en/smb-test/20251113.html

v3: https://lore.kernel.org/all/20251014071917.3004573-1-chenxiaosong.chenxiaosong@linux.dev/
The following patches from v3 have already been merged into the mainline:
  - d877470b5991 smb: move some duplicate definitions to common/cifsglob.h
  - 379510a815cb smb/server: fix possible refcount leak in smb2_sess_setup()
  - 6fced056d2cc smb/server: fix possible memory leak in smb2_read()

v4: https://lore.kernel.org/all/20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev/
v5: https://lore.kernel.org/all/20251102073059.3681026-1-chenxiaosong.chenxiaosong@linux.dev/
The following patches from v4 and v5 have been applied to the ksmbd-for-next-next branch: https://git.samba.org/?p=ksmbd.git;a=shortlog;h=refs/heads/ksmbd-for-next-next
  - smb: fix some warnings reported by scripts/checkpatch.pl
  - smb: do some cleanups
  - smb: move FILE_SYSTEM_SIZE_INFO to common/fscc.h
  - smb: move some duplicate struct definitions to common/fscc.h
  - smb: move list of FileSystemAttributes to common/fscc.h
  - smb: move SMB_NEGOTIATE_REQ to common/smb2pdu.h
  - smb: move some duplicate definitions to common/smb2pdu.h
  - smb: move create_durable_rsp_v2 to common/smb2pdu.h
  - smb: move create_durable_handle_reconnect_v2 to common/smb2pdu.h
  - smb: move create_durable_req_v2 to common/smb2pdu.h
  - smb: move MAX_CIFS_SMALL_BUFFER_SIZE to common/smbglob.h
  - smb/client: fix CAP_BULK_TRANSFER value
  - smb: move resume_key_ioctl_rsp to common/smb2pdu.h
  - smb: move copychunk definitions to common/smb2pdu.h
  - smb: move smb_sockaddr_in and smb_sockaddr_in6 to common/smb2pdu.h
  - smb: move SMB1_PROTO_NUMBER to common/smbglob.h
  - smb: move get_rfc1002_len() to common/smbglob.h
  - smb: move smb_version_values to common/smbglob.h
  - smb: rename common/cifsglob.h to common/smbglob.h

v5->v7:
  - Patch #0001: use typedef to define both CREATE_DURABLE_REQ and CREATE_DURABLE_RECONN for a single struct.
  - Patch #0002: make FILE_SYSTEM_ATTRIBUTE_INFO.FileSystemName a flexible array member.

v6->v7:
  - Patch #0001: CREATE_DURABLE -> CREATE_DURABLE_REQ
                 CREATE_DURABLE_RECONN_REQ -> CREATE_DURABLE_RECONN

v6: https://lore.kernel.org/all/20251113092602.24733-1-chenxiaosong.chenxiaosong@linux.dev/

ChenXiaoSong (2):
  smb: move CREATE_DURABLE_RECONN to common/smb2pdu.h
  smb: move FILE_SYSTEM_ATTRIBUTE_INFO to common/fscc.h

 fs/smb/client/cifspdu.h    | 10 ----------
 fs/smb/client/smb2pdu.c    | 25 ++++++++++++-------------
 fs/smb/common/fscc.h       |  8 ++++++++
 fs/smb/common/smb2pdu.h    |  4 ++--
 fs/smb/server/smb2pdu.c    | 12 ++++++------
 fs/smb/server/smb2pdu.h    | 12 ------------
 fs/smb/server/smb_common.h |  7 -------
 7 files changed, 28 insertions(+), 50 deletions(-)

-- 
2.43.0


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v7 1/2] smb: move CREATE_DURABLE_RECONN to common/smb2pdu.h
  2025-11-13 13:32 [PATCH v7 0/2] smb: move duplicate definitions to common header file chenxiaosong.chenxiaosong
@ 2025-11-13 13:32 ` chenxiaosong.chenxiaosong
  2025-11-15  7:45   ` Namjae Jeon
  2025-11-13 13:32 ` [PATCH v7 2/2] smb: move FILE_SYSTEM_ATTRIBUTE_INFO to common/fscc.h chenxiaosong.chenxiaosong
  1 sibling, 1 reply; 6+ messages in thread
From: chenxiaosong.chenxiaosong @ 2025-11-13 13:32 UTC (permalink / raw)
  To: sfrench, smfrench, linkinjeon, linkinjeon, christophe.jaillet
  Cc: linux-cifs, linux-kernel, chenxiaosong, ChenXiaoSong

From: ChenXiaoSong <chenxiaosong@kylinos.cn>

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 and CREATE_DURABLE_RECONN
for a single struct.

Rename the following places:

  - struct create_durable -> CREATE_DURABLE_REQ
  - struct create_durable_reconn_req -> CREATE_DURABLE_RECONN

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>
---
 fs/smb/client/smb2pdu.c | 23 +++++++++++------------
 fs/smb/common/smb2pdu.h |  4 ++--
 fs/smb/server/smb2pdu.c |  6 +++---
 fs/smb/server/smb2pdu.h | 12 ------------
 4 files changed, 16 insertions(+), 29 deletions(-)

diff --git a/fs/smb/client/smb2pdu.c b/fs/smb/client/smb2pdu.c
index 62ced22fc5a6..30c391424022 100644
--- a/fs/smb/client/smb2pdu.c
+++ b/fs/smb/client/smb2pdu.c
@@ -2229,21 +2229,20 @@ SMB2_tdis(const unsigned int xid, struct cifs_tcon *tcon)
 	return rc;
 }
 
-
-static struct create_durable *
+static CREATE_DURABLE_REQ *
 create_durable_buf(void)
 {
-	struct create_durable *buf;
+	CREATE_DURABLE_REQ *buf;
 
-	buf = kzalloc(sizeof(struct create_durable), GFP_KERNEL);
+	buf = kzalloc(sizeof(CREATE_DURABLE_REQ), GFP_KERNEL);
 	if (!buf)
 		return NULL;
 
 	buf->ccontext.DataOffset = cpu_to_le16(offsetof
-					(struct create_durable, Data));
+					(CREATE_DURABLE_REQ, Data));
 	buf->ccontext.DataLength = cpu_to_le32(16);
 	buf->ccontext.NameOffset = cpu_to_le16(offsetof
-				(struct create_durable, Name));
+				(CREATE_DURABLE_REQ, 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 *
 create_reconnect_durable_buf(struct cifs_fid *fid)
 {
-	struct create_durable *buf;
+	CREATE_DURABLE_REQ *buf;
 
-	buf = kzalloc(sizeof(struct create_durable), GFP_KERNEL);
+	buf = kzalloc(sizeof(CREATE_DURABLE_REQ), GFP_KERNEL);
 	if (!buf)
 		return NULL;
 
 	buf->ccontext.DataOffset = cpu_to_le16(offsetof
-					(struct create_durable, Data));
+					(CREATE_DURABLE_REQ, Data));
 	buf->ccontext.DataLength = cpu_to_le32(16);
 	buf->ccontext.NameOffset = cpu_to_le16(offsetof
-				(struct create_durable, Name));
+				(CREATE_DURABLE_REQ, 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);
 	*num_iovec = num + 1;
 	return 0;
 }
diff --git a/fs/smb/common/smb2pdu.h b/fs/smb/common/smb2pdu.h
index 824d27297bec..d0777fbfd503 100644
--- a/fs/smb/common/smb2pdu.h
+++ b/fs/smb/common/smb2pdu.h
@@ -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, CREATE_DURABLE_RECONN;
 
 /* See MS-SMB2 2.2.13.2.5 */
 struct create_mxac_req {
diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c
index 95186fa96080..e7edb52e6e40 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;
+			CREATE_DURABLE_RECONN *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(CREATE_DURABLE_RECONN)) {
 				err = -EINVAL;
 				goto out;
 			}
 
-			recon = (struct create_durable_reconn_req *)context;
+			recon = (CREATE_DURABLE_RECONN *)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 b94de41049f4..66cdc8e4a648 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


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v7 2/2] smb: move FILE_SYSTEM_ATTRIBUTE_INFO to common/fscc.h
  2025-11-13 13:32 [PATCH v7 0/2] smb: move duplicate definitions to common header file chenxiaosong.chenxiaosong
  2025-11-13 13:32 ` [PATCH v7 1/2] smb: move CREATE_DURABLE_RECONN to common/smb2pdu.h chenxiaosong.chenxiaosong
@ 2025-11-13 13:32 ` chenxiaosong.chenxiaosong
  2025-11-15  7:41   ` Namjae Jeon
  1 sibling, 1 reply; 6+ messages in thread
From: chenxiaosong.chenxiaosong @ 2025-11-13 13:32 UTC (permalink / raw)
  To: sfrench, smfrench, linkinjeon, linkinjeon, christophe.jaillet
  Cc: linux-cifs, linux-kernel, chenxiaosong, ChenXiaoSong

From: ChenXiaoSong <chenxiaosong@kylinos.cn>

Modify the following places:

  - struct filesystem_attribute_info -> FILE_SYSTEM_ATTRIBUTE_INFO
  - client: remove MIN_FS_ATTR_INFO_SIZE definition,
            MIN_FS_ATTR_INFO_SIZE -> sizeof(FILE_SYSTEM_ATTRIBUTE_INFO)

Then move FILE_SYSTEM_ATTRIBUTE_INFO to common header file.

Suggested-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: ChenXiaoSong <chenxiaosong@kylinos.cn>
---
 fs/smb/client/cifspdu.h    | 10 ----------
 fs/smb/client/smb2pdu.c    |  2 +-
 fs/smb/common/fscc.h       |  8 ++++++++
 fs/smb/server/smb2pdu.c    |  6 +++---
 fs/smb/server/smb_common.h |  7 -------
 5 files changed, 12 insertions(+), 21 deletions(-)

diff --git a/fs/smb/client/cifspdu.h b/fs/smb/client/cifspdu.h
index d84e10b1477f..49f35cb3cf2e 100644
--- a/fs/smb/client/cifspdu.h
+++ b/fs/smb/client/cifspdu.h
@@ -2068,16 +2068,6 @@ typedef struct {
 #define FILE_PORTABLE_DEVICE			0x00004000
 #define FILE_DEVICE_ALLOW_APPCONTAINER_TRAVERSAL 0x00020000
 
-/* minimum includes first three fields, and empty FS Name */
-#define MIN_FS_ATTR_INFO_SIZE 12
-
-typedef struct {
-	__le32 Attributes;
-	__le32 MaxPathNameComponentLength;
-	__le32 FileSystemNameLen;
-	char FileSystemName[52]; /* do not have to save this - get subset? */
-} __attribute__((packed)) FILE_SYSTEM_ATTRIBUTE_INFO;
-
 /******************************************************************************/
 /* QueryFileInfo/QueryPathinfo (also for SetPath/SetFile) data buffer formats */
 /******************************************************************************/
diff --git a/fs/smb/client/smb2pdu.c b/fs/smb/client/smb2pdu.c
index 30c391424022..4ccc8d1e130d 100644
--- a/fs/smb/client/smb2pdu.c
+++ b/fs/smb/client/smb2pdu.c
@@ -5982,7 +5982,7 @@ SMB2_QFS_attr(const unsigned int xid, struct cifs_tcon *tcon,
 		min_len = sizeof(FILE_SYSTEM_DEVICE_INFO);
 	} else if (level == FS_ATTRIBUTE_INFORMATION) {
 		max_len = sizeof(FILE_SYSTEM_ATTRIBUTE_INFO);
-		min_len = MIN_FS_ATTR_INFO_SIZE;
+		min_len = sizeof(FILE_SYSTEM_ATTRIBUTE_INFO);
 	} else if (level == FS_SECTOR_SIZE_INFORMATION) {
 		max_len = sizeof(struct smb3_fs_ss_info);
 		min_len = sizeof(struct smb3_fs_ss_info);
diff --git a/fs/smb/common/fscc.h b/fs/smb/common/fscc.h
index a0580a772a41..7eb3f715466d 100644
--- a/fs/smb/common/fscc.h
+++ b/fs/smb/common/fscc.h
@@ -94,6 +94,14 @@ struct smb2_file_network_open_info {
 	__le32 Reserved;
 } __packed; /* level 34 Query also similar returned in close rsp and open rsp */
 
+/* See FS-FSCC 2.5.1 */
+typedef struct {
+	__le32 Attributes;
+	__le32 MaxPathNameComponentLength;
+	__le32 FileSystemNameLen;
+	__le16 FileSystemName[]; /* do not have to save this - get subset? */
+} __packed FILE_SYSTEM_ATTRIBUTE_INFO;
+
 /* List of FileSystemAttributes - see MS-FSCC 2.5.1 */
 #define FILE_SUPPORTS_SPARSE_VDL	0x10000000 /* faster nonsparse extend */
 #define FILE_SUPPORTS_BLOCK_REFCOUNTING	0x08000000 /* allow ioctl dup extents */
diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c
index e7edb52e6e40..383fecacfd06 100644
--- a/fs/smb/server/smb2pdu.c
+++ b/fs/smb/server/smb2pdu.c
@@ -5492,10 +5492,10 @@ static int smb2_get_info_filesystem(struct ksmbd_work *work,
 	}
 	case FS_ATTRIBUTE_INFORMATION:
 	{
-		struct filesystem_attribute_info *info;
+		FILE_SYSTEM_ATTRIBUTE_INFO *info;
 		size_t sz;
 
-		info = (struct filesystem_attribute_info *)rsp->Buffer;
+		info = (FILE_SYSTEM_ATTRIBUTE_INFO *)rsp->Buffer;
 		info->Attributes = cpu_to_le32(FILE_SUPPORTS_OBJECT_IDS |
 					       FILE_PERSISTENT_ACLS |
 					       FILE_UNICODE_ON_DISK |
@@ -5514,7 +5514,7 @@ static int smb2_get_info_filesystem(struct ksmbd_work *work,
 					"NTFS", PATH_MAX, conn->local_nls, 0);
 		len = len * 2;
 		info->FileSystemNameLen = cpu_to_le32(len);
-		sz = sizeof(struct filesystem_attribute_info) + len;
+		sz = sizeof(FILE_SYSTEM_ATTRIBUTE_INFO) + len;
 		rsp->OutputBufferLength = cpu_to_le32(sz);
 		break;
 	}
diff --git a/fs/smb/server/smb_common.h b/fs/smb/server/smb_common.h
index 4dd573c5f0b2..6c1607b43eb3 100644
--- a/fs/smb/server/smb_common.h
+++ b/fs/smb/server/smb_common.h
@@ -90,13 +90,6 @@ struct smb_negotiate_rsp {
 	__le16 ByteCount;
 } __packed;
 
-struct filesystem_attribute_info {
-	__le32 Attributes;
-	__le32 MaxPathNameComponentLength;
-	__le32 FileSystemNameLen;
-	__le16 FileSystemName[]; /* do not have to save this - get subset? */
-} __packed;
-
 struct filesystem_vol_info {
 	__le64 VolumeCreationTime;
 	__le32 SerialNumber;
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v7 2/2] smb: move FILE_SYSTEM_ATTRIBUTE_INFO to common/fscc.h
  2025-11-13 13:32 ` [PATCH v7 2/2] smb: move FILE_SYSTEM_ATTRIBUTE_INFO to common/fscc.h chenxiaosong.chenxiaosong
@ 2025-11-15  7:41   ` Namjae Jeon
  2025-11-15  8:06     ` ChenXiaoSong
  0 siblings, 1 reply; 6+ messages in thread
From: Namjae Jeon @ 2025-11-15  7:41 UTC (permalink / raw)
  To: chenxiaosong.chenxiaosong
  Cc: sfrench, smfrench, linkinjeon, christophe.jaillet, linux-cifs,
	linux-kernel, chenxiaosong, ChenXiaoSong

On Thu, Nov 13, 2025 at 10:34 PM <chenxiaosong.chenxiaosong@linux.dev> wrote:
>
> From: ChenXiaoSong <chenxiaosong@kylinos.cn>
>
> Modify the following places:
>
>   - struct filesystem_attribute_info -> FILE_SYSTEM_ATTRIBUTE_INFO
>   - client: remove MIN_FS_ATTR_INFO_SIZE definition,
>             MIN_FS_ATTR_INFO_SIZE -> sizeof(FILE_SYSTEM_ATTRIBUTE_INFO)
>
> Then move FILE_SYSTEM_ATTRIBUTE_INFO to common header file.
>
> Suggested-by: Namjae Jeon <linkinjeon@kernel.org>
> Signed-off-by: ChenXiaoSong <chenxiaosong@kylinos.cn>
> ---
>  fs/smb/client/cifspdu.h    | 10 ----------
>  fs/smb/client/smb2pdu.c    |  2 +-
>  fs/smb/common/fscc.h       |  8 ++++++++
>  fs/smb/server/smb2pdu.c    |  6 +++---
>  fs/smb/server/smb_common.h |  7 -------
>  5 files changed, 12 insertions(+), 21 deletions(-)
>
> diff --git a/fs/smb/client/cifspdu.h b/fs/smb/client/cifspdu.h
> index d84e10b1477f..49f35cb3cf2e 100644
> --- a/fs/smb/client/cifspdu.h
> +++ b/fs/smb/client/cifspdu.h
> @@ -2068,16 +2068,6 @@ typedef struct {
>  #define FILE_PORTABLE_DEVICE                   0x00004000
>  #define FILE_DEVICE_ALLOW_APPCONTAINER_TRAVERSAL 0x00020000
>
> -/* minimum includes first three fields, and empty FS Name */
> -#define MIN_FS_ATTR_INFO_SIZE 12
> -
> -typedef struct {
> -       __le32 Attributes;
> -       __le32 MaxPathNameComponentLength;
> -       __le32 FileSystemNameLen;
> -       char FileSystemName[52]; /* do not have to save this - get subset? */
> -} __attribute__((packed)) FILE_SYSTEM_ATTRIBUTE_INFO;
> -
>  /******************************************************************************/
>  /* QueryFileInfo/QueryPathinfo (also for SetPath/SetFile) data buffer formats */
>  /******************************************************************************/
> diff --git a/fs/smb/client/smb2pdu.c b/fs/smb/client/smb2pdu.c
> index 30c391424022..4ccc8d1e130d 100644
> --- a/fs/smb/client/smb2pdu.c
> +++ b/fs/smb/client/smb2pdu.c
> @@ -5982,7 +5982,7 @@ SMB2_QFS_attr(const unsigned int xid, struct cifs_tcon *tcon,
>                 min_len = sizeof(FILE_SYSTEM_DEVICE_INFO);
>         } else if (level == FS_ATTRIBUTE_INFORMATION) {
>                 max_len = sizeof(FILE_SYSTEM_ATTRIBUTE_INFO);
> -               min_len = MIN_FS_ATTR_INFO_SIZE;
> +               min_len = sizeof(FILE_SYSTEM_ATTRIBUTE_INFO);
FILE_SYSTEM_ATTRIBUTE_INFO is being used elsewhere on the smb client,
and there are cases where sizeof(FILE_SYSTEM_ATTRIBUTE_INFO) is being
used. Will there really be no problems if we change it to flex-array?

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v7 1/2] smb: move CREATE_DURABLE_RECONN to common/smb2pdu.h
  2025-11-13 13:32 ` [PATCH v7 1/2] smb: move CREATE_DURABLE_RECONN to common/smb2pdu.h chenxiaosong.chenxiaosong
@ 2025-11-15  7:45   ` Namjae Jeon
  0 siblings, 0 replies; 6+ messages in thread
From: Namjae Jeon @ 2025-11-15  7:45 UTC (permalink / raw)
  To: chenxiaosong.chenxiaosong
  Cc: sfrench, smfrench, linkinjeon, christophe.jaillet, linux-cifs,
	linux-kernel, chenxiaosong, ChenXiaoSong

On Thu, Nov 13, 2025 at 10:34 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, so remove create_durable_reconn_req from server,
> and use typedef to define both CREATE_DURABLE_REQ and CREATE_DURABLE_RECONN
> for a single struct.
>
> Rename the following places:
>
>   - struct create_durable -> CREATE_DURABLE_REQ
>   - struct create_durable_reconn_req -> CREATE_DURABLE_RECONN
>
> 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>
I have changed struct names like the following ones and applied it to
#ksmbd-for-next-next.
 - struct create_durable -> create_durable_req_t
 - struct create_durable_reconn_req -> create_durable_reconn_t
Thanks!

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v7 2/2] smb: move FILE_SYSTEM_ATTRIBUTE_INFO to common/fscc.h
  2025-11-15  7:41   ` Namjae Jeon
@ 2025-11-15  8:06     ` ChenXiaoSong
  0 siblings, 0 replies; 6+ messages in thread
From: ChenXiaoSong @ 2025-11-15  8:06 UTC (permalink / raw)
  To: Namjae Jeon, chenxiaosong.chenxiaosong
  Cc: sfrench, smfrench, linkinjeon, christophe.jaillet, linux-cifs,
	linux-kernel, chenxiaosong

It seems we need to add 52 to `max_len` in the `SMB2_QFS_attr()` 
function, similar to struct smb3_fs_vol_info.

Or we can temporarily use the v5 version for now? v5: 
https://lore.kernel.org/all/20251102073059.3681026-13-chenxiaosong.chenxiaosong@linux.dev/

Thanks,
ChenXiaoSong.

On 11/15/25 15:41, Namjae Jeon wrote:
> On Thu, Nov 13, 2025 at 10:34 PM <chenxiaosong.chenxiaosong@linux.dev> wrote:
>>
>> From: ChenXiaoSong <chenxiaosong@kylinos.cn>
>>
>> Modify the following places:
>>
>>    - struct filesystem_attribute_info -> FILE_SYSTEM_ATTRIBUTE_INFO
>>    - client: remove MIN_FS_ATTR_INFO_SIZE definition,
>>              MIN_FS_ATTR_INFO_SIZE -> sizeof(FILE_SYSTEM_ATTRIBUTE_INFO)
>>
>> Then move FILE_SYSTEM_ATTRIBUTE_INFO to common header file.
>>
>> Suggested-by: Namjae Jeon <linkinjeon@kernel.org>
>> Signed-off-by: ChenXiaoSong <chenxiaosong@kylinos.cn>
>> ---
>>   fs/smb/client/cifspdu.h    | 10 ----------
>>   fs/smb/client/smb2pdu.c    |  2 +-
>>   fs/smb/common/fscc.h       |  8 ++++++++
>>   fs/smb/server/smb2pdu.c    |  6 +++---
>>   fs/smb/server/smb_common.h |  7 -------
>>   5 files changed, 12 insertions(+), 21 deletions(-)
>>
>> diff --git a/fs/smb/client/cifspdu.h b/fs/smb/client/cifspdu.h
>> index d84e10b1477f..49f35cb3cf2e 100644
>> --- a/fs/smb/client/cifspdu.h
>> +++ b/fs/smb/client/cifspdu.h
>> @@ -2068,16 +2068,6 @@ typedef struct {
>>   #define FILE_PORTABLE_DEVICE                   0x00004000
>>   #define FILE_DEVICE_ALLOW_APPCONTAINER_TRAVERSAL 0x00020000
>>
>> -/* minimum includes first three fields, and empty FS Name */
>> -#define MIN_FS_ATTR_INFO_SIZE 12
>> -
>> -typedef struct {
>> -       __le32 Attributes;
>> -       __le32 MaxPathNameComponentLength;
>> -       __le32 FileSystemNameLen;
>> -       char FileSystemName[52]; /* do not have to save this - get subset? */
>> -} __attribute__((packed)) FILE_SYSTEM_ATTRIBUTE_INFO;
>> -
>>   /******************************************************************************/
>>   /* QueryFileInfo/QueryPathinfo (also for SetPath/SetFile) data buffer formats */
>>   /******************************************************************************/
>> diff --git a/fs/smb/client/smb2pdu.c b/fs/smb/client/smb2pdu.c
>> index 30c391424022..4ccc8d1e130d 100644
>> --- a/fs/smb/client/smb2pdu.c
>> +++ b/fs/smb/client/smb2pdu.c
>> @@ -5982,7 +5982,7 @@ SMB2_QFS_attr(const unsigned int xid, struct cifs_tcon *tcon,
>>                  min_len = sizeof(FILE_SYSTEM_DEVICE_INFO);
>>          } else if (level == FS_ATTRIBUTE_INFORMATION) {
>>                  max_len = sizeof(FILE_SYSTEM_ATTRIBUTE_INFO);
>> -               min_len = MIN_FS_ATTR_INFO_SIZE;
>> +               min_len = sizeof(FILE_SYSTEM_ATTRIBUTE_INFO);
> FILE_SYSTEM_ATTRIBUTE_INFO is being used elsewhere on the smb client,
> and there are cases where sizeof(FILE_SYSTEM_ATTRIBUTE_INFO) is being
> used. Will there really be no problems if we change it to flex-array?


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-11-15  8:07 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-13 13:32 [PATCH v7 0/2] smb: move duplicate definitions to common header file chenxiaosong.chenxiaosong
2025-11-13 13:32 ` [PATCH v7 1/2] smb: move CREATE_DURABLE_RECONN to common/smb2pdu.h chenxiaosong.chenxiaosong
2025-11-15  7:45   ` Namjae Jeon
2025-11-13 13:32 ` [PATCH v7 2/2] smb: move FILE_SYSTEM_ATTRIBUTE_INFO to common/fscc.h chenxiaosong.chenxiaosong
2025-11-15  7:41   ` Namjae Jeon
2025-11-15  8:06     ` ChenXiaoSong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).