From nobody Sat Feb 7 15:15:15 2026 Received: from out-178.mta1.migadu.com (out-178.mta1.migadu.com [95.215.58.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 851631F1505 for ; Mon, 27 Oct 2025 07:15:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549326; cv=none; b=lWtA71uIGrucclP7emS+IVwPBILqws7JVzf/7E1eXKhb25y7VAHwBB8KGdqLDkcVidMn2EXarde/7IDr9vmLdbtz5awKoI0KvFEhFUMEtDCbegPPdPRHS5x01cnflNlJMaCE1SXC/a0ZNhFdS8LWl+06Y6SFtLv1rK0oysqpm9I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549326; c=relaxed/simple; bh=zIRWibiZhPUpnVTkKvhhJN+GeSuM0gPtRAhRqpNWexI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GF+SDcQHad9mvjumM9eCmp5KiK/AYgWYStTMh2XDoRD7YKmlCrHS6rjEXGvf71tmv5J06cawueV5aiVFrdJLwd/dTSfE+zOqsumLPQkdNtq/pHLmHsl8aaqyaJwVfxiLJd7rxtpKTuz3deYqW4e9jxhY87wzdWw4acvmtJc0bZQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=Omy00Pdr; arc=none smtp.client-ip=95.215.58.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="Omy00Pdr" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1761549322; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Ch2Fe9q4Y/Ie+8Paoofms/GElrp+76BJQ26slsFp9P0=; b=Omy00Pdrfs8b8uTwx0buxe5qjgVO3sAThTaLt3nSook8tYaO7cDXbX3v4lEX6A35mPBax0 O/8JUhwXzKpCPdiGhdBZ+XCrf4YiKGoTojxSnWandlEVVs6uZfNt77qWN9FfJtq2uTQjEp J2TN0S8YjKzbMhCG1oxktbxxE/GIKxA= From: chenxiaosong.chenxiaosong@linux.dev To: sfrench@samba.org, smfrench@gmail.com, linkinjeon@kernel.org, linkinjeon@samba.org, christophe.jaillet@wanadoo.fr Cc: linux-cifs@vger.kernel.org, linux-kernel@vger.kernel.org, ZhangGuoDong , ChenXiaoSong Subject: [PATCH v4 01/24] smb: rename common/cifsglob.h to common/smbglob.h Date: Mon, 27 Oct 2025 15:12:53 +0800 Message-ID: <20251027071316.3468472-2-chenxiaosong.chenxiaosong@linux.dev> In-Reply-To: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> References: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" From: ZhangGuoDong "cifs" is a legacy name, rename it to "smbglob.h" according to Namjae's suggestions. Co-developed-by: ChenXiaoSong Signed-off-by: ChenXiaoSong Signed-off-by: ZhangGuoDong Suggested-by: Namjae Jeon --- fs/smb/client/cifsglob.h | 2 +- fs/smb/common/{cifsglob.h =3D> smbglob.h} | 6 +++--- fs/smb/server/smb_common.h | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) rename fs/smb/common/{cifsglob.h =3D> smbglob.h} (89%) diff --git a/fs/smb/client/cifsglob.h b/fs/smb/client/cifsglob.h index 203e2aaa3c25..8fd9aa7e2009 100644 --- a/fs/smb/client/cifsglob.h +++ b/fs/smb/client/cifsglob.h @@ -24,7 +24,7 @@ #include "cifsacl.h" #include #include -#include "../common/cifsglob.h" +#include "../common/smbglob.h" #include "../common/smb2pdu.h" #include "smb2pdu.h" #include diff --git a/fs/smb/common/cifsglob.h b/fs/smb/common/smbglob.h similarity index 89% rename from fs/smb/common/cifsglob.h rename to fs/smb/common/smbglob.h index 00fd215e3eb5..c51d227977c4 100644 --- a/fs/smb/common/cifsglob.h +++ b/fs/smb/common/smbglob.h @@ -6,8 +6,8 @@ * Jeremy Allison (jra@samba.org) * */ -#ifndef _COMMON_CIFS_GLOB_H -#define _COMMON_CIFS_GLOB_H +#ifndef _COMMON_SMB_GLOB_H +#define _COMMON_SMB_GLOB_H =20 static inline void inc_rfc1001_len(void *buf, int count) { @@ -27,4 +27,4 @@ static inline void inc_rfc1001_len(void *buf, int count) =20 #define CIFS_DEFAULT_IOSIZE (1024 * 1024) =20 -#endif /* _COMMON_CIFS_GLOB_H */ +#endif /* _COMMON_SMB_GLOB_H */ diff --git a/fs/smb/server/smb_common.h b/fs/smb/server/smb_common.h index 863716207a0d..910b9c3bd244 100644 --- a/fs/smb/server/smb_common.h +++ b/fs/smb/server/smb_common.h @@ -10,7 +10,7 @@ =20 #include "glob.h" #include "nterr.h" -#include "../common/cifsglob.h" +#include "../common/smbglob.h" #include "../common/smb2pdu.h" #include "smb2pdu.h" =20 --=20 2.43.0 From nobody Sat Feb 7 15:15:15 2026 Received: from out-170.mta1.migadu.com (out-170.mta1.migadu.com [95.215.58.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8CCFB2DCBEC for ; Mon, 27 Oct 2025 07:15:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549329; cv=none; b=lUqDBSbUTANd/jbGqlT8BJEYCLirBt+tODCPZ95Z+8qYUSmq8ufkiB50sTuJMkThkRMtTkQQYdwqw4g7Dl24FEbs8DL5G0d3ePIMdNd5/nTLEfDZxuVAkKI4JLR61CqB6KNPpfo2lPaHDt/+3M9AQYvvZsFmXUuwHn3+wtpCIFE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549329; c=relaxed/simple; bh=ikhOI17FZheUk2ACTmJwSE1faWAmEqY0h9MT0SkkjR0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cFc55Ug/AUG77zWO5N26weDigEpdYCDdw4R0aPjyaqCrkmF+XHhOqUYewx57bgpgzOt95uJN/y2FsVdf/HrlDUYV8v/GhetG/YAnQ+Fou+4E5DNESGDBPsBEZYKjfmTOHN2o25n10hNt/o4a1ZzXir+hIogPqoCDdlmk1S+5naE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=c+E94c/d; arc=none smtp.client-ip=95.215.58.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="c+E94c/d" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1761549325; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=xMyh505oqjZAWI90qrrrUNcVCrcJTNuZ0Q/7mQk4hUY=; b=c+E94c/dacWg6U0DbVrGrcn6rGcfSGweoN4NRkfXCMe3hjC3OVP0tUzdqo1ACDkq5TFLN6 l4ooXETZ1Z53Pfvcx0UZK304EozNbLEI/EDVuF1LzARwwp8Xvv4lDN6fkIEeVJknunzGhw ho2lS7UakJVEkYykPwYT6o2LiPa+wTM= From: chenxiaosong.chenxiaosong@linux.dev To: sfrench@samba.org, smfrench@gmail.com, linkinjeon@kernel.org, linkinjeon@samba.org, christophe.jaillet@wanadoo.fr Cc: linux-cifs@vger.kernel.org, linux-kernel@vger.kernel.org, ZhangGuoDong , ChenXiaoSong Subject: [PATCH v4 02/24] smb: move smb_version_values to common/smbglob.h Date: Mon, 27 Oct 2025 15:12:54 +0800 Message-ID: <20251027071316.3468472-3-chenxiaosong.chenxiaosong@linux.dev> In-Reply-To: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> References: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" From: ZhangGuoDong Merge the struct members of the server and the client: - req_capabilities: from client - header_preamble_size: from client - cap_unicode: from client - capabilities: from server, rename to req_capabilities - max_read_size: from server - max_write_size: from server - max_trans_size: from server - max_credits: from server - create_durable_size: from server - create_durable_v2_size: from server - create_mxac_size: from server - create_disk_id_size: from server - create_posix_size: from server Then move duplicate definitions to common header file. Co-developed-by: ChenXiaoSong Signed-off-by: ChenXiaoSong Signed-off-by: ZhangGuoDong --- fs/smb/client/cifsglob.h | 22 ---------------------- fs/smb/common/smbglob.h | 31 +++++++++++++++++++++++++++++++ fs/smb/server/smb2misc.c | 2 +- fs/smb/server/smb2ops.c | 32 ++++++++++++++++---------------- fs/smb/server/smb2pdu.c | 10 +++++----- fs/smb/server/smb_common.h | 29 ----------------------------- 6 files changed, 53 insertions(+), 73 deletions(-) diff --git a/fs/smb/client/cifsglob.h b/fs/smb/client/cifsglob.h index 8fd9aa7e2009..accca43f7af5 100644 --- a/fs/smb/client/cifsglob.h +++ b/fs/smb/client/cifsglob.h @@ -633,28 +633,6 @@ struct smb_version_operations { struct kvec *xattr_iov); }; =20 -struct smb_version_values { - char *version_string; - __u16 protocol_id; - __u32 req_capabilities; - __u32 large_lock_type; - __u32 exclusive_lock_type; - __u32 shared_lock_type; - __u32 unlock_lock_type; - size_t header_preamble_size; - size_t header_size; - size_t max_header_size; - size_t read_rsp_size; - __le16 lock_cmd; - unsigned int cap_unix; - unsigned int cap_nt_find; - unsigned int cap_large_files; - unsigned int cap_unicode; - __u16 signing_enabled; - __u16 signing_required; - size_t create_lease_size; -}; - #define HEADER_SIZE(server) (server->vals->header_size) #define MAX_HEADER_SIZE(server) (server->vals->max_header_size) #define HEADER_PREAMBLE_SIZE(server) (server->vals->header_preamble_size) diff --git a/fs/smb/common/smbglob.h b/fs/smb/common/smbglob.h index c51d227977c4..84aa6826c3ea 100644 --- a/fs/smb/common/smbglob.h +++ b/fs/smb/common/smbglob.h @@ -9,6 +9,37 @@ #ifndef _COMMON_SMB_GLOB_H #define _COMMON_SMB_GLOB_H =20 +struct smb_version_values { + char *version_string; + __u16 protocol_id; + __le16 lock_cmd; + __u32 req_capabilities; + __u32 max_read_size; + __u32 max_write_size; + __u32 max_trans_size; + __u32 max_credits; + __u32 large_lock_type; + __u32 exclusive_lock_type; + __u32 shared_lock_type; + __u32 unlock_lock_type; + size_t header_preamble_size; + size_t header_size; + size_t max_header_size; + size_t read_rsp_size; + unsigned int cap_unix; + unsigned int cap_nt_find; + unsigned int cap_large_files; + unsigned int cap_unicode; + __u16 signing_enabled; + __u16 signing_required; + size_t create_lease_size; + size_t create_durable_size; + size_t create_durable_v2_size; + size_t create_mxac_size; + size_t create_disk_id_size; + size_t create_posix_size; +}; + static inline void inc_rfc1001_len(void *buf, int count) { be32_add_cpu((__be32 *)buf, count); diff --git a/fs/smb/server/smb2misc.c b/fs/smb/server/smb2misc.c index ae501024665e..67a2d7a793f6 100644 --- a/fs/smb/server/smb2misc.c +++ b/fs/smb/server/smb2misc.c @@ -460,7 +460,7 @@ int ksmbd_smb2_check_message(struct ksmbd_work *work) } =20 validate_credit: - if ((work->conn->vals->capabilities & SMB2_GLOBAL_CAP_LARGE_MTU) && + if ((work->conn->vals->req_capabilities & SMB2_GLOBAL_CAP_LARGE_MTU) && smb2_validate_credit_charge(work->conn, hdr)) return 1; =20 diff --git a/fs/smb/server/smb2ops.c b/fs/smb/server/smb2ops.c index 606aa3c5189a..bcf05caa2304 100644 --- a/fs/smb/server/smb2ops.c +++ b/fs/smb/server/smb2ops.c @@ -15,7 +15,7 @@ static struct smb_version_values smb21_server_values =3D { .version_string =3D SMB21_VERSION_STRING, .protocol_id =3D SMB21_PROT_ID, - .capabilities =3D SMB2_GLOBAL_CAP_LARGE_MTU, + .req_capabilities =3D SMB2_GLOBAL_CAP_LARGE_MTU, .max_read_size =3D SMB21_DEFAULT_IOSIZE, .max_write_size =3D SMB21_DEFAULT_IOSIZE, .max_trans_size =3D SMB21_DEFAULT_IOSIZE, @@ -41,7 +41,7 @@ static struct smb_version_values smb21_server_values =3D { static struct smb_version_values smb30_server_values =3D { .version_string =3D SMB30_VERSION_STRING, .protocol_id =3D SMB30_PROT_ID, - .capabilities =3D SMB2_GLOBAL_CAP_LARGE_MTU, + .req_capabilities =3D SMB2_GLOBAL_CAP_LARGE_MTU, .max_read_size =3D SMB3_DEFAULT_IOSIZE, .max_write_size =3D SMB3_DEFAULT_IOSIZE, .max_trans_size =3D SMB3_DEFAULT_TRANS_SIZE, @@ -68,7 +68,7 @@ static struct smb_version_values smb30_server_values =3D { static struct smb_version_values smb302_server_values =3D { .version_string =3D SMB302_VERSION_STRING, .protocol_id =3D SMB302_PROT_ID, - .capabilities =3D SMB2_GLOBAL_CAP_LARGE_MTU, + .req_capabilities =3D SMB2_GLOBAL_CAP_LARGE_MTU, .max_read_size =3D SMB3_DEFAULT_IOSIZE, .max_write_size =3D SMB3_DEFAULT_IOSIZE, .max_trans_size =3D SMB3_DEFAULT_TRANS_SIZE, @@ -95,7 +95,7 @@ static struct smb_version_values smb302_server_values =3D= { static struct smb_version_values smb311_server_values =3D { .version_string =3D SMB311_VERSION_STRING, .protocol_id =3D SMB311_PROT_ID, - .capabilities =3D SMB2_GLOBAL_CAP_LARGE_MTU, + .req_capabilities =3D SMB2_GLOBAL_CAP_LARGE_MTU, .max_read_size =3D SMB3_DEFAULT_IOSIZE, .max_write_size =3D SMB3_DEFAULT_IOSIZE, .max_trans_size =3D SMB3_DEFAULT_TRANS_SIZE, @@ -204,7 +204,7 @@ void init_smb2_1_server(struct ksmbd_conn *conn) conn->signing_algorithm =3D SIGNING_ALG_HMAC_SHA256_LE; =20 if (server_conf.flags & KSMBD_GLOBAL_FLAG_SMB2_LEASES) - conn->vals->capabilities |=3D SMB2_GLOBAL_CAP_LEASING; + conn->vals->req_capabilities |=3D SMB2_GLOBAL_CAP_LEASING; } =20 /** @@ -221,20 +221,20 @@ void init_smb3_0_server(struct ksmbd_conn *conn) conn->signing_algorithm =3D SIGNING_ALG_AES_CMAC_LE; =20 if (server_conf.flags & KSMBD_GLOBAL_FLAG_SMB2_LEASES) - conn->vals->capabilities |=3D SMB2_GLOBAL_CAP_LEASING | + conn->vals->req_capabilities |=3D SMB2_GLOBAL_CAP_LEASING | SMB2_GLOBAL_CAP_DIRECTORY_LEASING; =20 if (server_conf.flags & KSMBD_GLOBAL_FLAG_SMB2_ENCRYPTION && conn->cli_cap & SMB2_GLOBAL_CAP_ENCRYPTION) - conn->vals->capabilities |=3D SMB2_GLOBAL_CAP_ENCRYPTION; + conn->vals->req_capabilities |=3D SMB2_GLOBAL_CAP_ENCRYPTION; =20 if (server_conf.flags & KSMBD_GLOBAL_FLAG_SMB2_ENCRYPTION || (!(server_conf.flags & KSMBD_GLOBAL_FLAG_SMB2_ENCRYPTION_OFF) && conn->cli_cap & SMB2_GLOBAL_CAP_ENCRYPTION)) - conn->vals->capabilities |=3D SMB2_GLOBAL_CAP_ENCRYPTION; + conn->vals->req_capabilities |=3D SMB2_GLOBAL_CAP_ENCRYPTION; =20 if (server_conf.flags & KSMBD_GLOBAL_FLAG_SMB3_MULTICHANNEL) - conn->vals->capabilities |=3D SMB2_GLOBAL_CAP_MULTI_CHANNEL; + conn->vals->req_capabilities |=3D SMB2_GLOBAL_CAP_MULTI_CHANNEL; } =20 /** @@ -251,19 +251,19 @@ void init_smb3_02_server(struct ksmbd_conn *conn) conn->signing_algorithm =3D SIGNING_ALG_AES_CMAC_LE; =20 if (server_conf.flags & KSMBD_GLOBAL_FLAG_SMB2_LEASES) - conn->vals->capabilities |=3D SMB2_GLOBAL_CAP_LEASING | + conn->vals->req_capabilities |=3D SMB2_GLOBAL_CAP_LEASING | SMB2_GLOBAL_CAP_DIRECTORY_LEASING; =20 if (server_conf.flags & KSMBD_GLOBAL_FLAG_SMB2_ENCRYPTION || (!(server_conf.flags & KSMBD_GLOBAL_FLAG_SMB2_ENCRYPTION_OFF) && conn->cli_cap & SMB2_GLOBAL_CAP_ENCRYPTION)) - conn->vals->capabilities |=3D SMB2_GLOBAL_CAP_ENCRYPTION; + conn->vals->req_capabilities |=3D SMB2_GLOBAL_CAP_ENCRYPTION; =20 if (server_conf.flags & KSMBD_GLOBAL_FLAG_SMB3_MULTICHANNEL) - conn->vals->capabilities |=3D SMB2_GLOBAL_CAP_MULTI_CHANNEL; + conn->vals->req_capabilities |=3D SMB2_GLOBAL_CAP_MULTI_CHANNEL; =20 if (server_conf.flags & KSMBD_GLOBAL_FLAG_DURABLE_HANDLE) - conn->vals->capabilities |=3D SMB2_GLOBAL_CAP_PERSISTENT_HANDLES; + conn->vals->req_capabilities |=3D SMB2_GLOBAL_CAP_PERSISTENT_HANDLES; } =20 /** @@ -280,14 +280,14 @@ int init_smb3_11_server(struct ksmbd_conn *conn) conn->signing_algorithm =3D SIGNING_ALG_AES_CMAC_LE; =20 if (server_conf.flags & KSMBD_GLOBAL_FLAG_SMB2_LEASES) - conn->vals->capabilities |=3D SMB2_GLOBAL_CAP_LEASING | + conn->vals->req_capabilities |=3D SMB2_GLOBAL_CAP_LEASING | SMB2_GLOBAL_CAP_DIRECTORY_LEASING; =20 if (server_conf.flags & KSMBD_GLOBAL_FLAG_SMB3_MULTICHANNEL) - conn->vals->capabilities |=3D SMB2_GLOBAL_CAP_MULTI_CHANNEL; + conn->vals->req_capabilities |=3D SMB2_GLOBAL_CAP_MULTI_CHANNEL; =20 if (server_conf.flags & KSMBD_GLOBAL_FLAG_DURABLE_HANDLE) - conn->vals->capabilities |=3D SMB2_GLOBAL_CAP_PERSISTENT_HANDLES; + conn->vals->req_capabilities |=3D SMB2_GLOBAL_CAP_PERSISTENT_HANDLES; =20 INIT_LIST_HEAD(&conn->preauth_sess_table); return 0; diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c index f901ae18e68a..2c435836e005 100644 --- a/fs/smb/server/smb2pdu.c +++ b/fs/smb/server/smb2pdu.c @@ -282,7 +282,7 @@ int init_smb2_neg_rsp(struct ksmbd_work *work) /* Not setting conn guid rsp->ServerGUID, as it * not used by client for identifying connection */ - rsp->Capabilities =3D cpu_to_le32(conn->vals->capabilities); + rsp->Capabilities =3D cpu_to_le32(conn->vals->req_capabilities); /* Default Max Message Size till SMB2.0, 64K*/ rsp->MaxTransactSize =3D cpu_to_le32(conn->vals->max_trans_size); rsp->MaxReadSize =3D cpu_to_le32(conn->vals->max_read_size); @@ -956,7 +956,7 @@ bool smb3_encryption_negotiated(struct ksmbd_conn *conn) * SMB 3.0 and 3.0.2 dialects use the SMB2_GLOBAL_CAP_ENCRYPTION flag. * SMB 3.1.1 uses the cipher_type field. */ - return (conn->vals->capabilities & SMB2_GLOBAL_CAP_ENCRYPTION) || + return (conn->vals->req_capabilities & SMB2_GLOBAL_CAP_ENCRYPTION) || conn->cipher_type; } =20 @@ -1210,7 +1210,7 @@ int smb2_handle_negotiate(struct ksmbd_work *work) rc =3D -EINVAL; goto err_out; } - rsp->Capabilities =3D cpu_to_le32(conn->vals->capabilities); + rsp->Capabilities =3D cpu_to_le32(conn->vals->req_capabilities); =20 /* For stats */ conn->connection_type =3D conn->dialect; @@ -3474,7 +3474,7 @@ int smb2_open(struct ksmbd_work *work) share_ret =3D ksmbd_smb_check_shared_mode(fp->filp, fp); if (!test_share_config_flag(work->tcon->share_conf, KSMBD_SHARE_FLAG_OPLO= CKS) || (req_op_level =3D=3D SMB2_OPLOCK_LEVEL_LEASE && - !(conn->vals->capabilities & SMB2_GLOBAL_CAP_LEASING))) { + !(conn->vals->req_capabilities & SMB2_GLOBAL_CAP_LEASING))) { if (share_ret < 0 && !S_ISDIR(file_inode(fp->filp)->i_mode)) { rc =3D share_ret; goto err_out1; @@ -7984,7 +7984,7 @@ static int fsctl_validate_negotiate_info(struct ksmbd= _conn *conn, goto err_out; } =20 - neg_rsp->Capabilities =3D cpu_to_le32(conn->vals->capabilities); + neg_rsp->Capabilities =3D cpu_to_le32(conn->vals->req_capabilities); memset(neg_rsp->Guid, 0, SMB2_CLIENT_GUID_SIZE); neg_rsp->SecurityMode =3D cpu_to_le16(conn->srv_sec_mode); neg_rsp->Dialect =3D cpu_to_le16(conn->dialect); diff --git a/fs/smb/server/smb_common.h b/fs/smb/server/smb_common.h index 910b9c3bd244..50235c7cca57 100644 --- a/fs/smb/server/smb_common.h +++ b/fs/smb/server/smb_common.h @@ -338,35 +338,6 @@ struct file_id_full_dir_info { char FileName[]; } __packed; /* level 0x105 FF rsp data */ =20 -struct smb_version_values { - char *version_string; - __u16 protocol_id; - __le16 lock_cmd; - __u32 capabilities; - __u32 max_read_size; - __u32 max_write_size; - __u32 max_trans_size; - __u32 max_credits; - __u32 large_lock_type; - __u32 exclusive_lock_type; - __u32 shared_lock_type; - __u32 unlock_lock_type; - size_t header_size; - size_t max_header_size; - size_t read_rsp_size; - unsigned int cap_unix; - unsigned int cap_nt_find; - unsigned int cap_large_files; - __u16 signing_enabled; - __u16 signing_required; - size_t create_lease_size; - size_t create_durable_size; - size_t create_durable_v2_size; - size_t create_mxac_size; - size_t create_disk_id_size; - size_t create_posix_size; -}; - struct filesystem_posix_info { /* For undefined recommended transfer size return -1 in that field */ __le32 OptimalTransferSize; /* bsize on some os, iosize on other os */ --=20 2.43.0 From nobody Sat Feb 7 15:15:15 2026 Received: from out-176.mta1.migadu.com (out-176.mta1.migadu.com [95.215.58.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 529C32DCF6F for ; Mon, 27 Oct 2025 07:15:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549331; cv=none; b=igT91qmkjDFiQR4xrAfP6noF2alNzSaXVuKDvobSGqkyOu2+RsVFN/oytU0MzxKqxyBUWR5L3aBU7eNPS82wUWEfAsUbh/jDSIjASvEeCOlnzi7JOPUkjkHK+3QqNGz9GJbvBkIPJiHagrkYn14xL6DkhzLxUgeau9f403YlwIk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549331; c=relaxed/simple; bh=1xqSfIjhARIvhD1NRTu1KpharM50stBLYEec9APWDUw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=prorbZds2+3Yvh894a01lIDZsLcNgjqf7JXkw4jMYkojCwuSR86er03FtMhIY27UicqiR33nn8Y2hox3eg4G7mlTg529BTRWApwyv3PcmMk2K7jvpZj7MqffllnbomcAe1mjzT1k/z2ti6Ca/jsS4lGp6Jofcdh7ivFwgeOKJno= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=GFxIemBq; arc=none smtp.client-ip=95.215.58.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="GFxIemBq" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1761549327; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Bklfkdd+gUBn/KFfd53LyvTdVPQUPZ3+XSb7opj3rSA=; b=GFxIemBqpVVhSqYyRlmCkb+QgrP/KSM3t3oL3/8Xhxiu4rlQpkHBqIRw2bDpQr+KBec6gv dNxF+CG+K8uHOF64bFFDk/I6QvHgMC1WyEByds/nqokRVx9hsN0Iv8RM2cVEMgQ+1l7N/N U/QT2gy8w6I0S+1rF7Cr10HpJL5UbA0= From: chenxiaosong.chenxiaosong@linux.dev To: sfrench@samba.org, smfrench@gmail.com, linkinjeon@kernel.org, linkinjeon@samba.org, christophe.jaillet@wanadoo.fr Cc: linux-cifs@vger.kernel.org, linux-kernel@vger.kernel.org, ZhangGuoDong , ChenXiaoSong Subject: [PATCH v4 03/24] smb: move get_rfc1002_len() to common/smbglob.h Date: Mon, 27 Oct 2025 15:12:55 +0800 Message-ID: <20251027071316.3468472-4-chenxiaosong.chenxiaosong@linux.dev> In-Reply-To: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> References: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" From: ZhangGuoDong Rename get_rfc1002_length() to get_rfc1002_len(), then move duplicate definitions to common header file. Co-developed-by: ChenXiaoSong Signed-off-by: ChenXiaoSong Signed-off-by: ZhangGuoDong --- fs/smb/client/cifsglob.h | 6 ------ fs/smb/client/cifssmb.c | 6 +++--- fs/smb/client/cifstransport.c | 8 ++++---- fs/smb/client/connect.c | 2 +- fs/smb/common/smbglob.h | 5 +++++ fs/smb/server/smb_common.h | 5 ----- 6 files changed, 13 insertions(+), 19 deletions(-) diff --git a/fs/smb/client/cifsglob.h b/fs/smb/client/cifsglob.h index accca43f7af5..4d0aca8097c1 100644 --- a/fs/smb/client/cifsglob.h +++ b/fs/smb/client/cifsglob.h @@ -670,12 +670,6 @@ struct cifs_mnt_data { int flags; }; =20 -static inline unsigned int -get_rfc1002_length(void *buf) -{ - return be32_to_cpu(*((__be32 *)buf)) & 0xffffff; -} - struct TCP_Server_Info { struct list_head tcp_ses_list; struct list_head smb_ses_list; diff --git a/fs/smb/client/cifssmb.c b/fs/smb/client/cifssmb.c index 7da194f29fef..703c5a8ed924 100644 --- a/fs/smb/client/cifssmb.c +++ b/fs/smb/client/cifssmb.c @@ -614,7 +614,7 @@ CIFSSMBEcho(struct TCP_Server_Info *server) =20 iov[0].iov_len =3D 4; iov[0].iov_base =3D smb; - iov[1].iov_len =3D get_rfc1002_length(smb); + iov[1].iov_len =3D get_rfc1002_len(smb); iov[1].iov_base =3D (char *)smb + 4; =20 rc =3D cifs_call_async(server, &rqst, NULL, cifs_echo_callback, NULL, @@ -1443,7 +1443,7 @@ cifs_async_readv(struct cifs_io_subrequest *rdata) rdata->iov[0].iov_base =3D smb; rdata->iov[0].iov_len =3D 4; rdata->iov[1].iov_base =3D (char *)smb + 4; - rdata->iov[1].iov_len =3D get_rfc1002_length(smb); + rdata->iov[1].iov_len =3D get_rfc1002_len(smb); =20 rc =3D cifs_call_async(tcon->ses->server, &rqst, cifs_readv_receive, cifs_readv_callback, NULL, rdata, 0, NULL); @@ -1808,7 +1808,7 @@ cifs_async_writev(struct cifs_io_subrequest *wdata) /* 4 for RFC1001 length + 1 for BCC */ iov[0].iov_len =3D 4; iov[0].iov_base =3D smb; - iov[1].iov_len =3D get_rfc1002_length(smb) + 1; + iov[1].iov_len =3D get_rfc1002_len(smb) + 1; iov[1].iov_base =3D (char *)smb + 4; =20 rqst.rq_iov =3D iov; diff --git a/fs/smb/client/cifstransport.c b/fs/smb/client/cifstransport.c index e98b95eff8c9..4c4f5befb6d3 100644 --- a/fs/smb/client/cifstransport.c +++ b/fs/smb/client/cifstransport.c @@ -165,7 +165,7 @@ SendReceiveNoRsp(const unsigned int xid, struct cifs_se= s *ses, int resp_buf_type; =20 iov[0].iov_base =3D in_buf; - iov[0].iov_len =3D get_rfc1002_length(in_buf) + 4; + iov[0].iov_len =3D get_rfc1002_len(in_buf) + 4; flags |=3D CIFS_NO_RSP_BUF; rc =3D SendReceive2(xid, ses, iov, 1, &resp_buf_type, flags, &rsp_iov); cifs_dbg(NOISY, "SendRcvNoRsp flags %d rc %d\n", flags, rc); @@ -177,7 +177,7 @@ int cifs_check_receive(struct mid_q_entry *mid, struct TCP_Server_Info *server, bool log_error) { - unsigned int len =3D get_rfc1002_length(mid->resp_buf) + 4; + unsigned int len =3D get_rfc1002_len(mid->resp_buf) + 4; =20 dump_smb(mid->resp_buf, min_t(u32, 92, len)); =20 @@ -370,7 +370,7 @@ SendReceive(const unsigned int xid, struct cifs_ses *se= s, goto out; } =20 - *pbytes_returned =3D get_rfc1002_length(midQ->resp_buf); + *pbytes_returned =3D get_rfc1002_len(midQ->resp_buf); memcpy(out_buf, midQ->resp_buf, *pbytes_returned + 4); rc =3D cifs_check_receive(midQ, server, 0); out: @@ -554,7 +554,7 @@ SendReceiveBlockingLock(const unsigned int xid, struct = cifs_tcon *tcon, goto out; } =20 - *pbytes_returned =3D get_rfc1002_length(midQ->resp_buf); + *pbytes_returned =3D get_rfc1002_len(midQ->resp_buf); memcpy(out_buf, midQ->resp_buf, *pbytes_returned + 4); rc =3D cifs_check_receive(midQ, server, 0); out: diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c index dd12f3eb61dc..22f37ae7a66a 100644 --- a/fs/smb/client/connect.c +++ b/fs/smb/client/connect.c @@ -1299,7 +1299,7 @@ cifs_demultiplex_thread(void *p) * The right amount was read from socket - 4 bytes, * so we can now interpret the length field. */ - pdu_length =3D get_rfc1002_length(buf); + pdu_length =3D get_rfc1002_len(buf); =20 cifs_dbg(FYI, "RFC1002 header 0x%x\n", pdu_length); if (!is_smb_response(server, buf[0])) diff --git a/fs/smb/common/smbglob.h b/fs/smb/common/smbglob.h index 84aa6826c3ea..b258199b0d75 100644 --- a/fs/smb/common/smbglob.h +++ b/fs/smb/common/smbglob.h @@ -40,6 +40,11 @@ struct smb_version_values { size_t create_posix_size; }; =20 +static inline unsigned int get_rfc1002_len(void *buf) +{ + return be32_to_cpu(*((__be32 *)buf)) & 0xffffff; +} + static inline void inc_rfc1001_len(void *buf, int count) { be32_add_cpu((__be32 *)buf, count); diff --git a/fs/smb/server/smb_common.h b/fs/smb/server/smb_common.h index 50235c7cca57..f126c61c7275 100644 --- a/fs/smb/server/smb_common.h +++ b/fs/smb/server/smb_common.h @@ -423,9 +423,4 @@ unsigned int ksmbd_server_side_copy_max_chunk_size(void= ); unsigned int ksmbd_server_side_copy_max_total_size(void); bool is_asterisk(char *p); __le32 smb_map_generic_desired_access(__le32 daccess); - -static inline unsigned int get_rfc1002_len(void *buf) -{ - return be32_to_cpu(*((__be32 *)buf)) & 0xffffff; -} #endif /* __SMB_COMMON_H__ */ --=20 2.43.0 From nobody Sat Feb 7 15:15:15 2026 Received: from out-181.mta1.migadu.com (out-181.mta1.migadu.com [95.215.58.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 93C712DE1FA for ; Mon, 27 Oct 2025 07:15:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549333; cv=none; b=jN4KfgWVDD3DNUKDzM+1S5m6vVt28ZoyHUKXUcKRqma9fYLOy8NMN8ThPW0EmADjnRfcycQ18mfbwYuuDrk1q6spnAu36UlzFn2JXd5ZYA8TuNmvD9UzClNM+JMyw32yEeVsP703JzMi/zgzro5SAHYENTN2jsWL+hNhpcp3ufI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549333; c=relaxed/simple; bh=GI8sZqXt3KCf55k3GW8kAFhfrSAAlqp6DwxYahiWZR0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=s2BknW7UXt4EXk/CTJTSs039L3jyDxknysRUU9sgQR8nRkoTJ34rE0DiQ5Lk8CaXhUTLcrECmhrsYig0XX63yS5pyO7grVnYW+kRqTJfPuO79ynEHFyJ0IK9UFeFro+fckq5QX4bs0eUGxK5DdK4NFr5qTmiT+TrDNn4ufjBAZ4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=hMAMY1ca; arc=none smtp.client-ip=95.215.58.181 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="hMAMY1ca" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1761549329; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=o+zbYQSRYbpuT9HfdZ1yegnfGPQwfg9RHt4r+8oTMtI=; b=hMAMY1cahDZgyg1+Rv8G4lE+ytC2BOtz+S6sdcQpHkG3pJxaSVIXxsu/v8Jw/aAbC1K1lr BAi1fxFT4rMM6EQvCYBwaSl27rSTehlFsBmCk3ijpzCoinknp3DYfzSuKWyFn2ty60Bmdv Dq1yBTAYxo5cugpKn0ZTB1w30BH6U/0= From: chenxiaosong.chenxiaosong@linux.dev To: sfrench@samba.org, smfrench@gmail.com, linkinjeon@kernel.org, linkinjeon@samba.org, christophe.jaillet@wanadoo.fr Cc: linux-cifs@vger.kernel.org, linux-kernel@vger.kernel.org, ZhangGuoDong , ChenXiaoSong Subject: [PATCH v4 04/24] smb: move SMB1_PROTO_NUMBER to common/smbglob.h Date: Mon, 27 Oct 2025 15:12:56 +0800 Message-ID: <20251027071316.3468472-5-chenxiaosong.chenxiaosong@linux.dev> In-Reply-To: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> References: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" From: ZhangGuoDong Replace the constant of client with SMB1_PROTO_NUMBER, then move the macro definition from server/smb_common.h to common/smbglob.h. Co-developed-by: ChenXiaoSong Signed-off-by: ChenXiaoSong Signed-off-by: ZhangGuoDong Suggested-by: Christophe JAILLET --- fs/smb/client/misc.c | 2 +- fs/smb/common/smbglob.h | 2 ++ fs/smb/server/smb_common.h | 1 - 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/fs/smb/client/misc.c b/fs/smb/client/misc.c index e10123d8cd7d..340c44dc7b5b 100644 --- a/fs/smb/client/misc.c +++ b/fs/smb/client/misc.c @@ -318,7 +318,7 @@ static int check_smb_hdr(struct smb_hdr *smb) { /* does it have the right SMB "signature" ? */ - if (*(__le32 *) smb->Protocol !=3D cpu_to_le32(0x424d53ff)) { + if (*(__le32 *) smb->Protocol !=3D SMB1_PROTO_NUMBER) { cifs_dbg(VFS, "Bad protocol string signature header 0x%x\n", *(unsigned int *)smb->Protocol); return 1; diff --git a/fs/smb/common/smbglob.h b/fs/smb/common/smbglob.h index b258199b0d75..fa3d30dc6022 100644 --- a/fs/smb/common/smbglob.h +++ b/fs/smb/common/smbglob.h @@ -9,6 +9,8 @@ #ifndef _COMMON_SMB_GLOB_H #define _COMMON_SMB_GLOB_H =20 +#define SMB1_PROTO_NUMBER cpu_to_le32(0x424d53ff) + struct smb_version_values { char *version_string; __u16 protocol_id; diff --git a/fs/smb/server/smb_common.h b/fs/smb/server/smb_common.h index f126c61c7275..c3258a3231e4 100644 --- a/fs/smb/server/smb_common.h +++ b/fs/smb/server/smb_common.h @@ -151,7 +151,6 @@ FILE_EXECUTE | FILE_DELETE_CHILD | \ FILE_READ_ATTRIBUTES | FILE_WRITE_ATTRIBUTES) =20 -#define SMB1_PROTO_NUMBER cpu_to_le32(0x424d53ff) #define SMB_COM_NEGOTIATE 0x72 #define SMB1_CLIENT_GUID_SIZE (16) =20 --=20 2.43.0 From nobody Sat Feb 7 15:15:15 2026 Received: from out-170.mta1.migadu.com (out-170.mta1.migadu.com [95.215.58.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DF9BE2DE719 for ; Mon, 27 Oct 2025 07:15:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549336; cv=none; b=HBBtcFIKPqKGVKDESseQoQ/RjVlSPlVFOt7NKWU6+HQNBvt5vej5vw1VysmpDeKBvxSR+Dq8h3gwurcpnwdM2UX5ioOTAgmmNunCxO08X6bI/J7J/NRfDrRKrhtbjdY44rFTIe/SQdD/mo5l1PKCmnPfhxjqkvEuiY9U8JT/F60= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549336; c=relaxed/simple; bh=4229m4oenia8xj+KWhVtQdHQV4u+dJEckEUfu6Kwj5Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Vqn0f0O9Anpe/gYGYahvcWQZKoUiuPFoIyO2E5tSc9ahCDQJbHdCLXUzi8JD+6JZuhPPPkVKNNv/EmN5jAmFlZrqUEigK6InuLRBMUVkChHsfj+qs2VsCwJrWsD7+HBEOFcjpeIMkzjf/UlswAOCD8MCeciyLTJsmMLKUtXhxvc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=TUzgJNx6; arc=none smtp.client-ip=95.215.58.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="TUzgJNx6" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1761549332; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=x5zTgeEVkRgpfrWr7cmGHqdr2EGWIIqfBFv5OAflbkg=; b=TUzgJNx6mkjN0XNjYpzyqdA5MzKsA7NPJwzdqi7OSMiiNsYn8xbu/lAvHWtiDmJXNqlb6A /+JNHMurGVQh+AA4aq2PGiucJq2ckRwFo0NKvzzqWh/RU1w+pzN1K5+IamH9Z22lgdxlYm tyRY9L8nGqM9H2Hz9+RTt1dYq8eHDo0= From: chenxiaosong.chenxiaosong@linux.dev To: sfrench@samba.org, smfrench@gmail.com, linkinjeon@kernel.org, linkinjeon@samba.org, christophe.jaillet@wanadoo.fr Cc: linux-cifs@vger.kernel.org, linux-kernel@vger.kernel.org, ChenXiaoSong Subject: [PATCH v4 05/24] smb: move some duplicate definitions to common/smb1pdu.h Date: Mon, 27 Oct 2025 15:12:57 +0800 Message-ID: <20251027071316.3468472-6-chenxiaosong.chenxiaosong@linux.dev> In-Reply-To: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> References: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" From: ChenXiaoSong In order to maintain the code more easily, move duplicate definitions to new common header file. Signed-off-by: ChenXiaoSong Suggested-by: Namjae Jeon --- fs/smb/client/cifspdu.h | 152 +--------------------------------- fs/smb/common/smb1pdu.h | 163 +++++++++++++++++++++++++++++++++++++ fs/smb/server/smb_common.h | 79 +----------------- 3 files changed, 165 insertions(+), 229 deletions(-) create mode 100644 fs/smb/common/smb1pdu.h diff --git a/fs/smb/client/cifspdu.h b/fs/smb/client/cifspdu.h index d9cf7db0ac35..86167875574c 100644 --- a/fs/smb/client/cifspdu.h +++ b/fs/smb/client/cifspdu.h @@ -12,44 +12,12 @@ #include #include #include "../common/smbfsctl.h" +#include "../common/smb1pdu.h" =20 #define CIFS_PROT 0 #define POSIX_PROT (CIFS_PROT+1) #define BAD_PROT 0xFFFF =20 -/* SMB command codes: - * Note some commands have minimal (wct=3D0,bcc=3D0), or uninteresting, re= sponses - * (ie which include no useful data other than the SMB error code itself). - * This can allow us to avoid response buffer allocations and copy in some= cases - */ -#define SMB_COM_CREATE_DIRECTORY 0x00 /* trivial response */ -#define SMB_COM_DELETE_DIRECTORY 0x01 /* trivial response */ -#define SMB_COM_CLOSE 0x04 /* triv req/rsp, timestamp igno= red */ -#define SMB_COM_FLUSH 0x05 /* triv req/rsp */ -#define SMB_COM_DELETE 0x06 /* trivial response */ -#define SMB_COM_RENAME 0x07 /* trivial response */ -#define SMB_COM_QUERY_INFORMATION 0x08 /* aka getattr */ -#define SMB_COM_SETATTR 0x09 /* trivial response */ -#define SMB_COM_LOCKING_ANDX 0x24 /* trivial response */ -#define SMB_COM_COPY 0x29 /* trivial rsp, fail filename i= gnrd*/ -#define SMB_COM_ECHO 0x2B /* echo request */ -#define SMB_COM_OPEN_ANDX 0x2D /* Legacy open for old servers = */ -#define SMB_COM_READ_ANDX 0x2E -#define SMB_COM_WRITE_ANDX 0x2F -#define SMB_COM_TRANSACTION2 0x32 -#define SMB_COM_TRANSACTION2_SECONDARY 0x33 -#define SMB_COM_FIND_CLOSE2 0x34 /* trivial response */ -#define SMB_COM_TREE_DISCONNECT 0x71 /* trivial response */ -#define SMB_COM_NEGOTIATE 0x72 -#define SMB_COM_SESSION_SETUP_ANDX 0x73 -#define SMB_COM_LOGOFF_ANDX 0x74 /* trivial response */ -#define SMB_COM_TREE_CONNECT_ANDX 0x75 -#define SMB_COM_NT_TRANSACT 0xA0 -#define SMB_COM_NT_TRANSACT_SECONDARY 0xA1 -#define SMB_COM_NT_CREATE_ANDX 0xA2 -#define SMB_COM_NT_CANCEL 0xA4 /* no response */ -#define SMB_COM_NT_RENAME 0xA5 /* trivial response */ - /* Transact2 subcommand codes */ #define TRANS2_OPEN 0x00 #define TRANS2_FIND_FIRST 0x01 @@ -86,7 +54,6 @@ #define NT_TRANSACT_GET_USER_QUOTA 0x07 #define NT_TRANSACT_SET_USER_QUOTA 0x08 =20 -#define MAX_CIFS_SMALL_BUFFER_SIZE 448 /* big enough for most */ /* future chained NTCreateXReadX bigger, but for time being NTCreateX bigg= est */ /* among the requests (NTCreateX response is bigger with wct of 34) */ #define MAX_CIFS_HDR_SIZE 0x58 /* 4 len + 32 hdr + (2*24 wct) + 2 bct + 2 = pad */ @@ -150,36 +117,6 @@ #define SMBOPEN_OTRUNC 0x0002 #define SMBOPEN_OAPPEND 0x0001 =20 -/* - * SMB flag definitions - */ -#define SMBFLG_EXTD_LOCK 0x01 /* server supports lock-read write-unlock sm= b */ -#define SMBFLG_RCV_POSTED 0x02 /* obsolete */ -#define SMBFLG_RSVD 0x04 -#define SMBFLG_CASELESS 0x08 /* all pathnames treated as caseless (off - implies case sensitive file handling request) */ -#define SMBFLG_CANONICAL_PATH_FORMAT 0x10 /* obsolete */ -#define SMBFLG_OLD_OPLOCK 0x20 /* obsolete */ -#define SMBFLG_OLD_OPLOCK_NOTIFY 0x40 /* obsolete */ -#define SMBFLG_RESPONSE 0x80 /* this PDU is a response from server */ - -/* - * SMB flag2 definitions - */ -#define SMBFLG2_KNOWS_LONG_NAMES cpu_to_le16(1) /* can send long (non-8.3) - path names in response */ -#define SMBFLG2_KNOWS_EAS cpu_to_le16(2) -#define SMBFLG2_SECURITY_SIGNATURE cpu_to_le16(4) -#define SMBFLG2_COMPRESSED (8) -#define SMBFLG2_SECURITY_SIGNATURE_REQUIRED (0x10) -#define SMBFLG2_IS_LONG_NAME cpu_to_le16(0x40) -#define SMBFLG2_REPARSE_PATH (0x400) -#define SMBFLG2_EXT_SEC cpu_to_le16(0x800) -#define SMBFLG2_DFS cpu_to_le16(0x1000) -#define SMBFLG2_PAGING_IO cpu_to_le16(0x2000) -#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 @@ -292,7 +229,6 @@ #define SET_MINIMUM_RIGHTS (FILE_READ_EA | FILE_READ_ATTRIBUTES \ | READ_CONTROL | SYNCHRONIZE) =20 - /* * Invalid readdir handle */ @@ -322,33 +258,6 @@ #define CIFS_ALIAS_TYPE_FILE 0x0001 #define CIFS_SHARE_TYPE_FILE 0x0000 =20 -/* - * File Attribute flags - */ -#define ATTR_READONLY 0x0001 -#define ATTR_HIDDEN 0x0002 -#define ATTR_SYSTEM 0x0004 -#define ATTR_VOLUME 0x0008 -#define ATTR_DIRECTORY 0x0010 -#define ATTR_ARCHIVE 0x0020 -#define ATTR_DEVICE 0x0040 -#define ATTR_NORMAL 0x0080 -#define ATTR_TEMPORARY 0x0100 -#define ATTR_SPARSE 0x0200 -#define ATTR_REPARSE 0x0400 -#define ATTR_COMPRESSED 0x0800 -#define ATTR_OFFLINE 0x1000 /* ie file not immediately available - - on offline storage */ -#define ATTR_NOT_CONTENT_INDEXED 0x2000 -#define ATTR_ENCRYPTED 0x4000 -#define ATTR_POSIX_SEMANTICS 0x01000000 -#define ATTR_BACKUP_SEMANTICS 0x02000000 -#define ATTR_DELETE_ON_CLOSE 0x04000000 -#define ATTR_SEQUENTIAL_SCAN 0x08000000 -#define ATTR_RANDOM_ACCESS 0x10000000 -#define ATTR_NO_BUFFERING 0x20000000 -#define ATTR_WRITE_THROUGH 0x80000000 - /* ShareAccess flags */ #define FILE_NO_SHARE 0x00000000 #define FILE_SHARE_READ 0x00000001 @@ -417,38 +326,6 @@ #define GETU16(var) (*((__u16 *)var)) /* BB check for endian issues */ #define GETU32(var) (*((__u32 *)var)) /* BB check for endian issues */ =20 -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) @@ -2239,33 +2116,6 @@ typedef struct { /* minimum includes first three fields, and empty FS Name */ #define MIN_FS_ATTR_INFO_SIZE 12 =20 - -/* List of FileSystemAttributes - see 2.5.1 of MS-FSCC */ -#define FILE_SUPPORTS_SPARSE_VDL 0x10000000 /* faster nonsparse extend */ -#define FILE_SUPPORTS_BLOCK_REFCOUNTING 0x08000000 /* allow ioctl dup exte= nts */ -#define FILE_SUPPORT_INTEGRITY_STREAMS 0x04000000 -#define FILE_SUPPORTS_USN_JOURNAL 0x02000000 -#define FILE_SUPPORTS_OPEN_BY_FILE_ID 0x01000000 -#define FILE_SUPPORTS_EXTENDED_ATTRIBUTES 0x00800000 -#define FILE_SUPPORTS_HARD_LINKS 0x00400000 -#define FILE_SUPPORTS_TRANSACTIONS 0x00200000 -#define FILE_SEQUENTIAL_WRITE_ONCE 0x00100000 -#define FILE_READ_ONLY_VOLUME 0x00080000 -#define FILE_NAMED_STREAMS 0x00040000 -#define FILE_SUPPORTS_ENCRYPTION 0x00020000 -#define FILE_SUPPORTS_OBJECT_IDS 0x00010000 -#define FILE_VOLUME_IS_COMPRESSED 0x00008000 -#define FILE_SUPPORTS_POSIX_UNLINK_RENAME 0x00000400 -#define FILE_RETURNS_CLEANUP_RESULT_INFO 0x00000200 -#define FILE_SUPPORTS_REMOTE_STORAGE 0x00000100 -#define FILE_SUPPORTS_REPARSE_POINTS 0x00000080 -#define FILE_SUPPORTS_SPARSE_FILES 0x00000040 -#define FILE_VOLUME_QUOTAS 0x00000020 -#define FILE_FILE_COMPRESSION 0x00000010 -#define FILE_PERSISTENT_ACLS 0x00000008 -#define FILE_UNICODE_ON_DISK 0x00000004 -#define FILE_CASE_PRESERVED_NAMES 0x00000002 -#define FILE_CASE_SENSITIVE_SEARCH 0x00000001 typedef struct { __le32 Attributes; __le32 MaxPathNameComponentLength; diff --git a/fs/smb/common/smb1pdu.h b/fs/smb/common/smb1pdu.h new file mode 100644 index 000000000000..f14d3d9aac22 --- /dev/null +++ b/fs/smb/common/smb1pdu.h @@ -0,0 +1,163 @@ +/* SPDX-License-Identifier: LGPL-2.1 */ +/* + * + * Copyright (c) International Business Machines Corp., 2002,2009 + * Author(s): Steve French (sfrench@us.ibm.com) + * + */ + +#ifndef _COMMON_SMB1_PDU_H +#define _COMMON_SMB1_PDU_H + +/* SMB command codes: + * Note some commands have minimal (wct=3D0,bcc=3D0), or uninteresting, re= sponses + * (ie which include no useful data other than the SMB error code itself). + * This can allow us to avoid response buffer allocations and copy in some= cases + */ +#define SMB_COM_CREATE_DIRECTORY 0x00 /* trivial response */ +#define SMB_COM_DELETE_DIRECTORY 0x01 /* trivial response */ +#define SMB_COM_CLOSE 0x04 /* triv req/rsp, timestamp igno= red */ +#define SMB_COM_FLUSH 0x05 /* triv req/rsp */ +#define SMB_COM_DELETE 0x06 /* trivial response */ +#define SMB_COM_RENAME 0x07 /* trivial response */ +#define SMB_COM_QUERY_INFORMATION 0x08 /* aka getattr */ +#define SMB_COM_SETATTR 0x09 /* trivial response */ +#define SMB_COM_LOCKING_ANDX 0x24 /* trivial response */ +#define SMB_COM_COPY 0x29 /* trivial rsp, fail filename i= gnrd*/ +#define SMB_COM_ECHO 0x2B /* echo request */ +#define SMB_COM_OPEN_ANDX 0x2D /* Legacy open for old servers = */ +#define SMB_COM_READ_ANDX 0x2E +#define SMB_COM_WRITE_ANDX 0x2F +#define SMB_COM_TRANSACTION2 0x32 +#define SMB_COM_TRANSACTION2_SECONDARY 0x33 +#define SMB_COM_FIND_CLOSE2 0x34 /* trivial response */ +#define SMB_COM_TREE_DISCONNECT 0x71 /* trivial response */ +#define SMB_COM_NEGOTIATE 0x72 +#define SMB_COM_SESSION_SETUP_ANDX 0x73 +#define SMB_COM_LOGOFF_ANDX 0x74 /* trivial response */ +#define SMB_COM_TREE_CONNECT_ANDX 0x75 +#define SMB_COM_NT_TRANSACT 0xA0 +#define SMB_COM_NT_TRANSACT_SECONDARY 0xA1 +#define SMB_COM_NT_CREATE_ANDX 0xA2 +#define SMB_COM_NT_CANCEL 0xA4 /* no response */ +#define SMB_COM_NT_RENAME 0xA5 /* trivial response */ + +#define MAX_CIFS_SMALL_BUFFER_SIZE 448 /* big enough for most */ + +/* + * SMB flag definitions + */ +#define SMBFLG_EXTD_LOCK 0x01 /* server supports lock-read write-unlock sm= b */ +#define SMBFLG_RCV_POSTED 0x02 /* obsolete */ +#define SMBFLG_RSVD 0x04 +#define SMBFLG_CASELESS 0x08 /* all pathnames treated as caseless (off + implies case sensitive file handling request) */ +#define SMBFLG_CANONICAL_PATH_FORMAT 0x10 /* obsolete */ +#define SMBFLG_OLD_OPLOCK 0x20 /* obsolete */ +#define SMBFLG_OLD_OPLOCK_NOTIFY 0x40 /* obsolete */ +#define SMBFLG_RESPONSE 0x80 /* this PDU is a response from server */ + +/* + * SMB flag2 definitions + */ +#define SMBFLG2_KNOWS_LONG_NAMES cpu_to_le16(1) /* can send long (non-8.3) + path names in response */ +#define SMBFLG2_KNOWS_EAS cpu_to_le16(2) +#define SMBFLG2_SECURITY_SIGNATURE cpu_to_le16(4) +#define SMBFLG2_COMPRESSED (8) +#define SMBFLG2_SECURITY_SIGNATURE_REQUIRED (0x10) +#define SMBFLG2_IS_LONG_NAME cpu_to_le16(0x40) +#define SMBFLG2_REPARSE_PATH (0x400) +#define SMBFLG2_EXT_SEC cpu_to_le16(0x800) +#define SMBFLG2_DFS cpu_to_le16(0x1000) +#define SMBFLG2_PAGING_IO cpu_to_le16(0x2000) +#define SMBFLG2_ERR_STATUS cpu_to_le16(0x4000) +#define SMBFLG2_UNICODE cpu_to_le16(0x8000) + +/* + * File Attribute flags + */ +#define ATTR_READONLY 0x0001 +#define ATTR_HIDDEN 0x0002 +#define ATTR_SYSTEM 0x0004 +#define ATTR_VOLUME 0x0008 +#define ATTR_DIRECTORY 0x0010 +#define ATTR_ARCHIVE 0x0020 +#define ATTR_DEVICE 0x0040 +#define ATTR_NORMAL 0x0080 +#define ATTR_TEMPORARY 0x0100 +#define ATTR_SPARSE 0x0200 +#define ATTR_REPARSE 0x0400 +#define ATTR_COMPRESSED 0x0800 +#define ATTR_OFFLINE 0x1000 /* ie file not immediately available - + on offline storage */ +#define ATTR_NOT_CONTENT_INDEXED 0x2000 +#define ATTR_ENCRYPTED 0x4000 +#define ATTR_POSIX_SEMANTICS 0x01000000 +#define ATTR_BACKUP_SEMANTICS 0x02000000 +#define ATTR_DELETE_ON_CLOSE 0x04000000 +#define ATTR_SEQUENTIAL_SCAN 0x08000000 +#define ATTR_RANDOM_ACCESS 0x10000000 +#define ATTR_NO_BUFFERING 0x20000000 +#define ATTR_WRITE_THROUGH 0x80000000 + +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; + +/* List of FileSystemAttributes - see 2.5.1 of MS-FSCC */ +#define FILE_SUPPORTS_SPARSE_VDL 0x10000000 /* faster nonsparse extend */ +#define FILE_SUPPORTS_BLOCK_REFCOUNTING 0x08000000 /* allow ioctl dup exte= nts */ +#define FILE_SUPPORT_INTEGRITY_STREAMS 0x04000000 +#define FILE_SUPPORTS_USN_JOURNAL 0x02000000 +#define FILE_SUPPORTS_OPEN_BY_FILE_ID 0x01000000 +#define FILE_SUPPORTS_EXTENDED_ATTRIBUTES 0x00800000 +#define FILE_SUPPORTS_HARD_LINKS 0x00400000 +#define FILE_SUPPORTS_TRANSACTIONS 0x00200000 +#define FILE_SEQUENTIAL_WRITE_ONCE 0x00100000 +#define FILE_READ_ONLY_VOLUME 0x00080000 +#define FILE_NAMED_STREAMS 0x00040000 +#define FILE_SUPPORTS_ENCRYPTION 0x00020000 +#define FILE_SUPPORTS_OBJECT_IDS 0x00010000 +#define FILE_VOLUME_IS_COMPRESSED 0x00008000 +#define FILE_SUPPORTS_POSIX_UNLINK_RENAME 0x00000400 +#define FILE_RETURNS_CLEANUP_RESULT_INFO 0x00000200 +#define FILE_SUPPORTS_REMOTE_STORAGE 0x00000100 +#define FILE_SUPPORTS_REPARSE_POINTS 0x00000080 +#define FILE_SUPPORTS_SPARSE_FILES 0x00000040 +#define FILE_VOLUME_QUOTAS 0x00000020 +#define FILE_FILE_COMPRESSION 0x00000010 +#define FILE_PERSISTENT_ACLS 0x00000008 +#define FILE_UNICODE_ON_DISK 0x00000004 +#define FILE_CASE_PRESERVED_NAMES 0x00000002 +#define FILE_CASE_SENSITIVE_SEARCH 0x00000001 + +#endif /* _COMMON_SMB1_PDU_H */ diff --git a/fs/smb/server/smb_common.h b/fs/smb/server/smb_common.h index c3258a3231e4..810fad0303d7 100644 --- a/fs/smb/server/smb_common.h +++ b/fs/smb/server/smb_common.h @@ -11,6 +11,7 @@ #include "glob.h" #include "nterr.h" #include "../common/smbglob.h" +#include "../common/smb1pdu.h" #include "../common/smb2pdu.h" #include "smb2pdu.h" =20 @@ -29,8 +30,6 @@ =20 #define SMB_ECHO_INTERVAL (60 * HZ) =20 -#define MAX_CIFS_SMALL_BUFFER_SIZE 448 /* big enough for most */ - #define MAX_STREAM_PROT_LEN 0x00FFFFFF =20 /* Responses when opening a file. */ @@ -39,44 +38,6 @@ #define F_CREATED 2 #define F_OVERWRITTEN 3 =20 -/* - * File Attribute flags - */ -#define ATTR_POSIX_SEMANTICS 0x01000000 -#define ATTR_BACKUP_SEMANTICS 0x02000000 -#define ATTR_DELETE_ON_CLOSE 0x04000000 -#define ATTR_SEQUENTIAL_SCAN 0x08000000 -#define ATTR_RANDOM_ACCESS 0x10000000 -#define ATTR_NO_BUFFERING 0x20000000 -#define ATTR_WRITE_THROUGH 0x80000000 - -/* List of FileSystemAttributes - see 2.5.1 of MS-FSCC */ -#define FILE_SUPPORTS_SPARSE_VDL 0x10000000 /* faster nonsparse extend */ -#define FILE_SUPPORTS_BLOCK_REFCOUNTING 0x08000000 /* allow ioctl dup exte= nts */ -#define FILE_SUPPORT_INTEGRITY_STREAMS 0x04000000 -#define FILE_SUPPORTS_USN_JOURNAL 0x02000000 -#define FILE_SUPPORTS_OPEN_BY_FILE_ID 0x01000000 -#define FILE_SUPPORTS_EXTENDED_ATTRIBUTES 0x00800000 -#define FILE_SUPPORTS_HARD_LINKS 0x00400000 -#define FILE_SUPPORTS_TRANSACTIONS 0x00200000 -#define FILE_SEQUENTIAL_WRITE_ONCE 0x00100000 -#define FILE_READ_ONLY_VOLUME 0x00080000 -#define FILE_NAMED_STREAMS 0x00040000 -#define FILE_SUPPORTS_ENCRYPTION 0x00020000 -#define FILE_SUPPORTS_OBJECT_IDS 0x00010000 -#define FILE_VOLUME_IS_COMPRESSED 0x00008000 -#define FILE_SUPPORTS_POSIX_UNLINK_RENAME 0x00000400 -#define FILE_RETURNS_CLEANUP_RESULT_INFO 0x00000200 -#define FILE_SUPPORTS_REMOTE_STORAGE 0x00000100 -#define FILE_SUPPORTS_REPARSE_POINTS 0x00000080 -#define FILE_SUPPORTS_SPARSE_FILES 0x00000040 -#define FILE_VOLUME_QUOTAS 0x00000020 -#define FILE_FILE_COMPRESSION 0x00000010 -#define FILE_PERSISTENT_ACLS 0x00000008 -#define FILE_UNICODE_ON_DISK 0x00000004 -#define FILE_CASE_PRESERVED_NAMES 0x00000002 -#define FILE_CASE_SENSITIVE_SEARCH 0x00000001 - #define FILE_READ_DATA 0x00000001 /* Data can be read from the fil= e */ #define FILE_WRITE_DATA 0x00000002 /* Data can be written to the fi= le */ #define FILE_APPEND_DATA 0x00000004 /* Data can be appended to the f= ile */ @@ -151,46 +112,8 @@ FILE_EXECUTE | FILE_DELETE_CHILD | \ FILE_READ_ATTRIBUTES | FILE_WRITE_ATTRIBUTES) =20 -#define SMB_COM_NEGOTIATE 0x72 #define SMB1_CLIENT_GUID_SIZE (16) =20 -#define SMBFLG_RESPONSE 0x80 /* this PDU is a response from server */ - -#define SMBFLG2_IS_LONG_NAME cpu_to_le16(0x40) -#define SMBFLG2_EXT_SEC cpu_to_le16(0x800) -#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 =3D 0 */ __le16 ByteCount; --=20 2.43.0 From nobody Sat Feb 7 15:15:15 2026 Received: from out-186.mta1.migadu.com (out-186.mta1.migadu.com [95.215.58.186]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 481092DEA6E for ; Mon, 27 Oct 2025 07:15:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.186 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549339; cv=none; b=mWF6vqfqvVJc+ebbsVlO1P0ZEmnVlul9Z86ugI1ASMnv3w/zTH9HKdzjqKElREemNxq05VBz54SHxanq8sGCEQ0vdjDj70sdvIsmE0n5T6b6tyua6+m57oIFnHMm41TRbwcnXa1rmUn6nmVohv6C3EVsA8MpvYZEwmuIEIEbGog= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549339; c=relaxed/simple; bh=jcKtlw24r23/zxNAv55pqMA0oSTDFIj+Wts7YElWdmQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Rc7PRT9Dw59hO4CmLM7SO0OtTwDNWdd4EgmwFyjD/s5zn1qXoi2fwvF4AabFR1W7a99bIzj5PKykD3Nm48Kwl+RVEKnIJyc6ON8hogb/1nIp7b3J243Ce/TN9DM0tZefCu+6eE7UjhrnlNur4JsLCSSFhibdN5Lv72Jp9tgE8Wo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=EDrWsRe+; arc=none smtp.client-ip=95.215.58.186 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="EDrWsRe+" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1761549335; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=7jufHQq5zII8WMWUcSY31BH2TY4ZFV66yORSb/EnpvU=; b=EDrWsRe+x5/YR6ZAyPJHEHiEUdqMouQMra3Mk57EctYwodihbgovyEBf+/xStQ3Cfb2/Gp 0ndMwrFx60AdhrV1OxlcBbfNNgSc0uTSXz77ZLEv7CwgJrW2g6slaw61R2tBmqOpXASEYU E22stvw5rLx6PyfbnROcKc/qFvvzuZo= From: chenxiaosong.chenxiaosong@linux.dev To: sfrench@samba.org, smfrench@gmail.com, linkinjeon@kernel.org, linkinjeon@samba.org, christophe.jaillet@wanadoo.fr Cc: linux-cifs@vger.kernel.org, linux-kernel@vger.kernel.org, ChenXiaoSong Subject: [PATCH v4 06/24] smb: move file access permission bits definitions to common/smb1pdu.h Date: Mon, 27 Oct 2025 15:12:58 +0800 Message-ID: <20251027071316.3468472-7-chenxiaosong.chenxiaosong@linux.dev> In-Reply-To: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> References: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" From: ChenXiaoSong There are only 2 different definitions between the client and server: - SET_FILE_READ_RIGHTS: - client: rename to CLIENT_SET_FILE_READ_RIGHTS - server: rename to SERVER_SET_FILE_READ_RIGHTS - SET_FILE_WRITE_RIGHTS - client: rename to CLIENT_SET_FILE_WRITE_RIGHTS - server: rename to SERVER_SET_FILE_WRITE_RIGHTS Perhaps in the future we can change them to be the same, move them to common header file. Signed-off-by: ChenXiaoSong --- fs/smb/client/cifsacl.c | 4 +- fs/smb/client/cifspdu.h | 112 --------------------------------- fs/smb/common/smb1pdu.h | 123 ++++++++++++++++++++++++++++++++++++- fs/smb/common/smb2pdu.h | 6 -- fs/smb/server/smb_common.h | 55 ----------------- fs/smb/server/smbacl.c | 2 +- 6 files changed, 125 insertions(+), 177 deletions(-) diff --git a/fs/smb/client/cifsacl.c b/fs/smb/client/cifsacl.c index ce2ebc213a1d..5c3d8eb68868 100644 --- a/fs/smb/client/cifsacl.c +++ b/fs/smb/client/cifsacl.c @@ -654,9 +654,9 @@ static void mode_to_access_flags(umode_t mode, umode_t = bits_to_use, is this but we have cleared all the bits sans RWX for either user or group or other as per bits_to_use */ if (mode & S_IRUGO) - *pace_flags |=3D SET_FILE_READ_RIGHTS; + *pace_flags |=3D CLIENT_SET_FILE_READ_RIGHTS; if (mode & S_IWUGO) - *pace_flags |=3D SET_FILE_WRITE_RIGHTS; + *pace_flags |=3D CLIENT_SET_FILE_WRITE_RIGHTS; if (mode & S_IXUGO) *pace_flags |=3D SET_FILE_EXEC_RIGHTS; =20 diff --git a/fs/smb/client/cifspdu.h b/fs/smb/client/cifspdu.h index 86167875574c..a063c98683bc 100644 --- a/fs/smb/client/cifspdu.h +++ b/fs/smb/client/cifspdu.h @@ -117,118 +117,6 @@ #define SMBOPEN_OTRUNC 0x0002 #define SMBOPEN_OAPPEND 0x0001 =20 -/* - * 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 fil= e */ - /* 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 fi= le */ - /* or new file can be created in */ - /* the directory */ -#define FILE_APPEND_DATA 0x00000004 /* Data can be appended to the f= ile */ - /* (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 associate= d */ - /* with the file can be read */ -#define FILE_WRITE_EA 0x00000010 /* Extended attributes associate= d */ - /* with the file can be written */ -#define FILE_EXECUTE 0x00000020 /*Data can be read into memory f= rom */ - /* 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 fr= om */ - /* the directory (so the DELETE on */ - /* the child entry is not needed) */ -#define FILE_READ_ATTRIBUTES 0x00000080 /* Attributes associated with th= e */ - /* file or directory can be read */ -#define FILE_WRITE_ATTRIBUTES 0x00000100 /* Attributes associated with th= e */ - /* file or directory can be written */ -#define DELETE 0x00010000 /* The file or dir can be delete= d */ -#define READ_CONTROL 0x00020000 /* The discretionary access cont= rol */ - /* list and ownership associated */ - /* with the file or dir can be read */ -#define WRITE_DAC 0x00040000 /* The discretionary access cont= rol */ - /* list associated with the file or */ - /* directory can be written */ -#define WRITE_OWNER 0x00080000 /* Ownership information associa= ted */ - /* 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 lis= t */ - /* 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_ATTRIB= UTES) -#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_READ_RIGHTS (FILE_READ_DATA | FILE_READ_EA | FILE_WRITE_E= A \ - | FILE_READ_ATTRIBUTES \ - | FILE_WRITE_ATTRIBUTES \ - | DELETE | READ_CONTROL | WRITE_DAC \ - | WRITE_OWNER | SYNCHRONIZE) -#define SET_FILE_WRITE_RIGHTS (FILE_WRITE_DATA | FILE_APPEND_DATA \ - | FILE_READ_EA | FILE_WRITE_EA \ - | FILE_READ_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 */ diff --git a/fs/smb/common/smb1pdu.h b/fs/smb/common/smb1pdu.h index f14d3d9aac22..9fe6fc4b05a7 100644 --- a/fs/smb/common/smb1pdu.h +++ b/fs/smb/common/smb1pdu.h @@ -75,7 +75,128 @@ #define SMBFLG2_UNICODE cpu_to_le16(0x8000) =20 /* - * File Attribute flags + * 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 fil= e */ + /* 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 fi= le */ + /* or new file can be created in */ + /* the directory */ +#define FILE_APPEND_DATA 0x00000004 /* Data can be appended to the f= ile */ + /* (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 associate= d */ + /* with the file can be read */ +#define FILE_WRITE_EA 0x00000010 /* Extended attributes associate= d */ + /* with the file can be written */ +#define FILE_EXECUTE 0x00000020 /*Data can be read into memory f= rom */ + /* 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 fr= om */ + /* the directory (so the DELETE on */ + /* the child entry is not needed) */ +#define FILE_READ_ATTRIBUTES 0x00000080 /* Attributes associated with th= e */ + /* file or directory can be read */ +#define FILE_WRITE_ATTRIBUTES 0x00000100 /* Attributes associated with th= e */ + /* file or directory can be written */ +#define DELETE 0x00010000 /* The file or dir can be delete= d */ +#define READ_CONTROL 0x00020000 /* The discretionary access cont= rol */ + /* list and ownership associated */ + /* with the file or dir can be read */ +#define WRITE_DAC 0x00040000 /* The discretionary access cont= rol */ + /* list associated with the file or */ + /* directory can be written */ +#define WRITE_OWNER 0x00080000 /* Ownership information associa= ted */ + /* 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 lis= t */ + /* 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_ATTRIB= UTES) +#define FILE_WRITE_RIGHTS (FILE_WRITE_DATA | FILE_APPEND_DATA \ + | FILE_WRITE_EA | FILE_WRITE_ATTRIBUTES) +#define FILE_EXEC_RIGHTS (FILE_EXECUTE) + +#define CLIENT_SET_FILE_READ_RIGHTS (FILE_READ_DATA | FILE_READ_EA | FILE_= WRITE_EA \ + | FILE_READ_ATTRIBUTES \ + | FILE_WRITE_ATTRIBUTES \ + | DELETE | READ_CONTROL | WRITE_DAC \ + | WRITE_OWNER | SYNCHRONIZE) +#define SERVER_SET_FILE_READ_RIGHTS (FILE_READ_DATA | FILE_READ_EA \ + | FILE_READ_ATTRIBUTES \ + | DELETE | READ_CONTROL | WRITE_DAC \ + | WRITE_OWNER | SYNCHRONIZE) +#define CLIENT_SET_FILE_WRITE_RIGHTS (FILE_WRITE_DATA | FILE_APPEND_DATA \ + | FILE_READ_EA | FILE_WRITE_EA \ + | FILE_READ_ATTRIBUTES \ + | FILE_WRITE_ATTRIBUTES \ + | DELETE | READ_CONTROL | WRITE_DAC \ + | WRITE_OWNER | SYNCHRONIZE) +#define SERVER_SET_FILE_WRITE_RIGHTS (FILE_WRITE_DATA | FILE_APPEND_DATA \ + | FILE_WRITE_EA \ + | FILE_DELETE_CHILD \ + | 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) + +/* + * File Attribute flags - see MS-SMB 2.2.1.4.1 */ #define ATTR_READONLY 0x0001 #define ATTR_HIDDEN 0x0002 diff --git a/fs/smb/common/smb2pdu.h b/fs/smb/common/smb2pdu.h index f79a5165a7cc..f2fbd651ab8f 100644 --- a/fs/smb/common/smb2pdu.h +++ b/fs/smb/common/smb2pdu.h @@ -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) =20 -#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) */ diff --git a/fs/smb/server/smb_common.h b/fs/smb/server/smb_common.h index 810fad0303d7..df67b370025d 100644 --- a/fs/smb/server/smb_common.h +++ b/fs/smb/server/smb_common.h @@ -38,61 +38,6 @@ #define F_CREATED 2 #define F_OVERWRITTEN 3 =20 -#define FILE_READ_DATA 0x00000001 /* Data can be read from the fil= e */ -#define FILE_WRITE_DATA 0x00000002 /* Data can be written to the fi= le */ -#define FILE_APPEND_DATA 0x00000004 /* Data can be appended to the f= ile */ -#define FILE_READ_EA 0x00000008 /* Extended attributes associate= d */ -/* with the file can be read */ -#define FILE_WRITE_EA 0x00000010 /* Extended attributes associate= d */ -/* with the file can be written */ -#define FILE_EXECUTE 0x00000020 /*Data can be read into memory f= rom */ -/* the file using system paging I/O */ -#define FILE_DELETE_CHILD 0x00000040 -#define FILE_READ_ATTRIBUTES 0x00000080 /* Attributes associated with th= e */ -/* file can be read */ -#define FILE_WRITE_ATTRIBUTES 0x00000100 /* Attributes associated with th= e */ -/* 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 associa= ted */ -/* 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. */ - -#define SET_FILE_READ_RIGHTS (FILE_READ_DATA | FILE_READ_EA \ - | FILE_READ_ATTRIBUTES \ - | DELETE | READ_CONTROL | WRITE_DAC \ - | WRITE_OWNER | SYNCHRONIZE) -#define SET_FILE_WRITE_RIGHTS (FILE_WRITE_DATA | FILE_APPEND_DATA \ - | FILE_WRITE_EA \ - | FILE_DELETE_CHILD \ - | 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 | \ FILE_READ_ATTRIBUTES | \ diff --git a/fs/smb/server/smbacl.c b/fs/smb/server/smbacl.c index 5aa7a66334d9..b70ba50f1f10 100644 --- a/fs/smb/server/smbacl.c +++ b/fs/smb/server/smbacl.c @@ -180,7 +180,7 @@ static void mode_to_access_flags(umode_t mode, umode_t = bits_to_use, * either user or group or other as per bits_to_use */ if (mode & 0444) - *pace_flags |=3D SET_FILE_READ_RIGHTS; + *pace_flags |=3D SERVER_SET_FILE_READ_RIGHTS; if (mode & 0222) *pace_flags |=3D FILE_WRITE_RIGHTS; if (mode & 0111) --=20 2.43.0 From nobody Sat Feb 7 15:15:15 2026 Received: from out-176.mta1.migadu.com (out-176.mta1.migadu.com [95.215.58.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 63DD92DC797 for ; Mon, 27 Oct 2025 07:15:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549341; cv=none; b=SKp1llPuukyHwR31rr3l7qE6Dn7eKD+3qTBHMQKUUBWRYw6RDz1BEsIFk/arj9HJ1APlc/JqbwjLJxN1wVjk7TBpiqIFpFTQpCUcWesC46zhirTgPdW+Xd1osoDKBdnzxWkWe4C9ZrH7zvapxW7hu8nR0HPccoECADy/kC2ya8g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549341; c=relaxed/simple; bh=kg+Oz4HGsYXOxC8uHLja9YASZpD5Yvu0ap/D3tFYL60=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FjE4qygWuNwXe14gipTMY5zihSeW1BewComWDHsWGjSRiVHJebMNjC1P4kPitHDZqkwUZEG7sn1an2eNS/1dj7xI4CE0O8exrWMcXkv+0FCkNW6KzsFm1SZKSwjkNz8CWrDM7Mmy2Y5rttJHwDDdsx6kSFntlYnMnYYea0O8mBs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=CbpjsZpr; arc=none smtp.client-ip=95.215.58.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="CbpjsZpr" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1761549337; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=RuXuDUNzWgLWlxFgC1wd8uH+rA11eWnvMqHCEua9kjw=; b=CbpjsZprsHf2t6AoL3R1tkTCUQFiMVjxJnm06S8gPPIc4xIGNpNvGPReCoA9HNwt3msJPI ycKb50UUmKZh/dAIw7zF5R3oW4aYJjaTzBHtSFq48iTNC32t2CpvkaH3NIiG/Uwt0nMYQs ZRPxJqfvrgsClJXSkEf+azXuEy/JymE= From: chenxiaosong.chenxiaosong@linux.dev To: sfrench@samba.org, smfrench@gmail.com, linkinjeon@kernel.org, linkinjeon@samba.org, christophe.jaillet@wanadoo.fr Cc: linux-cifs@vger.kernel.org, linux-kernel@vger.kernel.org, ChenXiaoSong Subject: [PATCH v4 07/24] smb: move SMB frame definitions to common/smb1pdu.h Date: Mon, 27 Oct 2025 15:12:59 +0800 Message-ID: <20251027071316.3468472-8-chenxiaosong.chenxiaosong@linux.dev> In-Reply-To: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> References: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" From: ChenXiaoSong The client and server have different struct negotiate_rsp, perhaps in the future we can change them to be the same. Signed-off-by: ChenXiaoSong --- fs/smb/client/cifspdu.h | 58 ---------------------------------- fs/smb/client/cifssmb.c | 4 +-- fs/smb/common/smb1pdu.h | 65 ++++++++++++++++++++++++++++++++++++++ fs/smb/server/smb_common.c | 10 +++--- fs/smb/server/smb_common.h | 14 -------- 5 files changed, 72 insertions(+), 79 deletions(-) diff --git a/fs/smb/client/cifspdu.h b/fs/smb/client/cifspdu.h index a063c98683bc..d40683c7fdc3 100644 --- a/fs/smb/client/cifspdu.h +++ b/fs/smb/client/cifspdu.h @@ -267,64 +267,6 @@ put_bcc(__u16 count, struct smb_hdr *hdr) */ #define MAX_PATHCONF 256 =20 -/* - * SMB frame definitions (following must be packed structs) - * See the SNIA CIFS Specification for details. - * - * The Naming convention is the lower case version of the - * smb command code name for the struct and this is typedef to the - * uppercase version of the same name with the prefix SMB_ removed - * for brevity. Although typedefs are not commonly used for - * structure definitions in the Linux kernel, their use in the - * CIFS standards document, which this code is based on, may - * make this one of the cases where typedefs for structures make - * sense to improve readability for readers of the standards doc. - * Typedefs can always be removed later if they are too distracting - * and they are only used for the CIFSs PDUs themselves, not - * internal cifs vfs structures - * - */ - -typedef struct negotiate_req { - struct smb_hdr hdr; /* wct =3D 0 */ - __le16 ByteCount; - unsigned char DialectsArray[]; -} __attribute__((packed)) NEGOTIATE_REQ; - -#define MIN_TZ_ADJ (15 * 60) /* minimum grid for timezones in seconds */ - -#define READ_RAW_ENABLE 1 -#define WRITE_RAW_ENABLE 2 -#define RAW_ENABLE (READ_RAW_ENABLE | WRITE_RAW_ENABLE) -#define SMB1_CLIENT_GUID_SIZE (16) -typedef struct negotiate_rsp { - struct smb_hdr hdr; /* wct =3D 17 */ - __le16 DialectIndex; /* 0xFFFF =3D no dialect acceptable */ - __u8 SecurityMode; - __le16 MaxMpxCount; - __le16 MaxNumberVcs; - __le32 MaxBufferSize; - __le32 MaxRawSize; - __le32 SessionKey; - __le32 Capabilities; /* see below */ - __le32 SystemTimeLow; - __le32 SystemTimeHigh; - __le16 ServerTimeZone; - __u8 EncryptionKeyLength; - __u16 ByteCount; - union { - /* cap extended security off */ - DECLARE_FLEX_ARRAY(unsigned char, EncryptionKey); - /* followed by Domain name - if extended security is off */ - /* followed by 16 bytes of server GUID */ - /* then security blob if cap_extended_security negotiated */ - struct { - unsigned char GUID[SMB1_CLIENT_GUID_SIZE]; - unsigned char SecurityBlob[]; - } __attribute__((packed)) extended_response; - } __attribute__((packed)) u; -} __attribute__((packed)) NEGOTIATE_RSP; - /* SecurityMode bits */ #define SECMODE_USER 0x01 /* off indicates share level security */ #define SECMODE_PW_ENCRYPT 0x02 diff --git a/fs/smb/client/cifssmb.c b/fs/smb/client/cifssmb.c index 703c5a8ed924..3fae9de4ec4e 100644 --- a/fs/smb/client/cifssmb.c +++ b/fs/smb/client/cifssmb.c @@ -361,7 +361,7 @@ static int validate_t2(struct smb_t2_rsp *pSMB) } =20 static int -decode_ext_sec_blob(struct cifs_ses *ses, NEGOTIATE_RSP *pSMBr) +decode_ext_sec_blob(struct cifs_ses *ses, CLIENT_NEGOTIATE_RSP *pSMBr) { int rc =3D 0; u16 count; @@ -420,7 +420,7 @@ CIFSSMBNegotiate(const unsigned int xid, struct TCP_Server_Info *server) { NEGOTIATE_REQ *pSMB; - NEGOTIATE_RSP *pSMBr; + CLIENT_NEGOTIATE_RSP *pSMBr; int rc =3D 0; int bytes_returned; int i; diff --git a/fs/smb/common/smb1pdu.h b/fs/smb/common/smb1pdu.h index 9fe6fc4b05a7..6e6ea48fd376 100644 --- a/fs/smb/common/smb1pdu.h +++ b/fs/smb/common/smb1pdu.h @@ -254,6 +254,71 @@ struct smb_hdr { __u8 WordCount; } __packed; =20 +/* + * SMB frame definitions (following must be packed structs) + * See the SNIA CIFS Specification for details. + * + * The Naming convention is the lower case version of the + * smb command code name for the struct and this is typedef to the + * uppercase version of the same name with the prefix SMB_ removed + * for brevity. Although typedefs are not commonly used for + * structure definitions in the Linux kernel, their use in the + * CIFS standards document, which this code is based on, may + * make this one of the cases where typedefs for structures make + * sense to improve readability for readers of the standards doc. + * Typedefs can always be removed later if they are too distracting + * and they are only used for the CIFSs PDUs themselves, not + * internal cifs vfs structures + * + */ + +typedef struct negotiate_req { + struct smb_hdr hdr; /* wct =3D 0 */ + __le16 ByteCount; + unsigned char DialectsArray[]; +} __packed NEGOTIATE_REQ; + +#define MIN_TZ_ADJ (15 * 60) /* minimum grid for timezones in seconds */ + +#define READ_RAW_ENABLE 1 +#define WRITE_RAW_ENABLE 2 +#define RAW_ENABLE (READ_RAW_ENABLE | WRITE_RAW_ENABLE) +#define SMB1_CLIENT_GUID_SIZE (16) + +typedef struct client_negotiate_rsp { + struct smb_hdr hdr; /* wct =3D 17 */ + __le16 DialectIndex; /* 0xFFFF =3D no dialect acceptable */ + __u8 SecurityMode; + __le16 MaxMpxCount; + __le16 MaxNumberVcs; + __le32 MaxBufferSize; + __le32 MaxRawSize; + __le32 SessionKey; + __le32 Capabilities; /* see below */ + __le32 SystemTimeLow; + __le32 SystemTimeHigh; + __le16 ServerTimeZone; + __u8 EncryptionKeyLength; + __u16 ByteCount; + union { + /* cap extended security off */ + DECLARE_FLEX_ARRAY(unsigned char, EncryptionKey); + /* followed by Domain name - if extended security is off */ + /* followed by 16 bytes of server GUID */ + /* then security blob if cap_extended_security negotiated */ + struct { + unsigned char GUID[SMB1_CLIENT_GUID_SIZE]; + unsigned char SecurityBlob[]; + } __packed extended_response; + } __packed u; +} __packed CLIENT_NEGOTIATE_RSP; + +typedef struct server_negotiate_rsp { + struct smb_hdr hdr; /* wct =3D 17 */ + __le16 DialectIndex; /* 0xFFFF =3D no dialect acceptable */ + __le16 ByteCount; +} __packed SERVER_NEGOTIATE_RSP; + /* List of FileSystemAttributes - see 2.5.1 of MS-FSCC */ #define FILE_SUPPORTS_SPARSE_VDL 0x10000000 /* faster nonsparse extend */ #define FILE_SUPPORTS_BLOCK_REFCOUNTING 0x08000000 /* allow ioctl dup exte= nts */ diff --git a/fs/smb/server/smb_common.c b/fs/smb/server/smb_common.c index b23203a1c286..e1e89bc1c43f 100644 --- a/fs/smb/server/smb_common.c +++ b/fs/smb/server/smb_common.c @@ -280,13 +280,13 @@ static int ksmbd_negotiate_smb_dialect(void *buf) =20 proto =3D *(__le32 *)((struct smb_hdr *)buf)->Protocol; if (proto =3D=3D SMB1_PROTO_NUMBER) { - struct smb_negotiate_req *req; + struct negotiate_req *req; =20 - req =3D (struct smb_negotiate_req *)buf; + req =3D (struct negotiate_req *)buf; if (le16_to_cpu(req->ByteCount) < 2) goto err_out; =20 - if (offsetof(struct smb_negotiate_req, DialectsArray) - 4 + + if (offsetof(struct negotiate_req, DialectsArray) - 4 + le16_to_cpu(req->ByteCount) > smb_buf_length) { goto err_out; } @@ -572,12 +572,12 @@ static int __smb2_negotiate(struct ksmbd_conn *conn) =20 static int smb_handle_negotiate(struct ksmbd_work *work) { - struct smb_negotiate_rsp *neg_rsp =3D work->response_buf; + struct server_negotiate_rsp *neg_rsp =3D work->response_buf; =20 ksmbd_debug(SMB, "Unsupported SMB1 protocol\n"); =20 if (ksmbd_iov_pin_rsp(work, (void *)neg_rsp + 4, - sizeof(struct smb_negotiate_rsp) - 4)) + sizeof(struct server_negotiate_rsp) - 4)) return -ENOMEM; =20 neg_rsp->hdr.Status.CifsError =3D STATUS_SUCCESS; diff --git a/fs/smb/server/smb_common.h b/fs/smb/server/smb_common.h index df67b370025d..546125e1886c 100644 --- a/fs/smb/server/smb_common.h +++ b/fs/smb/server/smb_common.h @@ -57,20 +57,6 @@ FILE_EXECUTE | FILE_DELETE_CHILD | \ FILE_READ_ATTRIBUTES | FILE_WRITE_ATTRIBUTES) =20 -#define SMB1_CLIENT_GUID_SIZE (16) - -struct smb_negotiate_req { - struct smb_hdr hdr; /* wct =3D 0 */ - __le16 ByteCount; - unsigned char DialectsArray[]; -} __packed; - -struct smb_negotiate_rsp { - struct smb_hdr hdr; /* wct =3D 17 */ - __le16 DialectIndex; /* 0xFFFF =3D no dialect acceptable */ - __le16 ByteCount; -} __packed; - struct filesystem_attribute_info { __le32 Attributes; __le32 MaxPathNameComponentLength; --=20 2.43.0 From nobody Sat Feb 7 15:15:15 2026 Received: from out-183.mta1.migadu.com (out-183.mta1.migadu.com [95.215.58.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 71B392DF149 for ; Mon, 27 Oct 2025 07:15:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.183 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549343; cv=none; b=BBzXsDwa4H4rGq68AlApx6AldlCE4iYKGaoarcGtt9n1Pgzlog4LiH3fSUj9/X9reid2ThM7RNoNnLVawfJy/lQ6OYrKg+CLFbPc3Anl3UDvX/rb6FGvVz1iTTT+D09tD71YiQB2QhauZ7D0h6u6Vx1BZak/XA7QZ2t4WOGOZQY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549343; c=relaxed/simple; bh=lWJpJwPCA3LmMj1b9IFDHULaZ/lTlKKjmd4GJ2LcM6M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Ju25uZZ4PmSAgwnu8zGLjoxBhXOTIZFDR2xLXMFh1H/lXsRLnqBYYWyyvv9zOZnnNBpgqIJQNDVpKHENqEvirZZruE+8T1mPE9pZ5AuJ81il2o95yM1FRg2bKUbffJUDZ3VJAMIsjHRT8fYXUKdgSC47VyRIphlDLihdCcbQ684= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=hkl5hsxv; arc=none smtp.client-ip=95.215.58.183 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="hkl5hsxv" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1761549339; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9XTyWqvcZownGMfluUY7RFs/jCUMEoJJYYWBhvMAtxM=; b=hkl5hsxvOSIGcOUQZPFCw9MPw6V6NlltYMB2eCGE4MuXyrurtseJHWfDsAFQuqlFWvPqRh CcI3bdBC88uVvaCdDrk/H8+HnuaVYoCWGVxC3bh9EIAKXBKeAF+XmpkDk4ww4k2hRRR4Lg k9fWxA6/QeA9Rhu6jw0DwupSI1EapxI= From: chenxiaosong.chenxiaosong@linux.dev To: sfrench@samba.org, smfrench@gmail.com, linkinjeon@kernel.org, linkinjeon@samba.org, christophe.jaillet@wanadoo.fr Cc: linux-cifs@vger.kernel.org, linux-kernel@vger.kernel.org, ChenXiaoSong Subject: [PATCH v4 08/24] smb: move FILE_SYSTEM_ATTRIBUTE_INFO to common/smb1pdu.h Date: Mon, 27 Oct 2025 15:13:00 +0800 Message-ID: <20251027071316.3468472-9-chenxiaosong.chenxiaosong@linux.dev> In-Reply-To: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> References: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" From: ChenXiaoSong Rename "struct filesystem_attribute_info" to "FILE_SYSTEM_ATTRIBUTE_INFO", then move duplicate definitions to common header file. Signed-off-by: ChenXiaoSong --- fs/smb/client/cifspdu.h | 7 ------- fs/smb/common/smb1pdu.h | 8 ++++++++ fs/smb/server/smb2pdu.c | 6 +++--- fs/smb/server/smb_common.h | 7 ------- 4 files changed, 11 insertions(+), 17 deletions(-) diff --git a/fs/smb/client/cifspdu.h b/fs/smb/client/cifspdu.h index d40683c7fdc3..7c781b17f73b 100644 --- a/fs/smb/client/cifspdu.h +++ b/fs/smb/client/cifspdu.h @@ -1946,13 +1946,6 @@ typedef struct { /* minimum includes first three fields, and empty FS Name */ #define MIN_FS_ATTR_INFO_SIZE 12 =20 -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 form= ats */ /*************************************************************************= *****/ diff --git a/fs/smb/common/smb1pdu.h b/fs/smb/common/smb1pdu.h index 6e6ea48fd376..37d1eb0b1fbe 100644 --- a/fs/smb/common/smb1pdu.h +++ b/fs/smb/common/smb1pdu.h @@ -346,4 +346,12 @@ typedef struct server_negotiate_rsp { #define FILE_CASE_PRESERVED_NAMES 0x00000002 #define FILE_CASE_SENSITIVE_SEARCH 0x00000001 =20 +/* 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; + #endif /* _COMMON_SMB1_PDU_H */ diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c index 2c435836e005..d0a077730387 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_wo= rk *work, } case FS_ATTRIBUTE_INFORMATION: { - struct filesystem_attribute_info *info; + FILE_SYSTEM_ATTRIBUTE_INFO *info; size_t sz; =20 - info =3D (struct filesystem_attribute_info *)rsp->Buffer; + info =3D (FILE_SYSTEM_ATTRIBUTE_INFO *)rsp->Buffer; info->Attributes =3D 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 =3D len * 2; info->FileSystemNameLen =3D cpu_to_le32(len); - sz =3D sizeof(struct filesystem_attribute_info) + len; + sz =3D sizeof(FILE_SYSTEM_ATTRIBUTE_INFO) + len; rsp->OutputBufferLength =3D cpu_to_le32(sz); break; } diff --git a/fs/smb/server/smb_common.h b/fs/smb/server/smb_common.h index 546125e1886c..09861be254c6 100644 --- a/fs/smb/server/smb_common.h +++ b/fs/smb/server/smb_common.h @@ -57,13 +57,6 @@ FILE_EXECUTE | FILE_DELETE_CHILD | \ FILE_READ_ATTRIBUTES | FILE_WRITE_ATTRIBUTES) =20 -struct filesystem_attribute_info { - __le32 Attributes; - __le32 MaxPathNameComponentLength; - __le32 FileSystemNameLen; - __le16 FileSystemName[]; /* do not have to save this - get subset? */ -} __packed; - struct filesystem_device_info { __le32 DeviceType; __le32 DeviceCharacteristics; --=20 2.43.0 From nobody Sat Feb 7 15:15:15 2026 Received: from out-174.mta1.migadu.com (out-174.mta1.migadu.com [95.215.58.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7DF0A2DCBFB for ; Mon, 27 Oct 2025 07:15:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549345; cv=none; b=eLY9Yqd+DhqGmwKWCdlg79bZu9oBtYHV76xflgCtFZsTUhXwYb5scolb5nCxdyHEWJ40yQe8B/JNwdEA2QBxEUNGyrUWNP5u/Bf36KTzEqSucBg3Kf4zHM74GKzvAFN4b/4+RmLWG4hT5+quTdp2OuqA22uFopaFnkeVih+IECI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549345; c=relaxed/simple; bh=3XVdcQaNCtJyyGPx5qLKOq4kL675M/oZzHwb5T8IxO0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lDD7JDsn+p7uZWq0mSiDYvnjf8KAMu7CUHP/KI1MnO1ofGVjzQtBjOeGxKHbOc7mF+aCs9xkB5lCmsUj96OLFh7XoBaMGSPFvqBlUypYpjwZWZ+nvz1ZaMwud8rX1+6+reR/iReEzAw515qAbrm0+s8tuqOB2j0Nv9WXyAS9AHo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=I3ULteJ2; arc=none smtp.client-ip=95.215.58.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="I3ULteJ2" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1761549341; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ZR8CM/heFmx9JwK+KiVtsFGPZAb6OotDV7aFw64ZLNI=; b=I3ULteJ22QVC+r2h4JREigzPOqp0yDoQn3vRY1uaer2YZUOu7IbB7nq1mVSA2KP/HzsF8e GXeRAXrTa2AI5xfESo22+JcjeljD3Q4jwTJRnRXLnhnu+QN9ekBVIQj3LX1T3rUIOleIDu P4oprzu4KOnoOa/Y2Vphi2a4mURsgkc= From: chenxiaosong.chenxiaosong@linux.dev To: sfrench@samba.org, smfrench@gmail.com, linkinjeon@kernel.org, linkinjeon@samba.org, christophe.jaillet@wanadoo.fr Cc: linux-cifs@vger.kernel.org, linux-kernel@vger.kernel.org, ChenXiaoSong Subject: [PATCH v4 09/24] smb: move FILE_SYSTEM_DEVICE_INFO to common/smb1pdu.h Date: Mon, 27 Oct 2025 15:13:01 +0800 Message-ID: <20251027071316.3468472-10-chenxiaosong.chenxiaosong@linux.dev> In-Reply-To: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> References: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" From: ChenXiaoSong Rename "struct filesystem_device_info" to "FILE_SYSTEM_DEVICE_INFO", then move duplicate definitions to common header file. Signed-off-by: ChenXiaoSong --- fs/smb/client/cifspdu.h | 5 ----- fs/smb/common/smb1pdu.h | 6 ++++++ fs/smb/server/smb2pdu.c | 4 ++-- fs/smb/server/smb_common.h | 5 ----- 4 files changed, 8 insertions(+), 12 deletions(-) diff --git a/fs/smb/client/cifspdu.h b/fs/smb/client/cifspdu.h index 7c781b17f73b..731cec5ab8a9 100644 --- a/fs/smb/client/cifspdu.h +++ b/fs/smb/client/cifspdu.h @@ -1938,11 +1938,6 @@ typedef struct { #define FILE_PORTABLE_DEVICE 0x00004000 #define FILE_DEVICE_ALLOW_APPCONTAINER_TRAVERSAL 0x00020000 =20 -typedef struct { - __le32 DeviceType; - __le32 DeviceCharacteristics; -} __attribute__((packed)) FILE_SYSTEM_DEVICE_INFO; /* device info level 0x= 104 */ - /* minimum includes first three fields, and empty FS Name */ #define MIN_FS_ATTR_INFO_SIZE 12 =20 diff --git a/fs/smb/common/smb1pdu.h b/fs/smb/common/smb1pdu.h index 37d1eb0b1fbe..aa15825706d3 100644 --- a/fs/smb/common/smb1pdu.h +++ b/fs/smb/common/smb1pdu.h @@ -319,6 +319,12 @@ typedef struct server_negotiate_rsp { __le16 ByteCount; } __packed SERVER_NEGOTIATE_RSP; =20 +/* See MS-CIFS 2.2.8.2.5 */ +typedef struct { + __le32 DeviceType; + __le32 DeviceCharacteristics; +} __packed FILE_SYSTEM_DEVICE_INFO; /* device info level 0x104 */ + /* List of FileSystemAttributes - see 2.5.1 of MS-FSCC */ #define FILE_SUPPORTS_SPARSE_VDL 0x10000000 /* faster nonsparse extend */ #define FILE_SUPPORTS_BLOCK_REFCOUNTING 0x08000000 /* allow ioctl dup exte= nts */ diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c index d0a077730387..eea7d4c89063 100644 --- a/fs/smb/server/smb2pdu.c +++ b/fs/smb/server/smb2pdu.c @@ -5476,9 +5476,9 @@ static int smb2_get_info_filesystem(struct ksmbd_work= *work, switch (fsinfoclass) { case FS_DEVICE_INFORMATION: { - struct filesystem_device_info *info; + FILE_SYSTEM_DEVICE_INFO *info; =20 - info =3D (struct filesystem_device_info *)rsp->Buffer; + info =3D (FILE_SYSTEM_DEVICE_INFO *)rsp->Buffer; =20 info->DeviceType =3D cpu_to_le32(FILE_DEVICE_DISK); info->DeviceCharacteristics =3D diff --git a/fs/smb/server/smb_common.h b/fs/smb/server/smb_common.h index 09861be254c6..3f90f0999549 100644 --- a/fs/smb/server/smb_common.h +++ b/fs/smb/server/smb_common.h @@ -57,11 +57,6 @@ FILE_EXECUTE | FILE_DELETE_CHILD | \ FILE_READ_ATTRIBUTES | FILE_WRITE_ATTRIBUTES) =20 -struct filesystem_device_info { - __le32 DeviceType; - __le32 DeviceCharacteristics; -} __packed; /* device info level 0x104 */ - struct filesystem_vol_info { __le64 VolumeCreationTime; __le32 SerialNumber; --=20 2.43.0 From nobody Sat Feb 7 15:15:15 2026 Received: from out-188.mta1.migadu.com (out-188.mta1.migadu.com [95.215.58.188]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C029E2E092A for ; Mon, 27 Oct 2025 07:15:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.188 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549347; cv=none; b=n2a+YAcFV8Bls7MLHWcOhA9wa7ERWRxeFuFUUGvDyzRYBAVNFCpY/bpzjAlgEM+FPc4kYZTSXmcuh3AAyQYTM8Q2FZbDOTwU5n1bfLNCYhgLka0yKnyjPQoYseeR+4HBTcFzCFKgekMJry8sMBobjYYhnZC5bZbJ8AKZukVGN3E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549347; c=relaxed/simple; bh=sSgvySHYn73WVcHABWrP++pKx0AaJJc0ZR1U3i59mJk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GfvmSHDXIgOxvg+1HYQXV1O3WK/m+iqZgwBq+ddOku3PLh3lUso3WE3lxuPfY86FfclpkCO4HrHjh8YSDMGa2lkqcVPBZgGGJVZCDAICB0DOBEwO72mbCLf4BLMBH2AR2F0SFCbioNolw3wxJlQXZGUcoDByrPHe4xTsTUlo7c4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=Lfes5LtE; arc=none smtp.client-ip=95.215.58.188 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="Lfes5LtE" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1761549343; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Fln7RtN3sttj6OJ+hiE2faOu7AwAyLYF8lSUcaF6FGY=; b=Lfes5LtEhoEDy2j3VpWTjL1tv6AKX6tDvsjaFgFMomwOBvBFNS5M33XROBgzUULS+9bJu6 SJFmZshMv1YZiHC8PEGpfvuGbve4SWb0B7p/sG2V0WQOlavUlcFJMpR0Njl90h1IFxaV3O vAaond/4+wt6aHkmyFDmbFgZsfu9e+4= From: chenxiaosong.chenxiaosong@linux.dev To: sfrench@samba.org, smfrench@gmail.com, linkinjeon@kernel.org, linkinjeon@samba.org, christophe.jaillet@wanadoo.fr Cc: linux-cifs@vger.kernel.org, linux-kernel@vger.kernel.org, ChenXiaoSong Subject: [PATCH v4 10/24] smb: move FILE_SYSTEM_INFO to common/smb1pdu.h Date: Mon, 27 Oct 2025 15:13:02 +0800 Message-ID: <20251027071316.3468472-11-chenxiaosong.chenxiaosong@linux.dev> In-Reply-To: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> References: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" From: ChenXiaoSong Rename "struct filesystem_info" to "FILE_SYSTEM_INFO", then move duplicate definitions to common header file. Signed-off-by: ChenXiaoSong --- fs/smb/client/cifspdu.h | 7 ------- fs/smb/common/smb1pdu.h | 8 ++++++++ fs/smb/server/smb2pdu.c | 4 ++-- fs/smb/server/smb_common.h | 7 ------- 4 files changed, 10 insertions(+), 16 deletions(-) diff --git a/fs/smb/client/cifspdu.h b/fs/smb/client/cifspdu.h index 731cec5ab8a9..d4addb0d7942 100644 --- a/fs/smb/client/cifspdu.h +++ b/fs/smb/client/cifspdu.h @@ -1828,13 +1828,6 @@ struct aliasInfo92 { int shareNameOffset; } __attribute__((packed)); =20 -typedef struct { - __le64 TotalAllocationUnits; - __le64 FreeAllocationUnits; - __le32 SectorsPerAllocationUnit; - __le32 BytesPerSector; -} __attribute__((packed)) FILE_SYSTEM_INFO; /* size info, level 0x103 */ - typedef struct { __le32 fsid; __le32 SectorsPerAllocationUnit; diff --git a/fs/smb/common/smb1pdu.h b/fs/smb/common/smb1pdu.h index aa15825706d3..02b8cda74f47 100644 --- a/fs/smb/common/smb1pdu.h +++ b/fs/smb/common/smb1pdu.h @@ -319,6 +319,14 @@ typedef struct server_negotiate_rsp { __le16 ByteCount; } __packed SERVER_NEGOTIATE_RSP; =20 +/* See MS-CIFS 2.2.8.2.4 */ +typedef struct { + __le64 TotalAllocationUnits; + __le64 FreeAllocationUnits; + __le32 SectorsPerAllocationUnit; + __le32 BytesPerSector; +} __packed FILE_SYSTEM_INFO; /* size info, level 0x103 */ + /* See MS-CIFS 2.2.8.2.5 */ typedef struct { __le32 DeviceType; diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c index eea7d4c89063..d063d2827868 100644 --- a/fs/smb/server/smb2pdu.c +++ b/fs/smb/server/smb2pdu.c @@ -5546,9 +5546,9 @@ static int smb2_get_info_filesystem(struct ksmbd_work= *work, } case FS_SIZE_INFORMATION: { - struct filesystem_info *info; + FILE_SYSTEM_INFO *info; =20 - info =3D (struct filesystem_info *)(rsp->Buffer); + info =3D (FILE_SYSTEM_INFO *)(rsp->Buffer); info->TotalAllocationUnits =3D cpu_to_le64(stfs.f_blocks); info->FreeAllocationUnits =3D cpu_to_le64(stfs.f_bfree); info->SectorsPerAllocationUnit =3D cpu_to_le32(1); diff --git a/fs/smb/server/smb_common.h b/fs/smb/server/smb_common.h index 3f90f0999549..d8aeab6115f5 100644 --- a/fs/smb/server/smb_common.h +++ b/fs/smb/server/smb_common.h @@ -65,13 +65,6 @@ struct filesystem_vol_info { __le16 VolumeLabel[]; } __packed; =20 -struct filesystem_info { - __le64 TotalAllocationUnits; - __le64 FreeAllocationUnits; - __le32 SectorsPerAllocationUnit; - __le32 BytesPerSector; -} __packed; /* size info, level 0x103 */ - #define EXTENDED_INFO_MAGIC 0x43667364 /* Cfsd */ #define STRING_LENGTH 28 =20 --=20 2.43.0 From nobody Sat Feb 7 15:15:15 2026 Received: from out-178.mta1.migadu.com (out-178.mta1.migadu.com [95.215.58.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C64412E1EEC for ; Mon, 27 Oct 2025 07:15:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549351; cv=none; b=ZaiLKh6V0lDDNKytJUTpkx6q+gDltMzwqVNMwZalUMBQD2+nljEIemGSRuQ5Pj1bhTAN11LubeP7quXaxFp/1xfkDxJo75YT2PC8aJ/VH6une+mji9P3F90LCJ8PZ5823cTywC0/E7er5ZnCCIwNhs0PI3JduHHwwoySJMsk0NM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549351; c=relaxed/simple; bh=O8KUB3CsooDHmf4ZflySRRm4E4n9y/C5l9t3/FEVHIo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=bqLg5f0cnryLqq7jvMbMs5c7cFbKjw4TMdrKqiB16uJCmdlD9TSPrAFtjgIWDWSitMcKmk/kNCzzBrxVWGOU8Z9sbKwqnvvgSqOX0JUQnO8llNPjIplDhpRRli9tcPOxgonc+oHq1EDld0crnKr2SxLFWsddt0NmC+59biN2t7s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=RZXTHwov; arc=none smtp.client-ip=95.215.58.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="RZXTHwov" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1761549346; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=V9blrSrhjy6jjuF/Xoc8xDhBclo1M/7Y4sN8wwjEBzY=; b=RZXTHwovNpURRqDuEJ8ktS9OdrAL23Df2m82cP6jCYSgMuRZIhC0azKxaqR922at5OaJz8 Iqar5GKIyg968qvvI5WQiqDPYjNJ1OYAZurZv5hIPYC/QapYafDXDZ+RsrAH64svgGOv6a lwUlAwPE+XiM/Ku7pnjfpxzQSzjV2FA= From: chenxiaosong.chenxiaosong@linux.dev To: sfrench@samba.org, smfrench@gmail.com, linkinjeon@kernel.org, linkinjeon@samba.org, christophe.jaillet@wanadoo.fr Cc: linux-cifs@vger.kernel.org, linux-kernel@vger.kernel.org, ChenXiaoSong Subject: [PATCH v4 11/24] smb: move FILE_DIRECTORY_INFO to common/smb1pdu.h Date: Mon, 27 Oct 2025 15:13:03 +0800 Message-ID: <20251027071316.3468472-12-chenxiaosong.chenxiaosong@linux.dev> In-Reply-To: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> References: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" From: ChenXiaoSong Rename "struct file_directory_info" to "FILE_DIRECTORY_INFO", then move duplicate definitions to common header file. Signed-off-by: ChenXiaoSong --- fs/smb/client/cifspdu.h | 14 -------------- fs/smb/common/smb1pdu.h | 15 +++++++++++++++ fs/smb/server/smb2pdu.c | 16 ++++++++-------- fs/smb/server/smb_common.h | 14 -------------- fs/smb/server/vfs.c | 2 +- 5 files changed, 24 insertions(+), 37 deletions(-) diff --git a/fs/smb/client/cifspdu.h b/fs/smb/client/cifspdu.h index d4addb0d7942..38e5b0a9f427 100644 --- a/fs/smb/client/cifspdu.h +++ b/fs/smb/client/cifspdu.h @@ -2159,20 +2159,6 @@ typedef struct { }; } __attribute__((packed)) FILE_UNIX_INFO; /* level 0x202 */ =20 -typedef struct { - __le32 NextEntryOffset; - __u32 FileIndex; - __le64 CreationTime; - __le64 LastAccessTime; - __le64 LastWriteTime; - __le64 ChangeTime; - __le64 EndOfFile; - __le64 AllocationSize; - __le32 ExtFileAttributes; - __le32 FileNameLength; - char FileName[]; -} __attribute__((packed)) FILE_DIRECTORY_INFO; /* level 0x101 FF resp da= ta */ - typedef struct { __le32 NextEntryOffset; __u32 FileIndex; diff --git a/fs/smb/common/smb1pdu.h b/fs/smb/common/smb1pdu.h index 02b8cda74f47..e6ddfb4c872c 100644 --- a/fs/smb/common/smb1pdu.h +++ b/fs/smb/common/smb1pdu.h @@ -368,4 +368,19 @@ typedef struct { __le16 FileSystemName[]; /* do not have to save this - get subset? */ } __packed FILE_SYSTEM_ATTRIBUTE_INFO; =20 +/* See MS-CIFS 2.2.8.1.4 */ +typedef struct { + __le32 NextEntryOffset; + __u32 FileIndex; + __le64 CreationTime; + __le64 LastAccessTime; + __le64 LastWriteTime; + __le64 ChangeTime; + __le64 EndOfFile; + __le64 AllocationSize; + __le32 ExtFileAttributes; + __le32 FileNameLength; + char FileName[]; +} __packed FILE_DIRECTORY_INFO; /* level 0x101 FF resp data */ + #endif /* _COMMON_SMB1_PDU_H */ diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c index d063d2827868..3f4646270f96 100644 --- a/fs/smb/server/smb2pdu.c +++ b/fs/smb/server/smb2pdu.c @@ -3800,7 +3800,7 @@ static int readdir_info_level_struct_sz(int info_leve= l) case FILE_BOTH_DIRECTORY_INFORMATION: return sizeof(struct file_both_directory_info); case FILE_DIRECTORY_INFORMATION: - return sizeof(struct file_directory_info); + return sizeof(FILE_DIRECTORY_INFO); case FILE_NAMES_INFORMATION: return sizeof(struct file_names_info); case FILEID_FULL_DIRECTORY_INFORMATION: @@ -3839,9 +3839,9 @@ static int dentry_name(struct ksmbd_dir_info *d_info,= int info_level) } case FILE_DIRECTORY_INFORMATION: { - struct file_directory_info *fdinfo; + FILE_DIRECTORY_INFO *fdinfo; =20 - fdinfo =3D (struct file_directory_info *)d_info->rptr; + fdinfo =3D (FILE_DIRECTORY_INFO *)d_info->rptr; d_info->rptr +=3D le32_to_cpu(fdinfo->NextEntryOffset); d_info->name =3D fdinfo->FileName; d_info->name_len =3D le32_to_cpu(fdinfo->FileNameLength); @@ -3978,9 +3978,9 @@ static int smb2_populate_readdir_entry(struct ksmbd_c= onn *conn, int info_level, } case FILE_DIRECTORY_INFORMATION: { - struct file_directory_info *fdinfo; + FILE_DIRECTORY_INFO *fdinfo; =20 - fdinfo =3D (struct file_directory_info *)kstat; + fdinfo =3D (FILE_DIRECTORY_INFO *)kstat; fdinfo->FileNameLength =3D cpu_to_le32(conv_len); if (d_info->hide_dot_file && d_info->name[0] =3D=3D '.') fdinfo->ExtFileAttributes |=3D FILE_ATTRIBUTE_HIDDEN_LE; @@ -4228,9 +4228,9 @@ static int reserve_populate_dentry(struct ksmbd_dir_i= nfo *d_info, } case FILE_DIRECTORY_INFORMATION: { - struct file_directory_info *fdinfo; + FILE_DIRECTORY_INFO *fdinfo; =20 - fdinfo =3D (struct file_directory_info *)d_info->wptr; + fdinfo =3D (FILE_DIRECTORY_INFO *)d_info->wptr; memcpy(fdinfo->FileName, d_info->name, d_info->name_len); fdinfo->FileName[d_info->name_len] =3D 0x00; fdinfo->FileNameLength =3D cpu_to_le32(d_info->name_len); @@ -4514,7 +4514,7 @@ int smb2_query_dir(struct ksmbd_work *work) goto err_out; } else { no_buf_len: - ((struct file_directory_info *) + ((FILE_DIRECTORY_INFO *) ((char *)rsp->Buffer + d_info.last_entry_offset)) ->NextEntryOffset =3D 0; if (d_info.data_count >=3D d_info.last_entry_off_align) diff --git a/fs/smb/server/smb_common.h b/fs/smb/server/smb_common.h index d8aeab6115f5..f983231544a6 100644 --- a/fs/smb/server/smb_common.h +++ b/fs/smb/server/smb_common.h @@ -81,20 +81,6 @@ struct object_id_info { struct fs_extended_info extended_info; } __packed; =20 -struct file_directory_info { - __le32 NextEntryOffset; - __u32 FileIndex; - __le64 CreationTime; - __le64 LastAccessTime; - __le64 LastWriteTime; - __le64 ChangeTime; - __le64 EndOfFile; - __le64 AllocationSize; - __le32 ExtFileAttributes; - __le32 FileNameLength; - char FileName[]; -} __packed; /* level 0x101 FF resp data */ - struct file_names_info { __le32 NextEntryOffset; __u32 FileIndex; diff --git a/fs/smb/server/vfs.c b/fs/smb/server/vfs.c index 891ed2dc2b73..a8660487e4ae 100644 --- a/fs/smb/server/vfs.c +++ b/fs/smb/server/vfs.c @@ -1654,7 +1654,7 @@ int ksmbd_vfs_get_dos_attrib_xattr(struct mnt_idmap *= idmap, */ void *ksmbd_vfs_init_kstat(char **p, struct ksmbd_kstat *ksmbd_kstat) { - struct file_directory_info *info =3D (struct file_directory_info *)(*p); + FILE_DIRECTORY_INFO *info =3D (FILE_DIRECTORY_INFO *)(*p); struct kstat *kstat =3D ksmbd_kstat->kstat; u64 time; =20 --=20 2.43.0 From nobody Sat Feb 7 15:15:15 2026 Received: from out-172.mta1.migadu.com (out-172.mta1.migadu.com [95.215.58.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BEDE12E1EE5 for ; Mon, 27 Oct 2025 07:15:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549351; cv=none; b=M/mw50dDNfiF2qppUMyziiDIjBwVWX1WClvrwjn3pJV4BxTniZdoiXqmgzOXIjhzuLxmebbCQMqy5JpvqciLMbpDjuibJij7ZBf74KMFE9kGCMUtiSWWTRd4/IIWXNST0CIneVTgA04yDrRPstwCISKFJLbAP0eHkaqxRXbWbSs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549351; c=relaxed/simple; bh=IndoSXH2ou0aF/fRc06jqEDEEUFNfhtXoJ4JuENjVzI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=k43XRmJ1Pv7OXX179haamt2F5JUCKtBG1F38SdaBkJhEvaGuok7HCyW0b6i/2LmPRZusl8bH2N8H/IwSt9+lmkMg3ERscnMH2cbE1u82gtXV9JHuc/decZM3PzhJKc4A8QV36HFRskBFgX4AS0aEpqA4klx8JdvU+GnzFIglHqc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=Cwv8vQJZ; arc=none smtp.client-ip=95.215.58.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="Cwv8vQJZ" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1761549348; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=EVNtKBx0XWXQXiJZ6wm6RDStT2J48tKNnVVivE/hPos=; b=Cwv8vQJZZA0i+GR0fsdyi+ypdYMKaiXBXAdJ5kFqwMT6MQax5GPMGxu2V2HT/zWvc39UGZ na3DjpKNkMCvBln2YJixbqqjLpCGaB1yHvl2FAV2voFhtZmzern+3AGks9iUSZ/PtkJ7oo kkdRzWveuKWEoJvasOncCLAZNdv2x/s= From: chenxiaosong.chenxiaosong@linux.dev To: sfrench@samba.org, smfrench@gmail.com, linkinjeon@kernel.org, linkinjeon@samba.org, christophe.jaillet@wanadoo.fr Cc: linux-cifs@vger.kernel.org, linux-kernel@vger.kernel.org, ChenXiaoSong Subject: [PATCH v4 12/24] smb: move FILE_FULL_DIRECTORY_INFO to common/smb1pdu.h Date: Mon, 27 Oct 2025 15:13:04 +0800 Message-ID: <20251027071316.3468472-13-chenxiaosong.chenxiaosong@linux.dev> In-Reply-To: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> References: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" From: ChenXiaoSong Rename "struct file_full_directory_info" to "FILE_FULL_DIRECTORY_INFO", then move duplicate definitions to common header file. Signed-off-by: ChenXiaoSong --- fs/smb/client/cifspdu.h | 15 --------------- fs/smb/common/smb1pdu.h | 16 ++++++++++++++++ fs/smb/server/smb2pdu.c | 14 +++++++------- fs/smb/server/smb_common.h | 15 --------------- 4 files changed, 23 insertions(+), 37 deletions(-) diff --git a/fs/smb/client/cifspdu.h b/fs/smb/client/cifspdu.h index 38e5b0a9f427..8cf01f04153b 100644 --- a/fs/smb/client/cifspdu.h +++ b/fs/smb/client/cifspdu.h @@ -2159,21 +2159,6 @@ typedef struct { }; } __attribute__((packed)) FILE_UNIX_INFO; /* level 0x202 */ =20 -typedef struct { - __le32 NextEntryOffset; - __u32 FileIndex; - __le64 CreationTime; - __le64 LastAccessTime; - __le64 LastWriteTime; - __le64 ChangeTime; - __le64 EndOfFile; - __le64 AllocationSize; - __le32 ExtFileAttributes; - __le32 FileNameLength; - __le32 EaSize; /* length of the xattrs */ - char FileName[]; -} __attribute__((packed)) FILE_FULL_DIRECTORY_INFO; /* level 0x102 rsp dat= a */ - typedef struct { __le32 NextEntryOffset; __u32 FileIndex; diff --git a/fs/smb/common/smb1pdu.h b/fs/smb/common/smb1pdu.h index e6ddfb4c872c..bd2a78c75902 100644 --- a/fs/smb/common/smb1pdu.h +++ b/fs/smb/common/smb1pdu.h @@ -383,4 +383,20 @@ typedef struct { char FileName[]; } __packed FILE_DIRECTORY_INFO; /* level 0x101 FF resp data */ =20 +/* See MS-CIFS 2.2.8.1.5 */ +typedef struct { + __le32 NextEntryOffset; + __u32 FileIndex; + __le64 CreationTime; + __le64 LastAccessTime; + __le64 LastWriteTime; + __le64 ChangeTime; + __le64 EndOfFile; + __le64 AllocationSize; + __le32 ExtFileAttributes; + __le32 FileNameLength; + __le32 EaSize; /* length of the xattrs */ + char FileName[]; +} __packed FILE_FULL_DIRECTORY_INFO; /* level 0x102 rsp data */ + #endif /* _COMMON_SMB1_PDU_H */ diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c index 3f4646270f96..36a60be72c63 100644 --- a/fs/smb/server/smb2pdu.c +++ b/fs/smb/server/smb2pdu.c @@ -3796,7 +3796,7 @@ static int readdir_info_level_struct_sz(int info_leve= l) { switch (info_level) { case FILE_FULL_DIRECTORY_INFORMATION: - return sizeof(struct file_full_directory_info); + return sizeof(FILE_FULL_DIRECTORY_INFO); case FILE_BOTH_DIRECTORY_INFORMATION: return sizeof(struct file_both_directory_info); case FILE_DIRECTORY_INFORMATION: @@ -3819,9 +3819,9 @@ static int dentry_name(struct ksmbd_dir_info *d_info,= int info_level) switch (info_level) { case FILE_FULL_DIRECTORY_INFORMATION: { - struct file_full_directory_info *ffdinfo; + FILE_FULL_DIRECTORY_INFO *ffdinfo; =20 - ffdinfo =3D (struct file_full_directory_info *)d_info->rptr; + ffdinfo =3D (FILE_FULL_DIRECTORY_INFO *)d_info->rptr; d_info->rptr +=3D le32_to_cpu(ffdinfo->NextEntryOffset); d_info->name =3D ffdinfo->FileName; d_info->name_len =3D le32_to_cpu(ffdinfo->FileNameLength); @@ -3944,9 +3944,9 @@ static int smb2_populate_readdir_entry(struct ksmbd_c= onn *conn, int info_level, switch (info_level) { case FILE_FULL_DIRECTORY_INFORMATION: { - struct file_full_directory_info *ffdinfo; + FILE_FULL_DIRECTORY_INFO *ffdinfo; =20 - ffdinfo =3D (struct file_full_directory_info *)kstat; + ffdinfo =3D (FILE_FULL_DIRECTORY_INFO *)kstat; ffdinfo->FileNameLength =3D cpu_to_le32(conv_len); ffdinfo->EaSize =3D smb2_get_reparse_tag_special_file(ksmbd_kstat->kstat->mode); @@ -4206,9 +4206,9 @@ static int reserve_populate_dentry(struct ksmbd_dir_i= nfo *d_info, switch (info_level) { case FILE_FULL_DIRECTORY_INFORMATION: { - struct file_full_directory_info *ffdinfo; + FILE_FULL_DIRECTORY_INFO *ffdinfo; =20 - ffdinfo =3D (struct file_full_directory_info *)d_info->wptr; + ffdinfo =3D (FILE_FULL_DIRECTORY_INFO *)d_info->wptr; memcpy(ffdinfo->FileName, d_info->name, d_info->name_len); ffdinfo->FileName[d_info->name_len] =3D 0x00; ffdinfo->FileNameLength =3D cpu_to_le32(d_info->name_len); diff --git a/fs/smb/server/smb_common.h b/fs/smb/server/smb_common.h index f983231544a6..023e3b933dd1 100644 --- a/fs/smb/server/smb_common.h +++ b/fs/smb/server/smb_common.h @@ -88,21 +88,6 @@ struct file_names_info { char FileName[]; } __packed; /* level 0xc FF resp data */ =20 -struct file_full_directory_info { - __le32 NextEntryOffset; - __u32 FileIndex; - __le64 CreationTime; - __le64 LastAccessTime; - __le64 LastWriteTime; - __le64 ChangeTime; - __le64 EndOfFile; - __le64 AllocationSize; - __le32 ExtFileAttributes; - __le32 FileNameLength; - __le32 EaSize; - char FileName[]; -} __packed; /* level 0x102 FF resp */ - struct file_both_directory_info { __le32 NextEntryOffset; __u32 FileIndex; --=20 2.43.0 From nobody Sat Feb 7 15:15:15 2026 Received: from out-173.mta1.migadu.com (out-173.mta1.migadu.com [95.215.58.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 133BB2E264D for ; Mon, 27 Oct 2025 07:15:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549354; cv=none; b=NvkroDESCbWoz1UzcfWsYRSb9rBpL1K4A4YLbCc7Ox9HHz+gHX2QSMjE/JueHfhhTIaYzKAuX4qxyNL9Mo3yS1S7qCaPH6s0c8arQhfsTWG1h5EicE6U17cDC6juro+KIXiLWhbf1LbC9PKHrluzpstXGhEu5OCsPzR6EdKVHZk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549354; c=relaxed/simple; bh=x5IvPi+zVIBpscGzduW/FHzyjDbbXeHzUUCF5tcvyPk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=uwtff58cPVQZYbVqN1n2z3yIZoTgRNVgU3Kdchq6ODVWd+zXJcLj7Wq6FLUN0IW6FOMyfDjTc5vwaqZpCxLCrQESG89AXAA/udGN2kK2iH0R4BtR1HjiNDzPWGzGX/xqMSstdm4hB6E024pk10KI2OZDOrOLWB2RzC+wokkqmUo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=s5SwCmnE; arc=none smtp.client-ip=95.215.58.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="s5SwCmnE" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1761549350; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=BNUm/R/QhScINFNbvi0WP2wwN2c8t5jYII8ZEWq1Vbo=; b=s5SwCmnELirSY+HOry8y8BoZTr0+9io00Mvm9cO+CSmebUygM7GLosKyqHUZRRZNssg2Ya MFKwTpkwi1a1BDf5kE7eXsdiKIX+PWRHzW4Bm5FkkMrY7QXHLGMS/gukloSRggNV4Z2luB 4QYD1D7C8Bs7aHtiCKtsQj9NSp4FMxs= From: chenxiaosong.chenxiaosong@linux.dev To: sfrench@samba.org, smfrench@gmail.com, linkinjeon@kernel.org, linkinjeon@samba.org, christophe.jaillet@wanadoo.fr Cc: linux-cifs@vger.kernel.org, linux-kernel@vger.kernel.org, ChenXiaoSong Subject: [PATCH v4 13/24] smb: move FILE_BOTH_DIRECTORY_INFO to common/smb1pdu.h Date: Mon, 27 Oct 2025 15:13:05 +0800 Message-ID: <20251027071316.3468472-14-chenxiaosong.chenxiaosong@linux.dev> In-Reply-To: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> References: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" From: ChenXiaoSong Rename "struct file_both_directory_info" to "FILE_BOTH_DIRECTORY_INFO", then move duplicate definitions to common header file. Signed-off-by: ChenXiaoSong --- fs/smb/client/cifspdu.h | 18 ------------------ fs/smb/common/smb1pdu.h | 19 +++++++++++++++++++ fs/smb/server/smb2pdu.c | 14 +++++++------- fs/smb/server/smb_common.h | 18 ------------------ 4 files changed, 26 insertions(+), 43 deletions(-) diff --git a/fs/smb/client/cifspdu.h b/fs/smb/client/cifspdu.h index 8cf01f04153b..8aac0e04f9fd 100644 --- a/fs/smb/client/cifspdu.h +++ b/fs/smb/client/cifspdu.h @@ -2176,24 +2176,6 @@ typedef struct { char FileName[]; } __attribute__((packed)) SEARCH_ID_FULL_DIR_INFO; /* level 0x105 FF rsp d= ata */ =20 -typedef struct { - __le32 NextEntryOffset; - __u32 FileIndex; - __le64 CreationTime; - __le64 LastAccessTime; - __le64 LastWriteTime; - __le64 ChangeTime; - __le64 EndOfFile; - __le64 AllocationSize; - __le32 ExtFileAttributes; - __le32 FileNameLength; - __le32 EaSize; /* length of the xattrs */ - __u8 ShortNameLength; - __u8 Reserved; - __u8 ShortName[24]; - char FileName[]; -} __attribute__((packed)) FILE_BOTH_DIRECTORY_INFO; /* level 0x104 FFrsp d= ata */ - typedef struct { __u32 ResumeKey; __le16 CreationDate; /* SMB Date */ diff --git a/fs/smb/common/smb1pdu.h b/fs/smb/common/smb1pdu.h index bd2a78c75902..0bc1e2373210 100644 --- a/fs/smb/common/smb1pdu.h +++ b/fs/smb/common/smb1pdu.h @@ -399,4 +399,23 @@ typedef struct { char FileName[]; } __packed FILE_FULL_DIRECTORY_INFO; /* level 0x102 rsp data */ =20 +/* See MS-CIFS 2.2.8.1.7 */ +typedef struct { + __le32 NextEntryOffset; + __u32 FileIndex; + __le64 CreationTime; + __le64 LastAccessTime; + __le64 LastWriteTime; + __le64 ChangeTime; + __le64 EndOfFile; + __le64 AllocationSize; + __le32 ExtFileAttributes; + __le32 FileNameLength; + __le32 EaSize; /* length of the xattrs */ + __u8 ShortNameLength; + __u8 Reserved; + __u8 ShortName[24]; + char FileName[]; +} __packed FILE_BOTH_DIRECTORY_INFO; /* level 0x104 FFrsp data */ + #endif /* _COMMON_SMB1_PDU_H */ diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c index 36a60be72c63..b6daac1cd080 100644 --- a/fs/smb/server/smb2pdu.c +++ b/fs/smb/server/smb2pdu.c @@ -3798,7 +3798,7 @@ static int readdir_info_level_struct_sz(int info_leve= l) case FILE_FULL_DIRECTORY_INFORMATION: return sizeof(FILE_FULL_DIRECTORY_INFO); case FILE_BOTH_DIRECTORY_INFORMATION: - return sizeof(struct file_both_directory_info); + return sizeof(FILE_BOTH_DIRECTORY_INFO); case FILE_DIRECTORY_INFORMATION: return sizeof(FILE_DIRECTORY_INFO); case FILE_NAMES_INFORMATION: @@ -3829,9 +3829,9 @@ static int dentry_name(struct ksmbd_dir_info *d_info,= int info_level) } case FILE_BOTH_DIRECTORY_INFORMATION: { - struct file_both_directory_info *fbdinfo; + FILE_BOTH_DIRECTORY_INFO *fbdinfo; =20 - fbdinfo =3D (struct file_both_directory_info *)d_info->rptr; + fbdinfo =3D (FILE_BOTH_DIRECTORY_INFO *)d_info->rptr; d_info->rptr +=3D le32_to_cpu(fbdinfo->NextEntryOffset); d_info->name =3D fbdinfo->FileName; d_info->name_len =3D le32_to_cpu(fbdinfo->FileNameLength); @@ -3960,9 +3960,9 @@ static int smb2_populate_readdir_entry(struct ksmbd_c= onn *conn, int info_level, } case FILE_BOTH_DIRECTORY_INFORMATION: { - struct file_both_directory_info *fbdinfo; + FILE_BOTH_DIRECTORY_INFO *fbdinfo; =20 - fbdinfo =3D (struct file_both_directory_info *)kstat; + fbdinfo =3D (FILE_BOTH_DIRECTORY_INFO *)kstat; fbdinfo->FileNameLength =3D cpu_to_le32(conv_len); fbdinfo->EaSize =3D smb2_get_reparse_tag_special_file(ksmbd_kstat->kstat->mode); @@ -4217,9 +4217,9 @@ static int reserve_populate_dentry(struct ksmbd_dir_i= nfo *d_info, } case FILE_BOTH_DIRECTORY_INFORMATION: { - struct file_both_directory_info *fbdinfo; + FILE_BOTH_DIRECTORY_INFO *fbdinfo; =20 - fbdinfo =3D (struct file_both_directory_info *)d_info->wptr; + fbdinfo =3D (FILE_BOTH_DIRECTORY_INFO *)d_info->wptr; memcpy(fbdinfo->FileName, d_info->name, d_info->name_len); fbdinfo->FileName[d_info->name_len] =3D 0x00; fbdinfo->FileNameLength =3D cpu_to_le32(d_info->name_len); diff --git a/fs/smb/server/smb_common.h b/fs/smb/server/smb_common.h index 023e3b933dd1..649b45695449 100644 --- a/fs/smb/server/smb_common.h +++ b/fs/smb/server/smb_common.h @@ -88,24 +88,6 @@ struct file_names_info { char FileName[]; } __packed; /* level 0xc FF resp data */ =20 -struct file_both_directory_info { - __le32 NextEntryOffset; - __u32 FileIndex; - __le64 CreationTime; - __le64 LastAccessTime; - __le64 LastWriteTime; - __le64 ChangeTime; - __le64 EndOfFile; - __le64 AllocationSize; - __le32 ExtFileAttributes; - __le32 FileNameLength; - __le32 EaSize; /* length of the xattrs */ - __u8 ShortNameLength; - __u8 Reserved; - __u8 ShortName[24]; - char FileName[]; -} __packed; /* level 0x104 FFrsp data */ - struct file_id_both_directory_info { __le32 NextEntryOffset; __u32 FileIndex; --=20 2.43.0 From nobody Sat Feb 7 15:15:15 2026 Received: from out-178.mta1.migadu.com (out-178.mta1.migadu.com [95.215.58.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EE4922E2EE4 for ; Mon, 27 Oct 2025 07:15:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549356; cv=none; b=q+AKQkGwD5g7c9X04X6z6TWG7HzSQQCFT789SyDej7AI0NVEEI7ED1anR4MYpIVnvO/gbOwNrv4Du9N+6nKNIpnvcey/cce/+1laC3PlqPNqW8ghd+6sfdAN/hSgwetsvlqCfw0gUKxvyGp0YrioMO8V/19Uva9pQl11hhW6FMU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549356; c=relaxed/simple; bh=wunBsqhsP068NiMoELqQshZ2wU0PGypzj8sZSqysckI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZzsdvYO029PHHVaGp2RPRPDvBt+Ks3A0oPQYTUk54J47LEVZhaSTBPiLpOcpBoZwUCKzPaoG5BcZT4maRex8+1WNb4hxISZkc9xzbm9SGZh6dWA7CIfbm2j5qreKCRZdx/CDE4bj2tQlT+TeraDjQWjjZqNutYqH1pD+QiyXzak= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=loz9ZqSu; arc=none smtp.client-ip=95.215.58.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="loz9ZqSu" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1761549352; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=z/npw3UtVzzHKnhWtUxEh+GVZ5zLFBAoolGZR5y2DWw=; b=loz9ZqSu9aQa6azazaDz56X0xJQFykTZsgk6bOh47LE53uDB1j1gZ1Xd2Rj4rsYiXjiJVW N0uZT+96MIv236wpBNZjFAfciYFF9y7zIXmaFXTvOuf4PuPJfH+zBN3zSBfYklNmWsViOB Pp6B3QYhcRfxiW/3KMqPCpWSy6JSxQQ= From: chenxiaosong.chenxiaosong@linux.dev To: sfrench@samba.org, smfrench@gmail.com, linkinjeon@kernel.org, linkinjeon@samba.org, christophe.jaillet@wanadoo.fr Cc: linux-cifs@vger.kernel.org, linux-kernel@vger.kernel.org, ChenXiaoSong Subject: [PATCH v4 14/24] smb: move SEARCH_ID_FULL_DIR_INFO to common/smb1pdu.h Date: Mon, 27 Oct 2025 15:13:06 +0800 Message-ID: <20251027071316.3468472-15-chenxiaosong.chenxiaosong@linux.dev> In-Reply-To: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> References: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" From: ChenXiaoSong Rename "struct file_id_full_dir_info" to "SEARCH_ID_FULL_DIR_INFO", then move duplicate definitions to common header file. Signed-off-by: ChenXiaoSong --- fs/smb/client/cifspdu.h | 17 ----------------- fs/smb/common/smb1pdu.h | 18 ++++++++++++++++++ fs/smb/server/smb2pdu.c | 14 +++++++------- fs/smb/server/smb_common.h | 17 ----------------- 4 files changed, 25 insertions(+), 41 deletions(-) diff --git a/fs/smb/client/cifspdu.h b/fs/smb/client/cifspdu.h index 8aac0e04f9fd..d106c6850807 100644 --- a/fs/smb/client/cifspdu.h +++ b/fs/smb/client/cifspdu.h @@ -2159,23 +2159,6 @@ typedef struct { }; } __attribute__((packed)) FILE_UNIX_INFO; /* level 0x202 */ =20 -typedef struct { - __le32 NextEntryOffset; - __u32 FileIndex; - __le64 CreationTime; - __le64 LastAccessTime; - __le64 LastWriteTime; - __le64 ChangeTime; - __le64 EndOfFile; - __le64 AllocationSize; - __le32 ExtFileAttributes; - __le32 FileNameLength; - __le32 EaSize; /* EA size */ - __le32 Reserved; - __le64 UniqueId; /* inode num - le since Samba puts ino in low 32 bit*/ - char FileName[]; -} __attribute__((packed)) SEARCH_ID_FULL_DIR_INFO; /* level 0x105 FF rsp d= ata */ - typedef struct { __u32 ResumeKey; __le16 CreationDate; /* SMB Date */ diff --git a/fs/smb/common/smb1pdu.h b/fs/smb/common/smb1pdu.h index 0bc1e2373210..82331a8f70e8 100644 --- a/fs/smb/common/smb1pdu.h +++ b/fs/smb/common/smb1pdu.h @@ -399,6 +399,24 @@ typedef struct { char FileName[]; } __packed FILE_FULL_DIRECTORY_INFO; /* level 0x102 rsp data */ =20 +/* See MS-SMB 2.2.8.1.2 */ +typedef struct { + __le32 NextEntryOffset; + __u32 FileIndex; + __le64 CreationTime; + __le64 LastAccessTime; + __le64 LastWriteTime; + __le64 ChangeTime; + __le64 EndOfFile; + __le64 AllocationSize; + __le32 ExtFileAttributes; + __le32 FileNameLength; + __le32 EaSize; /* EA size */ + __le32 Reserved; + __le64 UniqueId; /* inode num - le since Samba puts ino in low 32 bit*/ + char FileName[]; +} __packed SEARCH_ID_FULL_DIR_INFO; /* level 0x105 FF rsp data */ + /* See MS-CIFS 2.2.8.1.7 */ typedef struct { __le32 NextEntryOffset; diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c index b6daac1cd080..47fab72a3588 100644 --- a/fs/smb/server/smb2pdu.c +++ b/fs/smb/server/smb2pdu.c @@ -3804,7 +3804,7 @@ static int readdir_info_level_struct_sz(int info_leve= l) case FILE_NAMES_INFORMATION: return sizeof(struct file_names_info); case FILEID_FULL_DIRECTORY_INFORMATION: - return sizeof(struct file_id_full_dir_info); + return sizeof(SEARCH_ID_FULL_DIR_INFO); case FILEID_BOTH_DIRECTORY_INFORMATION: return sizeof(struct file_id_both_directory_info); case SMB_FIND_FILE_POSIX_INFO: @@ -3859,9 +3859,9 @@ static int dentry_name(struct ksmbd_dir_info *d_info,= int info_level) } case FILEID_FULL_DIRECTORY_INFORMATION: { - struct file_id_full_dir_info *dinfo; + SEARCH_ID_FULL_DIR_INFO *dinfo; =20 - dinfo =3D (struct file_id_full_dir_info *)d_info->rptr; + dinfo =3D (SEARCH_ID_FULL_DIR_INFO *)d_info->rptr; d_info->rptr +=3D le32_to_cpu(dinfo->NextEntryOffset); d_info->name =3D dinfo->FileName; d_info->name_len =3D le32_to_cpu(dinfo->FileNameLength); @@ -4000,9 +4000,9 @@ static int smb2_populate_readdir_entry(struct ksmbd_c= onn *conn, int info_level, } case FILEID_FULL_DIRECTORY_INFORMATION: { - struct file_id_full_dir_info *dinfo; + SEARCH_ID_FULL_DIR_INFO *dinfo; =20 - dinfo =3D (struct file_id_full_dir_info *)kstat; + dinfo =3D (SEARCH_ID_FULL_DIR_INFO *)kstat; dinfo->FileNameLength =3D cpu_to_le32(conv_len); dinfo->EaSize =3D smb2_get_reparse_tag_special_file(ksmbd_kstat->kstat->mode); @@ -4250,9 +4250,9 @@ static int reserve_populate_dentry(struct ksmbd_dir_i= nfo *d_info, } case FILEID_FULL_DIRECTORY_INFORMATION: { - struct file_id_full_dir_info *dinfo; + SEARCH_ID_FULL_DIR_INFO *dinfo; =20 - dinfo =3D (struct file_id_full_dir_info *)d_info->wptr; + dinfo =3D (SEARCH_ID_FULL_DIR_INFO *)d_info->wptr; memcpy(dinfo->FileName, d_info->name, d_info->name_len); dinfo->FileName[d_info->name_len] =3D 0x00; dinfo->FileNameLength =3D cpu_to_le32(d_info->name_len); diff --git a/fs/smb/server/smb_common.h b/fs/smb/server/smb_common.h index 649b45695449..6141ca8f7e1c 100644 --- a/fs/smb/server/smb_common.h +++ b/fs/smb/server/smb_common.h @@ -108,23 +108,6 @@ struct file_id_both_directory_info { char FileName[]; } __packed; =20 -struct file_id_full_dir_info { - __le32 NextEntryOffset; - __u32 FileIndex; - __le64 CreationTime; - __le64 LastAccessTime; - __le64 LastWriteTime; - __le64 ChangeTime; - __le64 EndOfFile; - __le64 AllocationSize; - __le32 ExtFileAttributes; - __le32 FileNameLength; - __le32 EaSize; /* EA size */ - __le32 Reserved; - __le64 UniqueId; /* inode num - le since Samba puts ino in low 32 bit*/ - char FileName[]; -} __packed; /* level 0x105 FF rsp data */ - struct filesystem_posix_info { /* For undefined recommended transfer size return -1 in that field */ __le32 OptimalTransferSize; /* bsize on some os, iosize on other os */ --=20 2.43.0 From nobody Sat Feb 7 15:15:15 2026 Received: from out-173.mta1.migadu.com (out-173.mta1.migadu.com [95.215.58.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 094362DC32E for ; Mon, 27 Oct 2025 07:23:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549823; cv=none; b=o9aQbzC0dlQWijXo1XB+iV9EoFgJRb6MYnjWBirPxOR6CJissEiBxnXWRj8jIsLI/lGllUe4H5jK5RUFn6TZG5A9/XK/mgz0tC3sbJeatVI/zUg2yLKiXNPW+nvk4jO6kS55zTI1/PXWaSu+2xpiDOuJXQfNgzBwA+eCVLXrF2E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549823; c=relaxed/simple; bh=l8BD7QfW2FSxm2c/BaEUHcS47Ymf6ZkM7QdWD8nmSn4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qCIRgD+6LsNPweoQH9kOetQKQtQRxj7p7AfyINsmU+Uzuwi+ImjO7ahplgpswRxW8gdrJwBq5rSyem7qFe6VPlHxhUS05Mt5LuifZcvoCgug1zgpK6XoFCYmVm+X+ZJWc7tKc9IK3KR5BBSazM4QHca5I4rcLcL+qog6LlCRnwE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=j+NpceZ7; arc=none smtp.client-ip=95.215.58.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="j+NpceZ7" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1761549819; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6Og3g5dzTtBlvUPqj5tYPaMTomYta2UJHYWFWEpJyaA=; b=j+NpceZ7LSMvfeTVgiE1TvQwbEdID+27dVn1jvkU2QvtNOJEnIy/Sjr/g+7QPue6xBwSAX 069LmwLgGsn0Sbatnl9JK2pLEY/P9bujwDyYFtQaRGMzT5Z6j+ovgEZAk37x/b3zeMYmCs Y57GNcmz5kE5ATVBxe/HUs9FHNt1uXE= From: chenxiaosong.chenxiaosong@linux.dev To: sfrench@samba.org, smfrench@gmail.com, linkinjeon@kernel.org, linkinjeon@samba.org, christophe.jaillet@wanadoo.fr Cc: linux-cifs@vger.kernel.org, linux-kernel@vger.kernel.org, ChenXiaoSong Subject: [PATCH v4 15/24] smb: move FILE_SYSTEM_POSIX_INFO to common/smb1pdu.h Date: Mon, 27 Oct 2025 15:21:57 +0800 Message-ID: <20251027072206.3468578-1-chenxiaosong.chenxiaosong@linux.dev> In-Reply-To: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> References: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" From: ChenXiaoSong Rename "struct filesystem_posix_info" to "FILE_SYSTEM_POSIX_INFO", then move duplicate definitions to common header file. Signed-off-by: ChenXiaoSong --- fs/smb/client/cifspdu.h | 22 ---------------------- fs/smb/common/smb1pdu.h | 23 +++++++++++++++++++++++ fs/smb/server/smb2pdu.c | 4 ++-- fs/smb/server/smb_common.h | 23 ----------------------- 4 files changed, 25 insertions(+), 47 deletions(-) diff --git a/fs/smb/client/cifspdu.h b/fs/smb/client/cifspdu.h index d106c6850807..55aaae6dbc86 100644 --- a/fs/smb/client/cifspdu.h +++ b/fs/smb/client/cifspdu.h @@ -1875,28 +1875,6 @@ typedef struct { =20 #define CIFS_POSIX_EXTENSIONS 0x00000010 /* support for new QFSI= nfo */ =20 -typedef struct { - /* For undefined recommended transfer size return -1 in that field */ - __le32 OptimalTransferSize; /* bsize on some os, iosize on other os */ - __le32 BlockSize; - /* The next three fields are in terms of the block size. - (above). If block size is unknown, 4096 would be a - reasonable block size for a server to report. - Note that returning the blocks/blocksavail removes need - to make a second call (to QFSInfo level 0x103 to get this info. - UserBlockAvail is typically less than or equal to BlocksAvail, - if no distinction is made return the same value in each */ - __le64 TotalBlocks; - __le64 BlocksAvail; /* bfree */ - __le64 UserBlocksAvail; /* bavail */ - /* For undefined Node fields or FSID return -1 */ - __le64 TotalFileNodes; - __le64 FreeFileNodes; - __le64 FileSysIdentifier; /* fsid */ - /* NB Namelen comes from FILE_SYSTEM_ATTRIBUTE_INFO call */ - /* NB flags can come from FILE_SYSTEM_DEVICE_INFO call */ -} __attribute__((packed)) FILE_SYSTEM_POSIX_INFO; - /* DeviceType Flags */ #define FILE_DEVICE_CD_ROM 0x00000002 #define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003 diff --git a/fs/smb/common/smb1pdu.h b/fs/smb/common/smb1pdu.h index 82331a8f70e8..38b9c091baab 100644 --- a/fs/smb/common/smb1pdu.h +++ b/fs/smb/common/smb1pdu.h @@ -327,6 +327,29 @@ typedef struct { __le32 BytesPerSector; } __packed FILE_SYSTEM_INFO; /* size info, level 0x103 */ =20 +typedef struct { + /* For undefined recommended transfer size return -1 in that field */ + __le32 OptimalTransferSize; /* bsize on some os, iosize on other os */ + __le32 BlockSize; + /* The next three fields are in terms of the block size. + * (above). If block size is unknown, 4096 would be a + * reasonable block size for a server to report. + * Note that returning the blocks/blocksavail removes need + * to make a second call (to QFSInfo level 0x103 to get this info. + * UserBlockAvail is typically less than or equal to BlocksAvail, + * if no distinction is made return the same value in each + */ + __le64 TotalBlocks; + __le64 BlocksAvail; /* bfree */ + __le64 UserBlocksAvail; /* bavail */ + /* For undefined Node fields or FSID return -1 */ + __le64 TotalFileNodes; + __le64 FreeFileNodes; + __le64 FileSysIdentifier; /* fsid */ + /* NB Namelen comes from FILE_SYSTEM_ATTRIBUTE_INFO call */ + /* NB flags can come from FILE_SYSTEM_DEVICE_INFO call */ +} __packed FILE_SYSTEM_POSIX_INFO; + /* See MS-CIFS 2.2.8.2.5 */ typedef struct { __le32 DeviceType; diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c index 47fab72a3588..dc0f0ed4ccb6 100644 --- a/fs/smb/server/smb2pdu.c +++ b/fs/smb/server/smb2pdu.c @@ -5633,14 +5633,14 @@ static int smb2_get_info_filesystem(struct ksmbd_wo= rk *work, } case FS_POSIX_INFORMATION: { - struct filesystem_posix_info *info; + FILE_SYSTEM_POSIX_INFO *info; =20 if (!work->tcon->posix_extensions) { pr_err("client doesn't negotiate with SMB3.1.1 POSIX Extensions\n"); path_put(&path); return -EOPNOTSUPP; } else { - info =3D (struct filesystem_posix_info *)(rsp->Buffer); + info =3D (FILE_SYSTEM_POSIX_INFO *)(rsp->Buffer); info->OptimalTransferSize =3D cpu_to_le32(stfs.f_bsize); info->BlockSize =3D cpu_to_le32(stfs.f_bsize); info->TotalBlocks =3D cpu_to_le64(stfs.f_blocks); diff --git a/fs/smb/server/smb_common.h b/fs/smb/server/smb_common.h index 6141ca8f7e1c..61048568f4c7 100644 --- a/fs/smb/server/smb_common.h +++ b/fs/smb/server/smb_common.h @@ -108,29 +108,6 @@ struct file_id_both_directory_info { char FileName[]; } __packed; =20 -struct filesystem_posix_info { - /* For undefined recommended transfer size return -1 in that field */ - __le32 OptimalTransferSize; /* bsize on some os, iosize on other os */ - __le32 BlockSize; - /* The next three fields are in terms of the block size. - * (above). If block size is unknown, 4096 would be a - * reasonable block size for a server to report. - * Note that returning the blocks/blocksavail removes need - * to make a second call (to QFSInfo level 0x103 to get this info. - * UserBlockAvail is typically less than or equal to BlocksAvail, - * if no distinction is made return the same value in each - */ - __le64 TotalBlocks; - __le64 BlocksAvail; /* bfree */ - __le64 UserBlocksAvail; /* bavail */ - /* For undefined Node fields or FSID return -1 */ - __le64 TotalFileNodes; - __le64 FreeFileNodes; - __le64 FileSysIdentifier; /* fsid */ - /* NB Namelen comes from FILE_SYSTEM_ATTRIBUTE_INFO call */ - /* NB flags can come from FILE_SYSTEM_DEVICE_INFO call */ -} __packed; - struct smb_version_ops { u16 (*get_cmd_val)(struct ksmbd_work *swork); int (*init_rsp_hdr)(struct ksmbd_work *swork); --=20 2.43.0 From nobody Sat Feb 7 15:15:15 2026 Received: from out-178.mta1.migadu.com (out-178.mta1.migadu.com [95.215.58.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E1AB02DCBFA for ; Mon, 27 Oct 2025 07:23:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549825; cv=none; b=jZKBitMCYeJBijZXrNF2ooShDfESaYDz3j1EOeE138MUbO+locumIjkiR8trvKxhIjbLGwiACsQ9gRyQpFy/eZDJeWV9Z131e9ZB2CrNrX3/JsdeLHjUuBOmMbAI3jnf/+SYzlGziCJUe1Ef8KqE7VE556kFIz9EedNwhAtda8E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549825; c=relaxed/simple; bh=Zf6J3Hs4f2PorXqJZOx/hFVWj6S8Oc8vZdNa5KsWoCg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=gSR6rJnEREnVPYdxnT3t/Qy+tziQT3ACAslKRfLhQP91wtlVZN1jkaB/5JLqSvUWMDx723owQO4L4vglGVFfeis5wlsXRDAaZkciOXpo020NndI545PeP8uYF1lBFPwk5wrAfwzwG3cr2DXBEQwz8TyiD8YHhL4DVbMXpY5vErA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=Lc8F/9Oo; arc=none smtp.client-ip=95.215.58.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="Lc8F/9Oo" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1761549822; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=XY3enVx+NvA5c1N34me4+c6U2C2vkgiExeqfsy34gg4=; b=Lc8F/9Ooob/pZbJrTuEuibSyurS41EDeihqkYR0pdMPs4fj/TmNJvXzzxBgw0tcDXvBj7c opG7oq/Fl0I1vUfwAalgTX6iRq6YKVphGKFfxp+866J1IUBjqQDtsoKIQ0OWo+FPoSjP4o BcOxpvpCgkjKA1HSirMfTcefqlVf/5Q= From: chenxiaosong.chenxiaosong@linux.dev To: sfrench@samba.org, smfrench@gmail.com, linkinjeon@kernel.org, linkinjeon@samba.org, christophe.jaillet@wanadoo.fr Cc: linux-cifs@vger.kernel.org, linux-kernel@vger.kernel.org, ChenXiaoSong Subject: [PATCH v4 16/24] smb: move create_durable_req_v2 to common/smb2pdu.h Date: Mon, 27 Oct 2025 15:21:58 +0800 Message-ID: <20251027072206.3468578-2-chenxiaosong.chenxiaosong@linux.dev> In-Reply-To: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> References: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" From: ChenXiaoSong Replace some fields in "struct create_durable_req_v2" with "struct durable_context_v2", rename 2 places: - durable_context_v2 -> durable_context_v2_req - create_durable_v2 -> create_durable_req_v2 Then move duplicate definitions to common header file. Signed-off-by: ChenXiaoSong --- fs/smb/client/smb2pdu.c | 14 +++++++------- fs/smb/client/smb2pdu.h | 12 ------------ fs/smb/common/smb2pdu.h | 14 ++++++++++++++ fs/smb/server/smb2pdu.c | 8 ++++---- fs/smb/server/smb2pdu.h | 9 --------- 5 files changed, 25 insertions(+), 32 deletions(-) diff --git a/fs/smb/client/smb2pdu.c b/fs/smb/client/smb2pdu.c index b0739a2661bf..c1f67864c84b 100644 --- a/fs/smb/client/smb2pdu.c +++ b/fs/smb/client/smb2pdu.c @@ -2424,21 +2424,21 @@ add_lease_context(struct TCP_Server_Info *server, return 0; } =20 -static struct create_durable_v2 * +static struct create_durable_req_v2 * create_durable_v2_buf(struct cifs_open_parms *oparms) { struct cifs_fid *pfid =3D oparms->fid; - struct create_durable_v2 *buf; + struct create_durable_req_v2 *buf; =20 - buf =3D kzalloc(sizeof(struct create_durable_v2), GFP_KERNEL); + buf =3D kzalloc(sizeof(struct create_durable_req_v2), GFP_KERNEL); if (!buf) return NULL; =20 buf->ccontext.DataOffset =3D cpu_to_le16(offsetof - (struct create_durable_v2, dcontext)); - buf->ccontext.DataLength =3D cpu_to_le32(sizeof(struct durable_context_v2= )); + (struct create_durable_req_v2, dcontext)); + buf->ccontext.DataLength =3D cpu_to_le32(sizeof(struct durable_context_v2= _req)); buf->ccontext.NameOffset =3D cpu_to_le16(offsetof - (struct create_durable_v2, Name)); + (struct create_durable_req_v2, Name)); buf->ccontext.NameLength =3D cpu_to_le16(4); =20 /* @@ -2508,7 +2508,7 @@ add_durable_v2_context(struct kvec *iov, unsigned int= *num_iovec, iov[num].iov_base =3D create_durable_v2_buf(oparms); if (iov[num].iov_base =3D=3D NULL) return -ENOMEM; - iov[num].iov_len =3D sizeof(struct create_durable_v2); + iov[num].iov_len =3D sizeof(struct create_durable_req_v2); *num_iovec =3D num + 1; return 0; } diff --git a/fs/smb/client/smb2pdu.h b/fs/smb/client/smb2pdu.h index 101024f8f725..94d184733f33 100644 --- a/fs/smb/client/smb2pdu.h +++ b/fs/smb/client/smb2pdu.h @@ -137,18 +137,6 @@ struct share_redirect_error_context_rsp { /* See MS-SMB2 2.2.13.2.11 */ /* Flags */ #define SMB2_DHANDLE_FLAG_PERSISTENT 0x00000002 -struct durable_context_v2 { - __le32 Timeout; - __le32 Flags; - __u64 Reserved; - __u8 CreateGuid[16]; -} __packed; - -struct create_durable_v2 { - struct create_context_hdr ccontext; - __u8 Name[8]; - struct durable_context_v2 dcontext; -} __packed; =20 /* See MS-SMB2 2.2.13.2.12 */ struct durable_reconnect_context_v2 { diff --git a/fs/smb/common/smb2pdu.h b/fs/smb/common/smb2pdu.h index f2fbd651ab8f..6a5c8eef357d 100644 --- a/fs/smb/common/smb2pdu.h +++ b/fs/smb/common/smb2pdu.h @@ -1284,6 +1284,20 @@ struct create_mxac_req { __le64 Timestamp; } __packed; =20 +/* See MS-SMB2 2.2.13.2.11 */ +struct durable_context_v2_req { + __le32 Timeout; + __le32 Flags; /* see SMB2_DHANDLE_FLAG_PERSISTENT */ + __u64 Reserved; + __u8 CreateGuid[16]; +} __packed; + +struct create_durable_req_v2 { + struct create_context_hdr ccontext; + __u8 Name[8]; + struct durable_context_v2_req dcontext; +} __packed; + /* See MS-SMB2 2.2.14.2.5 */ struct create_mxac_rsp { struct create_context_hdr ccontext; diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c index dc0f0ed4ccb6..92bd086ca715 100644 --- a/fs/smb/server/smb2pdu.c +++ b/fs/smb/server/smb2pdu.c @@ -2816,7 +2816,7 @@ static int parse_durable_handle_context(struct ksmbd_= work *work, durable_v2_blob =3D (struct create_durable_req_v2 *)context; ksmbd_debug(SMB, "Request for durable v2 open\n"); - dh_info->fp =3D ksmbd_lookup_fd_cguid(durable_v2_blob->CreateGuid); + dh_info->fp =3D ksmbd_lookup_fd_cguid(durable_v2_blob->dcontext.CreateG= uid); if (dh_info->fp) { if (!memcmp(conn->ClientGUID, dh_info->fp->client_guid, SMB2_CLIENT_GUID_SIZE)) { @@ -2834,11 +2834,11 @@ static int parse_durable_handle_context(struct ksmb= d_work *work, if ((lc && (lc->req_state & SMB2_LEASE_HANDLE_CACHING_LE)) || req_op_level =3D=3D SMB2_OPLOCK_LEVEL_BATCH) { dh_info->CreateGuid =3D - durable_v2_blob->CreateGuid; + durable_v2_blob->dcontext.CreateGuid; dh_info->persistent =3D - le32_to_cpu(durable_v2_blob->Flags); + le32_to_cpu(durable_v2_blob->dcontext.Flags); dh_info->timeout =3D - le32_to_cpu(durable_v2_blob->Timeout); + le32_to_cpu(durable_v2_blob->dcontext.Timeout); dh_info->type =3D dh_idx; } break; diff --git a/fs/smb/server/smb2pdu.h b/fs/smb/server/smb2pdu.h index 5163d5241b90..e9df94e4749c 100644 --- a/fs/smb/server/smb2pdu.h +++ b/fs/smb/server/smb2pdu.h @@ -66,15 +66,6 @@ struct preauth_integrity_info { /* Apple Defined Contexts */ #define SMB2_CREATE_AAPL "AAPL" =20 -struct create_durable_req_v2 { - struct create_context_hdr ccontext; - __u8 Name[8]; - __le32 Timeout; - __le32 Flags; - __u8 Reserved[8]; - __u8 CreateGuid[16]; -} __packed; - #define DURABLE_HANDLE_MAX_TIMEOUT 300000 =20 struct create_durable_reconn_req { --=20 2.43.0 From nobody Sat Feb 7 15:15:15 2026 Received: from out-182.mta1.migadu.com (out-182.mta1.migadu.com [95.215.58.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0DEA22DE704 for ; Mon, 27 Oct 2025 07:23:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549829; cv=none; b=VbJM8HAds6EUqv9L8d2DICdN1jU3OAsxjp5asyg2J96oJtteUrjXOG2Pw9cRhnYIbkQxKP3noJ2DEmkHqtG6c7EWq6AkEkKegcEKyxzFler9iU7ZYkhUdaQG/QEdvQ4jf0Ps/ApFT5UuvrjI3nVrVbtOFEvQWm4mNwMraya/DXY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549829; c=relaxed/simple; bh=SkqKBZXxog5ZlgIJHE7/3cbOvSRpBP3o9vlWXW2MInY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ieC5Ze7y/j3Y6wNZ67VlEj5bNtDXWPevwrl4dUY7YeIE1Qkc0tNDTD/jtwl0sQaKf8NRqEyVGQELzpPAz1kyJl9aNjFJuBE0VBNaHGO8HpFD0ZOs/wvzG/5y2mYpLK1Tv39hTTQwFID05VgDmxtjMnczkw7jt5zaP9jziwQqsbw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=U16ESKVa; arc=none smtp.client-ip=95.215.58.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="U16ESKVa" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1761549825; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=xKu16hoh+lI6u2jjZXA4ya5Kp6Jm/q+v+WgXhovtXEQ=; b=U16ESKVanqO8GSBjppjyWMStGL5vvn3vYX0ANm5RJ1ittTwnrziuaJkcvjK7rxYxnU/oUM /UOEZjC3i4FDxiZeD83oWjFSnCyhtklZnweDM59zYFmlO2mYXg7LfwTVoqYXKagHwbuNBG of/8OehPKmeTmpQjFox1HvXVRDpuBHY= From: chenxiaosong.chenxiaosong@linux.dev To: sfrench@samba.org, smfrench@gmail.com, linkinjeon@kernel.org, linkinjeon@samba.org, christophe.jaillet@wanadoo.fr Cc: linux-cifs@vger.kernel.org, linux-kernel@vger.kernel.org, ChenXiaoSong Subject: [PATCH v4 17/24] smb: move create_durable_handle_reconnect_v2 to common/smb2pdu.h Date: Mon, 27 Oct 2025 15:21:59 +0800 Message-ID: <20251027072206.3468578-3-chenxiaosong.chenxiaosong@linux.dev> In-Reply-To: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> References: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" From: ChenXiaoSong Replace some fields in "struct create_durable_reconn_v2_req" with "struct durable_reconnect_context_v2", rename "create_durable_reconn_v2_req" to "create_durable_handle_reconnect_v2", then move duplicate definitions to common header file. Signed-off-by: ChenXiaoSong --- fs/smb/client/smb2pdu.h | 17 ----------------- fs/smb/common/smb2pdu.h | 16 ++++++++++++++++ fs/smb/server/smb2pdu.c | 10 +++++----- fs/smb/server/smb2pdu.h | 11 ----------- 4 files changed, 21 insertions(+), 33 deletions(-) diff --git a/fs/smb/client/smb2pdu.h b/fs/smb/client/smb2pdu.h index 94d184733f33..23cf5ac713ee 100644 --- a/fs/smb/client/smb2pdu.h +++ b/fs/smb/client/smb2pdu.h @@ -138,29 +138,12 @@ struct share_redirect_error_context_rsp { /* Flags */ #define SMB2_DHANDLE_FLAG_PERSISTENT 0x00000002 =20 -/* 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; =20 -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; diff --git a/fs/smb/common/smb2pdu.h b/fs/smb/common/smb2pdu.h index 6a5c8eef357d..0fd1c8ad51c3 100644 --- a/fs/smb/common/smb2pdu.h +++ b/fs/smb/common/smb2pdu.h @@ -1298,6 +1298,22 @@ struct create_durable_req_v2 { struct durable_context_v2_req dcontext; } __packed; =20 +/* 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; diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c index 92bd086ca715..6b3503c7bfaa 100644 --- a/fs/smb/server/smb2pdu.c +++ b/fs/smb/server/smb2pdu.c @@ -2726,7 +2726,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; =20 if (dh_info->type =3D=3D DURABLE_RECONN || dh_info->type =3D=3D DURABLE_REQ_V2) { @@ -2736,13 +2736,13 @@ static int parse_durable_handle_context(struct ksmb= d_work *work, =20 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 =3D -EINVAL; goto out; } =20 - recon_v2 =3D (struct create_durable_reconn_v2_req *)context; - persistent_id =3D recon_v2->Fid.PersistentFileId; + recon_v2 =3D (struct create_durable_handle_reconnect_v2 *)context; + persistent_id =3D recon_v2->dcontext.Fid.PersistentFileId; dh_info->fp =3D ksmbd_lookup_durable_fd(persistent_id); if (!dh_info->fp) { ksmbd_debug(SMB, "Failed to get durable handle state\n"); @@ -2750,7 +2750,7 @@ static int parse_durable_handle_context(struct ksmbd_= work *work, goto out; } =20 - 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 =3D -EBADF; ksmbd_put_durable_fd(dh_info->fp); diff --git a/fs/smb/server/smb2pdu.h b/fs/smb/server/smb2pdu.h index e9df94e4749c..d27a587b134c 100644 --- a/fs/smb/server/smb2pdu.h +++ b/fs/smb/server/smb2pdu.h @@ -80,17 +80,6 @@ struct create_durable_reconn_req { } Data; } __packed; =20 -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]; --=20 2.43.0 From nobody Sat Feb 7 15:15:15 2026 Received: from out-186.mta1.migadu.com (out-186.mta1.migadu.com [95.215.58.186]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 589CA2DEA6E for ; Mon, 27 Oct 2025 07:23:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.186 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549831; cv=none; b=Y8ZJCXbb48bv3JCKzm8kYJbFTQkaNRAgngf4en8VMiIpIdj+Ko+TMySUHO+p5QG3Z4Czo0nNHaGYDz2BG6fRq2EQgPLTO4DTnHnqOteJ/x4wsXicj0OZ8/jn5fcNWjxun5R1uBvu6VOF4lk1DnRC9dr2wl7c/IhVRwU6I+NGA98= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549831; c=relaxed/simple; bh=XJNbF+vSu4+776URpUXpCLOJvtjIgvZEfnNX0/odM/8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GYFRBrGpvT+L5Ow1/xaJqYdiSR2Z0Ejqwvy1CSsSrNBnyd86nmmBOxHx4cdchUy1SW7SRSQJI12SQWZrA2lrL7kven5NOGK3lPxQOA4HYzdoEtIpQHiKmMEri96IvM8p6vDvVqERUdZQENV8AFNn1xGv+9fnc79npLTCw6qSiNo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=UplzdlEL; arc=none smtp.client-ip=95.215.58.186 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="UplzdlEL" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1761549827; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=gpxw7zZ//kFrOgRd8a2SnlcDsF6vADOPwFJ/FGSGt0Q=; b=UplzdlEL+/Dfza+kRvZVBYhYe1IW2v+alkiY+YPFtn9QQutCWsS7oQHllS1Q3beqEnSWcl LCy5/bz0xwLX2KxNOAFa6olUGSxIzSLBUD1+kS2Jn4A1MfCZBGO2kZwWNy4kbjgvLzeW1q FLVlXnH1rgFGwgkwY7Gb2564tBG+nvY= From: chenxiaosong.chenxiaosong@linux.dev To: sfrench@samba.org, smfrench@gmail.com, linkinjeon@kernel.org, linkinjeon@samba.org, christophe.jaillet@wanadoo.fr Cc: linux-cifs@vger.kernel.org, linux-kernel@vger.kernel.org, ChenXiaoSong Subject: [PATCH v4 18/24] smb: move create_durable_rsp_v2 to common/smb2pdu.h Date: Mon, 27 Oct 2025 15:22:00 +0800 Message-ID: <20251027072206.3468578-4-chenxiaosong.chenxiaosong@linux.dev> In-Reply-To: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> References: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" From: ChenXiaoSong Replace some fields in "struct create_durable_v2_rsp" with "struct durable_context_v2_rsp", rename 2 places: - durable_reconnect_context_v2_rsp -> durable_context_v2_rsp - create_durable_v2_rsp -> create_durable_rsp_v2 Then move them to common header file. Signed-off-by: ChenXiaoSong --- fs/smb/client/smb2pdu.h | 6 ------ fs/smb/common/smb2pdu.h | 12 ++++++++++++ fs/smb/server/oplock.c | 8 ++++---- fs/smb/server/smb2ops.c | 6 +++--- fs/smb/server/smb2pdu.h | 6 ------ 5 files changed, 19 insertions(+), 19 deletions(-) diff --git a/fs/smb/client/smb2pdu.h b/fs/smb/client/smb2pdu.h index 23cf5ac713ee..a0d2bb18d4cc 100644 --- a/fs/smb/client/smb2pdu.h +++ b/fs/smb/client/smb2pdu.h @@ -138,12 +138,6 @@ struct share_redirect_error_context_rsp { /* Flags */ #define SMB2_DHANDLE_FLAG_PERSISTENT 0x00000002 =20 -/* See MS-SMB2 2.2.14.2.12 */ -struct durable_reconnect_context_v2_rsp { - __le32 Timeout; - __le32 Flags; /* see above DHANDLE_FLAG_PERSISTENT */ -} __packed; - /* See MS-SMB2 2.2.13.2.5 */ struct crt_twarp_ctxt { struct create_context_hdr ccontext; diff --git a/fs/smb/common/smb2pdu.h b/fs/smb/common/smb2pdu.h index 0fd1c8ad51c3..c09045a33d34 100644 --- a/fs/smb/common/smb2pdu.h +++ b/fs/smb/common/smb2pdu.h @@ -1314,6 +1314,18 @@ struct create_durable_handle_reconnect_v2 { struct durable_reconnect_context_v2 dcontext; } __packed; =20 +/* See MS-SMB2 2.2.14.2.12 */ +struct durable_context_v2_rsp { + __le32 Timeout; + __le32 Flags; /* see SMB2_DHANDLE_FLAG_PERSISTENT */ +} __packed; + +struct create_durable_rsp_v2 { + struct create_context_hdr ccontext; + __u8 Name[8]; + struct durable_context_v2_rsp dcontext; +} __packed; + /* See MS-SMB2 2.2.14.2.5 */ struct create_mxac_rsp { struct create_context_hdr ccontext; diff --git a/fs/smb/server/oplock.c b/fs/smb/server/oplock.c index a04d5702820d..1f07ebf431d7 100644 --- a/fs/smb/server/oplock.c +++ b/fs/smb/server/oplock.c @@ -1617,9 +1617,9 @@ void create_durable_rsp_buf(char *cc) */ void create_durable_v2_rsp_buf(char *cc, struct ksmbd_file *fp) { - struct create_durable_v2_rsp *buf; + struct create_durable_rsp_v2 *buf; =20 - buf =3D (struct create_durable_v2_rsp *)cc; + buf =3D (struct create_durable_rsp_v2 *)cc; memset(buf, 0, sizeof(struct create_durable_rsp)); buf->ccontext.DataOffset =3D cpu_to_le16(offsetof (struct create_durable_rsp, Data)); @@ -1633,9 +1633,9 @@ void create_durable_v2_rsp_buf(char *cc, struct ksmbd= _file *fp) buf->Name[2] =3D '2'; buf->Name[3] =3D 'Q'; =20 - buf->Timeout =3D cpu_to_le32(fp->durable_timeout); + buf->dcontext.Timeout =3D cpu_to_le32(fp->durable_timeout); if (fp->is_persistent) - buf->Flags =3D cpu_to_le32(SMB2_DHANDLE_FLAG_PERSISTENT); + buf->dcontext.Flags =3D cpu_to_le32(SMB2_DHANDLE_FLAG_PERSISTENT); } =20 /** diff --git a/fs/smb/server/smb2ops.c b/fs/smb/server/smb2ops.c index bcf05caa2304..edd7eca0714a 100644 --- a/fs/smb/server/smb2ops.c +++ b/fs/smb/server/smb2ops.c @@ -59,7 +59,7 @@ static struct smb_version_values smb30_server_values =3D { .cap_large_files =3D SMB2_LARGE_FILES, .create_lease_size =3D sizeof(struct create_lease_v2), .create_durable_size =3D sizeof(struct create_durable_rsp), - .create_durable_v2_size =3D sizeof(struct create_durable_v2_rsp), + .create_durable_v2_size =3D sizeof(struct create_durable_rsp_v2), .create_mxac_size =3D sizeof(struct create_mxac_rsp), .create_disk_id_size =3D sizeof(struct create_disk_id_rsp), .create_posix_size =3D sizeof(struct create_posix_rsp), @@ -86,7 +86,7 @@ static struct smb_version_values smb302_server_values =3D= { .cap_large_files =3D SMB2_LARGE_FILES, .create_lease_size =3D sizeof(struct create_lease_v2), .create_durable_size =3D sizeof(struct create_durable_rsp), - .create_durable_v2_size =3D sizeof(struct create_durable_v2_rsp), + .create_durable_v2_size =3D sizeof(struct create_durable_rsp_v2), .create_mxac_size =3D sizeof(struct create_mxac_rsp), .create_disk_id_size =3D sizeof(struct create_disk_id_rsp), .create_posix_size =3D sizeof(struct create_posix_rsp), @@ -113,7 +113,7 @@ static struct smb_version_values smb311_server_values = =3D { .cap_large_files =3D SMB2_LARGE_FILES, .create_lease_size =3D sizeof(struct create_lease_v2), .create_durable_size =3D sizeof(struct create_durable_rsp), - .create_durable_v2_size =3D sizeof(struct create_durable_v2_rsp), + .create_durable_v2_size =3D sizeof(struct create_durable_rsp_v2), .create_mxac_size =3D sizeof(struct create_mxac_rsp), .create_disk_id_size =3D sizeof(struct create_disk_id_rsp), .create_posix_size =3D sizeof(struct create_posix_rsp), diff --git a/fs/smb/server/smb2pdu.h b/fs/smb/server/smb2pdu.h index d27a587b134c..099e9f20812b 100644 --- a/fs/smb/server/smb2pdu.h +++ b/fs/smb/server/smb2pdu.h @@ -98,12 +98,6 @@ struct create_durable_rsp { /* See MS-SMB2 2.2.13.2.11 */ /* Flags */ #define SMB2_DHANDLE_FLAG_PERSISTENT 0x00000002 -struct create_durable_v2_rsp { - struct create_context_hdr ccontext; - __u8 Name[8]; - __le32 Timeout; - __le32 Flags; -} __packed; =20 /* equivalent of the contents of SMB3.1.1 POSIX open context response */ struct create_posix_rsp { --=20 2.43.0 From nobody Sat Feb 7 15:15:15 2026 Received: from out-187.mta1.migadu.com (out-187.mta1.migadu.com [95.215.58.187]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6D9A82DECC5 for ; Mon, 27 Oct 2025 07:23:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.187 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549834; cv=none; b=HTeiNT/KKHMk9qbDXN3lOy9FhIbpZpHphl8q/tVwAOpEvigzDm8hUwDwQ53GC4EdS9NBJxhJ5BzslZFp3nGs72Tp/SN+X0m3zQDNNIqC4PL3qIgEa24vYu3p/BdSYN3CMB9WrHEnE3PpFjnxgJ6mbczefis/AJCYozyxt5u7eMg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549834; c=relaxed/simple; bh=2cwLv8TQ1dJs+hofuNacu8Hqx8cEP/7afy++WYSDUtA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cvSaRgO9GyDrFh7UKWDVs4Cgh/JZEZNwyl1Am6Qa40KTNniHI8l0zmWHdqff3HB/tYzPbzm+iCUEwOs06DCLenlSibKfIbzu1gnmAwEBg/5BbkEB855A3D4UGALrEmU/bw55t/5PiFEQaFSG0Gv58LIR8CkU29ZkX0bl+2OddYY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=mV0WhK7z; arc=none smtp.client-ip=95.215.58.187 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="mV0WhK7z" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1761549830; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=hETu/EvsR4jurFpJ1W5lgbOlX0XPtsuGByTEGVYIq9o=; b=mV0WhK7zKFyRYYZVd3n3yjik3JdKafjqeDlgJs3jzJFJr9WRGweYyopnXYZJX+hWVoNrKh nu/7adpsHDw/SHYqUlEpaXwLVgUNCY1v7ExodDc19ns1KW5oiK8pe3l7wzL7oL//p/VBXG 0XePm3SCSNnzM2iSktxtmvbYFtuTO0o= From: chenxiaosong.chenxiaosong@linux.dev To: sfrench@samba.org, smfrench@gmail.com, linkinjeon@kernel.org, linkinjeon@samba.org, christophe.jaillet@wanadoo.fr Cc: linux-cifs@vger.kernel.org, linux-kernel@vger.kernel.org, ChenXiaoSong Subject: [PATCH v4 19/24] smb/server: remove create_durable_reconn_req Date: Mon, 27 Oct 2025 15:22:01 +0800 Message-ID: <20251027072206.3468578-5-chenxiaosong.chenxiaosong@linux.dev> In-Reply-To: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> References: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" From: ChenXiaoSong The fields in struct create_durable_reconn_req and struct create_durable are exactly the same. Signed-off-by: ChenXiaoSong --- 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 6b3503c7bfaa..3e8344fa163b 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; =20 if (dh_info->type =3D=3D DURABLE_RECONN_V2 || dh_info->type =3D=3D DURABLE_REQ_V2) { @@ -2776,12 +2776,12 @@ static int parse_durable_handle_context(struct ksmb= d_work *work, =20 if (le16_to_cpu(context->DataOffset) + le32_to_cpu(context->DataLength) < - sizeof(struct create_durable_reconn_req)) { + sizeof(struct create_durable)) { err =3D -EINVAL; goto out; } =20 - recon =3D (struct create_durable_reconn_req *)context; + recon =3D (struct create_durable *)context; persistent_id =3D recon->Data.Fid.PersistentFileId; dh_info->fp =3D 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 099e9f20812b..6c8102d5cea5 100644 --- a/fs/smb/server/smb2pdu.h +++ b/fs/smb/server/smb2pdu.h @@ -68,18 +68,6 @@ struct preauth_integrity_info { =20 #define DURABLE_HANDLE_MAX_TIMEOUT 300000 =20 -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]; --=20 2.43.0 From nobody Sat Feb 7 15:15:15 2026 Received: from out-174.mta1.migadu.com (out-174.mta1.migadu.com [95.215.58.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CA3FE2DF15C for ; Mon, 27 Oct 2025 07:23:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549836; cv=none; b=P/Z1t3UKlFKgN9n4woD28jlNYyP6LenvnkhQUZzHgJz/GAG2fqHYfEk0IP2nLH564oVwKO31GN77wC0ilERfIBhhMQRYyLlogUiXmwyNdAgNaziPW1nHd3kYKGOzLqqkU9jbQ+hBuxlpl6gYuO4iq3BbWagRx9pRxftnkijqMDw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549836; c=relaxed/simple; bh=uU3RxIWpWa5zTm05EyOvK+mRjmycZNNkdHvlJfXlA68=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rUd7zmN886eUezmKW2kVxSmqoRdxjQXryAVa38GvKVsVXV0v3GdM7MGeTeVQby54xz3mQnrELCKcFdhiTUdkufeYkYP9mFUuvfAcChGQwrCjzFZyl5e188QlqK81m+LuqG8hJPF064UtbgYpwuxFnUinXVx7iBcKL7/Sc8ArdFs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=Etnax6FA; arc=none smtp.client-ip=95.215.58.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="Etnax6FA" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1761549833; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Y+iB1uN011Y16tkrImck31hvIJclu0Z+Uvma3Z4/94g=; b=Etnax6FAsZPLGHqXaGKGj3JKLsJvYZlfeYmCq0MLg4aboycsMcCj3KjL6tcJjcRDeh9Jh5 EctYUPTXWMprir3Fy5CJSxu6xmys4Ke5Vu5o60WEgf5mg2OAi+5oe8HZA26qDrhBwM/Jqg iKWZh/g1NHilKr3a/4jHM3SgeceVHsg= From: chenxiaosong.chenxiaosong@linux.dev To: sfrench@samba.org, smfrench@gmail.com, linkinjeon@kernel.org, linkinjeon@samba.org, christophe.jaillet@wanadoo.fr Cc: linux-cifs@vger.kernel.org, linux-kernel@vger.kernel.org, ChenXiaoSong Subject: [PATCH v4 20/24] smb: move smb2_file_network_open_info to common/smb2pdu.h Date: Mon, 27 Oct 2025 15:22:02 +0800 Message-ID: <20251027072206.3468578-6-chenxiaosong.chenxiaosong@linux.dev> In-Reply-To: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> References: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" From: ChenXiaoSong Rename smb2_file_ntwrk_info to smb2_file_network_open_info, then move duplicate definitions to common header file. Signed-off-by: ChenXiaoSong --- fs/smb/client/smb2pdu.h | 13 ------------- fs/smb/common/smb2pdu.h | 14 ++++++++++++++ fs/smb/server/smb2pdu.c | 6 +++--- fs/smb/server/smb2pdu.h | 11 ----------- 4 files changed, 17 insertions(+), 27 deletions(-) diff --git a/fs/smb/client/smb2pdu.h b/fs/smb/client/smb2pdu.h index a0d2bb18d4cc..6def502f68b7 100644 --- a/fs/smb/client/smb2pdu.h +++ b/fs/smb/client/smb2pdu.h @@ -288,19 +288,6 @@ struct smb2_file_reparse_point_info { __le32 Tag; } __packed; =20 -struct smb2_file_network_open_info { - struct_group_attr(network_open_info, __packed, - __le64 CreationTime; - __le64 LastAccessTime; - __le64 LastWriteTime; - __le64 ChangeTime; - __le64 AllocationSize; - __le64 EndOfFile; - __le32 Attributes; - ); - __le32 Reserved; -} __packed; /* level 34 Query also similar returned in close rsp and open = rsp */ - /* See MS-FSCC 2.4.21 */ struct smb2_file_id_information { __le64 VolumeSerialNumber; diff --git a/fs/smb/common/smb2pdu.h b/fs/smb/common/smb2pdu.h index c09045a33d34..704096c251b7 100644 --- a/fs/smb/common/smb2pdu.h +++ b/fs/smb/common/smb2pdu.h @@ -1929,6 +1929,20 @@ struct smb2_lease_ack { __le64 LeaseDuration; } __packed; =20 +/* See MS-FSCC 2.4.34 */ +struct smb2_file_network_open_info { + struct_group_attr(network_open_info, __packed, + __le64 CreationTime; + __le64 LastAccessTime; + __le64 LastWriteTime; + __le64 ChangeTime; + __le64 AllocationSize; + __le64 EndOfFile; + __le32 Attributes; + ); + __le32 Reserved; +} __packed; /* level 34 Query also similar returned in close rsp and open = rsp */ + #define OP_BREAK_STRUCT_SIZE_20 24 #define OP_BREAK_STRUCT_SIZE_21 36 #endif /* _COMMON_SMB2PDU_H */ diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c index 3e8344fa163b..06da751063b5 100644 --- a/fs/smb/server/smb2pdu.c +++ b/fs/smb/server/smb2pdu.c @@ -5133,7 +5133,7 @@ static int get_file_internal_info(struct smb2_query_i= nfo_rsp *rsp, static int get_file_network_open_info(struct smb2_query_info_rsp *rsp, struct ksmbd_file *fp, void *rsp_org) { - struct smb2_file_ntwrk_info *file_info; + struct smb2_file_network_open_info *file_info; struct kstat stat; u64 time; int ret; @@ -5149,7 +5149,7 @@ static int get_file_network_open_info(struct smb2_que= ry_info_rsp *rsp, if (ret) return ret; =20 - file_info =3D (struct smb2_file_ntwrk_info *)rsp->Buffer; + file_info =3D (struct smb2_file_network_open_info *)rsp->Buffer; =20 file_info->CreationTime =3D cpu_to_le64(fp->create_time); time =3D ksmbd_UnixTimeToNT(stat.atime); @@ -5168,7 +5168,7 @@ static int get_file_network_open_info(struct smb2_que= ry_info_rsp *rsp, } file_info->Reserved =3D cpu_to_le32(0); rsp->OutputBufferLength =3D - cpu_to_le32(sizeof(struct smb2_file_ntwrk_info)); + cpu_to_le32(sizeof(struct smb2_file_network_open_info)); return 0; } =20 diff --git a/fs/smb/server/smb2pdu.h b/fs/smb/server/smb2pdu.h index 6c8102d5cea5..25c20b26315b 100644 --- a/fs/smb/server/smb2pdu.h +++ b/fs/smb/server/smb2pdu.h @@ -263,17 +263,6 @@ struct smb2_file_stream_info { char StreamName[]; } __packed; =20 -struct smb2_file_ntwrk_info { - __le64 CreationTime; - __le64 LastAccessTime; - __le64 LastWriteTime; - __le64 ChangeTime; - __le64 AllocationSize; - __le64 EndOfFile; - __le32 Attributes; - __le32 Reserved; -} __packed; - struct smb2_file_standard_info { __le64 AllocationSize; __le64 EndOfFile; --=20 2.43.0 From nobody Sat Feb 7 15:15:15 2026 Received: from out-171.mta1.migadu.com (out-171.mta1.migadu.com [95.215.58.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AE5542DFA48 for ; Mon, 27 Oct 2025 07:23:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549839; cv=none; b=EMdI2o5y8sK+D2YYh7S7rg8V6Ep1cY3ODnoozKlB07Wd52v3MmF4rW39m64cvhqtORAxXjlWFUbsTr6s1wTRoK8M5oFYcOD0KGQU6t00zLqP3M2iY1js9VZv5gJ7hydTJrWqZzV2JcW20SXbqCIhB+4Wy+wvtPMRCl6V9VjvsAU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549839; c=relaxed/simple; bh=lm/tK9pKP3kfe8IUsXAzbUd55nvSXO7lhA6B/h/81Jg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PHLfFUAxa9Cb6TAK4DLeZRNXmg4ARYOHMJ+5DGhSNI2BWif1LfmoEa1tZViE5e0aTkiIxFyDr4AtisXarg2mhyryT67X8uKHJ9ZUXcUmgZJmPji97xllCptMVdIjL/OZgvA7fGYnT+yl5D76yhLtj+PzENgL7d1IJX3jKtf2fdE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=X7JQrhBK; arc=none smtp.client-ip=95.215.58.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="X7JQrhBK" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1761549836; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fNMx+mS9oi/4/9XGraq2gniUdtLbevqPEBur+tTV9Xs=; b=X7JQrhBKfPPaSVRb+mr72nCWVHWrP7i13jxHw+pEF5KvB5yXvzCLYNScy5itD+bmtLoNMH Vvf0fQAXBoSy8j0Pu0yWVhlSdoNS0rxGNbAgNMxZ3fuBcUc0UdOrepH2VE9ojno4saUv1t N7QdBg2v2266IashQSDMvqIxRXS5Ggo= From: chenxiaosong.chenxiaosong@linux.dev To: sfrench@samba.org, smfrench@gmail.com, linkinjeon@kernel.org, linkinjeon@samba.org, christophe.jaillet@wanadoo.fr Cc: linux-cifs@vger.kernel.org, linux-kernel@vger.kernel.org, ZhangGuoDong , ChenXiaoSong Subject: [PATCH v4 21/24] smb: move smb_sockaddr_in and smb_sockaddr_in6 to common/smb2pdu.h Date: Mon, 27 Oct 2025 15:22:03 +0800 Message-ID: <20251027072206.3468578-7-chenxiaosong.chenxiaosong@linux.dev> In-Reply-To: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> References: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" From: ZhangGuoDong Rename 4 places: - iface_info_ipv4 -> smb_sockaddr_in - iface_info_ipv6 -> smb_sockaddr_in6 - IPv4address -> IPv4Address - IPv6address -> IPv6Address Then move duplicate definitions to common header file. Co-developed-by: ChenXiaoSong Signed-off-by: ChenXiaoSong Signed-off-by: ZhangGuoDong --- fs/smb/client/smb2ops.c | 8 ++++---- fs/smb/client/smb2pdu.h | 13 ------------- fs/smb/common/smb2pdu.h | 15 +++++++++++++++ fs/smb/server/smb2pdu.c | 4 ++-- fs/smb/server/smb2pdu.h | 13 ------------- 5 files changed, 21 insertions(+), 32 deletions(-) diff --git a/fs/smb/client/smb2ops.c b/fs/smb/client/smb2ops.c index 0f9130ef2e7d..1b9995ebb895 100644 --- a/fs/smb/client/smb2ops.c +++ b/fs/smb/client/smb2ops.c @@ -624,8 +624,8 @@ parse_server_interfaces(struct network_interface_info_i= octl_rsp *buf, struct network_interface_info_ioctl_rsp *p; struct sockaddr_in *addr4; struct sockaddr_in6 *addr6; - struct iface_info_ipv4 *p4; - struct iface_info_ipv6 *p6; + struct smb_sockaddr_in *p4; + struct smb_sockaddr_in6 *p6; struct cifs_server_iface *info =3D NULL, *iface =3D NULL, *niface =3D NUL= L; struct cifs_server_iface tmp_iface; ssize_t bytes_left; @@ -685,7 +685,7 @@ parse_server_interfaces(struct network_interface_info_i= octl_rsp *buf, */ case INTERNETWORK: addr4 =3D (struct sockaddr_in *)&tmp_iface.sockaddr; - p4 =3D (struct iface_info_ipv4 *)p->Buffer; + p4 =3D (struct smb_sockaddr_in *)p->Buffer; addr4->sin_family =3D AF_INET; memcpy(&addr4->sin_addr, &p4->IPv4Address, 4); =20 @@ -697,7 +697,7 @@ parse_server_interfaces(struct network_interface_info_i= octl_rsp *buf, break; case INTERNETWORKV6: addr6 =3D (struct sockaddr_in6 *)&tmp_iface.sockaddr; - p6 =3D (struct iface_info_ipv6 *)p->Buffer; + p6 =3D (struct smb_sockaddr_in6 *)p->Buffer; addr6->sin6_family =3D AF_INET6; memcpy(&addr6->sin6_addr, &p6->IPv6Address, 16); =20 diff --git a/fs/smb/client/smb2pdu.h b/fs/smb/client/smb2pdu.h index 6def502f68b7..a0f73b183c0e 100644 --- a/fs/smb/client/smb2pdu.h +++ b/fs/smb/client/smb2pdu.h @@ -244,19 +244,6 @@ struct network_interface_info_ioctl_rsp { __u8 Buffer[126]; } __packed; =20 -struct iface_info_ipv4 { - __be16 Port; - __be32 IPv4Address; - __be64 Reserved; -} __packed; - -struct iface_info_ipv6 { - __be16 Port; - __be32 FlowInfo; - __u8 IPv6Address[16]; - __be32 ScopeId; -} __packed; - #define NO_FILE_ID 0xFFFFFFFFFFFFFFFFULL /* general ioctls to srv not to f= ile */ =20 struct compress_ioctl { diff --git a/fs/smb/common/smb2pdu.h b/fs/smb/common/smb2pdu.h index 704096c251b7..2b56a17bccdb 100644 --- a/fs/smb/common/smb2pdu.h +++ b/fs/smb/common/smb2pdu.h @@ -1440,6 +1440,21 @@ struct smb2_ioctl_rsp { __u8 Buffer[]; } __packed; =20 +/* See MS-SMB2 2.2.32.5.1.1 */ +struct smb_sockaddr_in { + __be16 Port; + __be32 IPv4Address; + __u8 Reserved[8]; +} __packed; + +/* See MS-SMB2 2.2.32.5.1.2 */ +struct smb_sockaddr_in6 { + __be16 Port; + __be32 FlowInfo; + __u8 IPv6Address[16]; + __be32 ScopeId; +} __packed; + /* this goes in the ioctl buffer when doing FSCTL_SET_ZERO_DATA */ struct file_zero_data_information { __le64 FileOffset; diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c index 06da751063b5..c1ea4b747625 100644 --- a/fs/smb/server/smb2pdu.c +++ b/fs/smb/server/smb2pdu.c @@ -7910,7 +7910,7 @@ static int fsctl_query_iface_info_ioctl(struct ksmbd_= conn *conn, idev =3D __in_dev_get_rtnl(netdev); if (!idev) continue; - sockaddr_storage->addr4.IPv4address =3D + sockaddr_storage->addr4.IPv4Address =3D idev_ipv4_address(idev); nbytes +=3D sizeof(struct network_interface_info_ioctl_rsp); ipv4_set =3D true; @@ -7918,7 +7918,7 @@ static int fsctl_query_iface_info_ioctl(struct ksmbd_= conn *conn, } else { struct inet6_dev *idev6; struct inet6_ifaddr *ifa; - __u8 *ipv6_addr =3D sockaddr_storage->addr6.IPv6address; + __u8 *ipv6_addr =3D sockaddr_storage->addr6.IPv6Address; =20 sockaddr_storage->Family =3D cpu_to_le16(INTERNETWORKV6); sockaddr_storage->addr6.Port =3D 0; diff --git a/fs/smb/server/smb2pdu.h b/fs/smb/server/smb2pdu.h index 25c20b26315b..fb4df2860481 100644 --- a/fs/smb/server/smb2pdu.h +++ b/fs/smb/server/smb2pdu.h @@ -100,19 +100,6 @@ struct create_posix_rsp { =20 #define SMB2_0_IOCTL_IS_FSCTL 0x00000001 =20 -struct smb_sockaddr_in { - __be16 Port; - __be32 IPv4address; - __u8 Reserved[8]; -} __packed; - -struct smb_sockaddr_in6 { - __be16 Port; - __be32 FlowInfo; - __u8 IPv6address[16]; - __be32 ScopeId; -} __packed; - #define INTERNETWORK 0x0002 #define INTERNETWORKV6 0x0017 =20 --=20 2.43.0 From nobody Sat Feb 7 15:15:15 2026 Received: from out-178.mta1.migadu.com (out-178.mta1.migadu.com [95.215.58.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 931D82DE6F5 for ; Mon, 27 Oct 2025 07:24:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549842; cv=none; b=XesyBwe0kXsezePln2iXgLtDE1k4LgWsoqPR4OMtb9HA1ypiVmz03nKHEyt4N14q5vQTji7RdpLEmUYtKQkttUIwpEtVx6QRgnL3MDCbyAOGm8iyCowxJ0OC4xluV3/tfy2MHCZ15NJylsSjtWuZ58mEPOBdOOMCgwP5eMB3ZqQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549842; c=relaxed/simple; bh=1wP+8RqUhm5f9trzFZDZKEGkSzwUgvOQuGC/J+j2ZT4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=obiDhmf4jZbKEYQTfdx+mbMbwH4Q5YlCG/ckrTzUtl4LNL9sl8BeK7uH/XetCtfmuYZAMTty/Y4lXg3vQwCnLrqK59Z1z/h7sJdMsXEnYeG+9w7ngN7ZCC5ifk9mFpoqBFQmBSPd/lqv5l3TgBdmYdLn56VmJFaiviQS2alFfbI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=F6haeWJk; arc=none smtp.client-ip=95.215.58.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="F6haeWJk" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1761549839; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=nAg7H6k3Ss/PPdDpVyO/MSrA/oYwNacKlenw9To0wfA=; b=F6haeWJkxjscoYdsqUHf5NTZ5sXmh3r1Pq/Uap4STTA5nBhNWy/w/mrV0pol5r8DjvqcyJ VAd/ILenbMDAHYc0pzUDEGLzon4YaGpa0ThJf5gjEEs0QWNOAjCGshVfLoRAy0+46PFubO h8syXAJh7iO+MoRUqL3HaTOfmT6fnmo= From: chenxiaosong.chenxiaosong@linux.dev To: sfrench@samba.org, smfrench@gmail.com, linkinjeon@kernel.org, linkinjeon@samba.org, christophe.jaillet@wanadoo.fr Cc: linux-cifs@vger.kernel.org, linux-kernel@vger.kernel.org, ZhangGuoDong , ChenXiaoSong Subject: [PATCH v4 22/24] smb: move copychunk definitions to common/smb2pdu.h Date: Mon, 27 Oct 2025 15:22:04 +0800 Message-ID: <20251027072206.3468578-8-chenxiaosong.chenxiaosong@linux.dev> In-Reply-To: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> References: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" From: ZhangGuoDong Rename 3 places: - copychunk_ioctl -> copychunk_ioctl_req - copychunk -> srv_copychunk - server: ResumeKey -> SourceKeyU64 Merge the struct members of the server and the client, then move duplicate definitions to common header file. Co-developed-by: ChenXiaoSong Signed-off-by: ChenXiaoSong Signed-off-by: ZhangGuoDong --- fs/smb/client/cifspdu.h | 8 -------- fs/smb/client/smb2ops.c | 6 +++--- fs/smb/client/smb2pdu.h | 24 ------------------------ fs/smb/common/smb2pdu.h | 29 +++++++++++++++++++++++++++++ fs/smb/server/smb2pdu.c | 4 ++-- fs/smb/server/smb2pdu.h | 20 -------------------- 6 files changed, 34 insertions(+), 57 deletions(-) diff --git a/fs/smb/client/cifspdu.h b/fs/smb/client/cifspdu.h index 55aaae6dbc86..157dbc344540 100644 --- a/fs/smb/client/cifspdu.h +++ b/fs/smb/client/cifspdu.h @@ -1030,14 +1030,6 @@ typedef struct smb_com_ntransact_rsp { /* parms and data follow */ } __attribute__((packed)) NTRANSACT_RSP; =20 -/* See MS-SMB 2.2.7.2.1.1 */ -struct srv_copychunk { - __le64 SourceOffset; - __le64 DestinationOffset; - __le32 CopyLength; - __u32 Reserved; -} __packed; - typedef struct smb_com_transaction_ioctl_req { struct smb_hdr hdr; /* wct =3D 23 */ __u8 MaxSetupCount; diff --git a/fs/smb/client/smb2ops.c b/fs/smb/client/smb2ops.c index 1b9995ebb895..a2319eef2801 100644 --- a/fs/smb/client/smb2ops.c +++ b/fs/smb/client/smb2ops.c @@ -1524,7 +1524,7 @@ smb2_close_getattr(const unsigned int xid, struct cif= s_tcon *tcon, static int SMB2_request_res_key(const unsigned int xid, struct cifs_tcon *tcon, u64 persistent_fid, u64 volatile_fid, - struct copychunk_ioctl *pcchunk) + struct copychunk_ioctl_req *pcchunk) { int rc; unsigned int ret_data_len; @@ -1857,10 +1857,10 @@ smb2_copychunk_range(const unsigned int xid, { int rc =3D 0; unsigned int ret_data_len =3D 0; - struct copychunk_ioctl *cc_req =3D NULL; + struct copychunk_ioctl_req *cc_req =3D NULL; struct copychunk_ioctl_rsp *cc_rsp =3D NULL; struct cifs_tcon *tcon; - struct copychunk *chunk; + struct srv_copychunk *chunk; u32 chunks, chunk_count, chunk_bytes; u32 copy_bytes, copy_bytes_left; u32 chunks_written, bytes_written; diff --git a/fs/smb/client/smb2pdu.h b/fs/smb/client/smb2pdu.h index a0f73b183c0e..f8aa4bcc5eac 100644 --- a/fs/smb/client/smb2pdu.h +++ b/fs/smb/client/smb2pdu.h @@ -158,36 +158,12 @@ struct crt_sd_ctxt { struct smb3_sd sd; } __packed; =20 - -#define COPY_CHUNK_RES_KEY_SIZE 24 struct resume_key_req { char ResumeKey[COPY_CHUNK_RES_KEY_SIZE]; __le32 ContextLength; /* MBZ */ char Context[]; /* ignored, Windows sets to 4 bytes of zero */ } __packed; =20 - -struct copychunk { - __le64 SourceOffset; - __le64 TargetOffset; - __le32 Length; - __le32 Reserved; -} __packed; - -/* this goes in the ioctl buffer when doing a copychunk request */ -struct copychunk_ioctl { - char SourceKey[COPY_CHUNK_RES_KEY_SIZE]; - __le32 ChunkCount; - __le32 Reserved; - struct copychunk Chunks[]; -} __packed; - -struct copychunk_ioctl_rsp { - __le32 ChunksWritten; - __le32 ChunkBytesWritten; - __le32 TotalBytesWritten; -} __packed; - /* See MS-FSCC 2.3.29 and 2.3.30 */ struct get_retrieval_pointer_count_req { __le64 StartingVcn; /* virtual cluster number (signed) */ diff --git a/fs/smb/common/smb2pdu.h b/fs/smb/common/smb2pdu.h index 2b56a17bccdb..319890c6d46b 100644 --- a/fs/smb/common/smb2pdu.h +++ b/fs/smb/common/smb2pdu.h @@ -1424,6 +1424,35 @@ struct smb2_ioctl_req { __u8 Buffer[]; } __packed; =20 +/* See MS-SMB2 2.2.31.1.1 */ +struct srv_copychunk { + __le64 SourceOffset; + __le64 TargetOffset; + __le32 Length; + __le32 Reserved; +} __packed; + +#define COPY_CHUNK_RES_KEY_SIZE 24 + +/* See MS-SMB2 2.2.31.1 */ +/* this goes in the ioctl buffer when doing a copychunk request */ +struct copychunk_ioctl_req { + union { + char SourceKey[COPY_CHUNK_RES_KEY_SIZE]; + __le64 SourceKeyU64[3]; + }; + __le32 ChunkCount; + __le32 Reserved; + struct srv_copychunk Chunks[] __counted_by_le(ChunkCount); +} __packed; + +/* See MS-SMB2 2.2.32.1 */ +struct copychunk_ioctl_rsp { + __le32 ChunksWritten; + __le32 ChunkBytesWritten; + __le32 TotalBytesWritten; +} __packed; + struct smb2_ioctl_rsp { struct smb2_hdr hdr; __le16 StructureSize; /* Must be 49 */ diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c index c1ea4b747625..44e2cef70f27 100644 --- a/fs/smb/server/smb2pdu.c +++ b/fs/smb/server/smb2pdu.c @@ -7764,11 +7764,11 @@ static int fsctl_copychunk(struct ksmbd_work *work, } =20 src_fp =3D ksmbd_lookup_foreign_fd(work, - le64_to_cpu(ci_req->ResumeKey[0])); + le64_to_cpu(ci_req->SourceKeyU64[0])); dst_fp =3D ksmbd_lookup_fd_slow(work, volatile_id, persistent_id); ret =3D -EINVAL; if (!src_fp || - src_fp->persistent_id !=3D le64_to_cpu(ci_req->ResumeKey[1])) { + src_fp->persistent_id !=3D le64_to_cpu(ci_req->SourceKeyU64[1])) { rsp->hdr.Status =3D STATUS_OBJECT_NAME_NOT_FOUND; goto out; } diff --git a/fs/smb/server/smb2pdu.h b/fs/smb/server/smb2pdu.h index fb4df2860481..ab4359f384b3 100644 --- a/fs/smb/server/smb2pdu.h +++ b/fs/smb/server/smb2pdu.h @@ -136,26 +136,6 @@ struct resume_key_ioctl_rsp { __u8 Context[4]; /* ignored, Windows sets to 4 bytes of zero */ } __packed; =20 -struct srv_copychunk { - __le64 SourceOffset; - __le64 TargetOffset; - __le32 Length; - __le32 Reserved; -} __packed; - -struct copychunk_ioctl_req { - __le64 ResumeKey[3]; - __le32 ChunkCount; - __le32 Reserved; - struct srv_copychunk Chunks[] __counted_by_le(ChunkCount); -} __packed; - -struct copychunk_ioctl_rsp { - __le32 ChunksWritten; - __le32 ChunkBytesWritten; - __le32 TotalBytesWritten; -} __packed; - struct file_sparse { __u8 SetSparse; } __packed; --=20 2.43.0 From nobody Sat Feb 7 15:15:15 2026 Received: from out-171.mta1.migadu.com (out-171.mta1.migadu.com [95.215.58.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 697412E0905 for ; Mon, 27 Oct 2025 07:24:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549845; cv=none; b=HJvqzbio0iHLNbiPKhBQtahmnI8pG532YiPxFoQkfk9O+aYz8iP6pCP9M+QvGvD6LsKur3eNc/HKjX+wxNuv9afdjkZ6AJqeYhzRA6pYgQP1pUHMESnXleKRD35d18ouFvkiBmytNM0vzI+iqMRaoaJRcAUAPNu4/92AV1Q1bzU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549845; c=relaxed/simple; bh=PotWsMbGcM+zrmUMslr6oQNvXGw88qJ+9KO2MxJnyio=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lhf68I+A7of3vB/mquewLVJ+lR7W52RKlpC76TGqHbfqWICoedjr3Wtnxt1y8h900hk85YDM/Uc+oMBUj2E+WcZtdin1MoZg91YWVDct6x+hqvSx2JFcNUWc/3BTfpeEIrQRufba4qKDNJhlUuFmfcNZBRtbO2ENAL6nUENPnvs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=Bj1MyUtz; arc=none smtp.client-ip=95.215.58.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="Bj1MyUtz" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1761549841; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=35vWquObWcS+BwNDIhUb8QoFDfJfPtKNdRQDD08D+Bs=; b=Bj1MyUtzMSL9StmQNRLB60vstkpZMveAy44yxCaINymiyy/d84YJMzqxG2lXq/VSk8mWmO CsHiynAmvxL476McYLSVqky60gTJB03eTr7opf57kk7++3+xmxUQpszLe/5S6iA/30uT38 d1x8I8dkguFAlCzPBhkT/jKM+0E2viQ= From: chenxiaosong.chenxiaosong@linux.dev To: sfrench@samba.org, smfrench@gmail.com, linkinjeon@kernel.org, linkinjeon@samba.org, christophe.jaillet@wanadoo.fr Cc: linux-cifs@vger.kernel.org, linux-kernel@vger.kernel.org, ZhangGuoDong , ChenXiaoSong Subject: [PATCH v4 23/24] smb: move resume_key_ioctl_rsp to common/smb2pdu.h Date: Mon, 27 Oct 2025 15:22:05 +0800 Message-ID: <20251027072206.3468578-9-chenxiaosong.chenxiaosong@linux.dev> In-Reply-To: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> References: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" From: ZhangGuoDong Rename 2 places: - resume_key_req -> resume_key_ioctl_rsp - server: ResumeKey -> ResumeKeyU64 Merge the struct members of the server and the client, then move duplicate definitions to common header file. Co-developed-by: ChenXiaoSong Signed-off-by: ChenXiaoSong Signed-off-by: ZhangGuoDong --- fs/smb/client/smb2ops.c | 4 ++-- fs/smb/client/smb2pdu.h | 6 ------ fs/smb/common/smb2pdu.h | 10 ++++++++++ fs/smb/server/smb2pdu.c | 4 ++-- fs/smb/server/smb2pdu.h | 6 ------ 5 files changed, 14 insertions(+), 16 deletions(-) diff --git a/fs/smb/client/smb2ops.c b/fs/smb/client/smb2ops.c index a2319eef2801..80191bf3fdff 100644 --- a/fs/smb/client/smb2ops.c +++ b/fs/smb/client/smb2ops.c @@ -1528,7 +1528,7 @@ SMB2_request_res_key(const unsigned int xid, struct c= ifs_tcon *tcon, { int rc; unsigned int ret_data_len; - struct resume_key_req *res_key; + struct resume_key_ioctl_rsp *res_key; =20 rc =3D SMB2_ioctl(xid, tcon, persistent_fid, volatile_fid, FSCTL_SRV_REQUEST_RESUME_KEY, NULL, 0 /* no input */, @@ -1541,7 +1541,7 @@ SMB2_request_res_key(const unsigned int xid, struct c= ifs_tcon *tcon, cifs_tcon_dbg(VFS, "refcpy ioctl error %d getting resume key\n", rc); goto req_res_key_exit; } - if (ret_data_len < sizeof(struct resume_key_req)) { + if (ret_data_len < sizeof(struct resume_key_ioctl_rsp)) { cifs_tcon_dbg(VFS, "Invalid refcopy resume key length\n"); rc =3D -EINVAL; goto req_res_key_exit; diff --git a/fs/smb/client/smb2pdu.h b/fs/smb/client/smb2pdu.h index f8aa4bcc5eac..0fcc903fbcd1 100644 --- a/fs/smb/client/smb2pdu.h +++ b/fs/smb/client/smb2pdu.h @@ -158,12 +158,6 @@ struct crt_sd_ctxt { struct smb3_sd sd; } __packed; =20 -struct resume_key_req { - char ResumeKey[COPY_CHUNK_RES_KEY_SIZE]; - __le32 ContextLength; /* MBZ */ - char Context[]; /* ignored, Windows sets to 4 bytes of zero */ -} __packed; - /* See MS-FSCC 2.3.29 and 2.3.30 */ struct get_retrieval_pointer_count_req { __le64 StartingVcn; /* virtual cluster number (signed) */ diff --git a/fs/smb/common/smb2pdu.h b/fs/smb/common/smb2pdu.h index 319890c6d46b..c7e64712f856 100644 --- a/fs/smb/common/smb2pdu.h +++ b/fs/smb/common/smb2pdu.h @@ -1453,6 +1453,16 @@ struct copychunk_ioctl_rsp { __le32 TotalBytesWritten; } __packed; =20 +/* See MS-SMB2 2.2.32.3 */ +struct resume_key_ioctl_rsp { + union { + char ResumeKey[COPY_CHUNK_RES_KEY_SIZE]; + __u64 ResumeKeyU64[3]; + }; + __le32 ContextLength; /* MBZ */ + char Context[]; /* ignored, Windows sets to 4 bytes of zero */ +} __packed; + struct smb2_ioctl_rsp { struct smb2_hdr hdr; __le16 StructureSize; /* Must be 49 */ diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c index 44e2cef70f27..96e50dd7d64f 100644 --- a/fs/smb/server/smb2pdu.c +++ b/fs/smb/server/smb2pdu.c @@ -8122,8 +8122,8 @@ static int fsctl_request_resume_key(struct ksmbd_work= *work, return -ENOENT; =20 memset(key_rsp, 0, sizeof(*key_rsp)); - key_rsp->ResumeKey[0] =3D req->VolatileFileId; - key_rsp->ResumeKey[1] =3D req->PersistentFileId; + key_rsp->ResumeKeyU64[0] =3D req->VolatileFileId; + key_rsp->ResumeKeyU64[1] =3D req->PersistentFileId; ksmbd_fd_put(work, fp); =20 return 0; diff --git a/fs/smb/server/smb2pdu.h b/fs/smb/server/smb2pdu.h index ab4359f384b3..a6940e971047 100644 --- a/fs/smb/server/smb2pdu.h +++ b/fs/smb/server/smb2pdu.h @@ -130,12 +130,6 @@ struct file_object_buf_type1_ioctl_rsp { __u8 DomainId[16]; } __packed; =20 -struct resume_key_ioctl_rsp { - __u64 ResumeKey[3]; - __le32 ContextLength; - __u8 Context[4]; /* ignored, Windows sets to 4 bytes of zero */ -} __packed; - struct file_sparse { __u8 SetSparse; } __packed; --=20 2.43.0 From nobody Sat Feb 7 15:15:15 2026 Received: from out-186.mta1.migadu.com (out-186.mta1.migadu.com [95.215.58.186]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 11D0D2DCBE6 for ; Mon, 27 Oct 2025 07:24:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.186 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549851; cv=none; b=QrtOiw1+/myNPfc0Wpnzgnh+8w3e6ai5ZUNCOfvcN++z3ZwHg5ADepLMUSMD5vAXattrqUtxy+dN+TQ+cmsBrCmVgcpT9noAaY6/EcpKE8C4/rioW7CSLservPDooCRw5NKIAJ8daPAWidAypjJycgMP8rKcRATR0Vy0LvGDuOo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761549851; c=relaxed/simple; bh=mcRqZQTJUPiqU4u79mytixdsUIZDpfyQY+9yHxjsEAU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=geXoR795hNhP7a+vVAlzQsIFqplEfZ9lSNYf3atAFYqb0IdF7nM1C1o+viV1v7iVis8EYPeO1AuY6WAISRq9CboTzKNWLO6710dhVImkHMeWXnrV7Obj2sED92mHa43vcHs0SX+275TqZUzEuvKzyjBb+NrUp2Cbl1vG8aF6z1U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=pYffRcEV; arc=none smtp.client-ip=95.215.58.186 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="pYffRcEV" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1761549846; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=tEClrBGHbbTS6rtEDLXzbO/0ts574gn/BdpdOKBZnEY=; b=pYffRcEVIzPWWyLg7EmhA1ksRfJ5aESL7GfnoRJJMWOy5gRi65Qo3d32yXzhnN7YK3LrAA 8ujBhtUOW8D/xZKdKDdJv98/GjZjq2RF1GX/NqegmJKQV0jWF5HpEvODzQHBIUmDosecSs kz0q1OheQ3sol4jF8RfAyVHSIm6J/0s= From: chenxiaosong.chenxiaosong@linux.dev To: sfrench@samba.org, smfrench@gmail.com, linkinjeon@kernel.org, linkinjeon@samba.org, christophe.jaillet@wanadoo.fr Cc: linux-cifs@vger.kernel.org, linux-kernel@vger.kernel.org, ZhangGuoDong , ChenXiaoSong Subject: [PATCH v4 24/24] smb: move some duplicate definitions to common/smb2pdu.h Date: Mon, 27 Oct 2025 15:22:06 +0800 Message-ID: <20251027072206.3468578-10-chenxiaosong.chenxiaosong@linux.dev> In-Reply-To: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> References: <20251027071316.3468472-1-chenxiaosong.chenxiaosong@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" From: ZhangGuoDong In order to maintain the code more easily, move duplicate definitions to common header file. Co-developed-by: ChenXiaoSong Signed-off-by: ChenXiaoSong Signed-off-by: ZhangGuoDong --- fs/smb/client/smb2pdu.h | 21 --------------------- fs/smb/common/smb2pdu.h | 28 ++++++++++++++++++++++++++++ fs/smb/server/smb2pdu.c | 8 ++++---- fs/smb/server/smb2pdu.h | 19 ------------------- 4 files changed, 32 insertions(+), 44 deletions(-) diff --git a/fs/smb/client/smb2pdu.h b/fs/smb/client/smb2pdu.h index 0fcc903fbcd1..78bb99f29d38 100644 --- a/fs/smb/client/smb2pdu.h +++ b/fs/smb/client/smb2pdu.h @@ -133,11 +133,6 @@ struct share_redirect_error_context_rsp { #define SMB2_LEASE_HANDLE_CACHING_HE 0x02 #define SMB2_LEASE_WRITE_CACHING_HE 0x04 =20 - -/* 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= */ =20 -#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 f= ile */ =20 struct compress_ioctl { diff --git a/fs/smb/common/smb2pdu.h b/fs/smb/common/smb2pdu.h index c7e64712f856..e781df6ca499 100644 --- a/fs/smb/common/smb2pdu.h +++ b/fs/smb/common/smb2pdu.h @@ -1284,6 +1284,14 @@ struct create_mxac_req { __le64 Timestamp; } __packed; =20 +/* + * 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; @@ -1493,6 +1501,26 @@ struct smb_sockaddr_in6 { __u8 IPv6Address[16]; __be32 ScopeId; } __packed; +=20 +/* 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; =20 /* this goes in the ioctl buffer when doing FSCTL_SET_ZERO_DATA */ struct file_zero_data_information { diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c index 96e50dd7d64f..c26fee9c1c51 100644 --- a/fs/smb/server/smb2pdu.c +++ b/fs/smb/server/smb2pdu.c @@ -7876,9 +7876,9 @@ static int fsctl_query_iface_info_ioctl(struct ksmbd_= conn *conn, =20 nii_rsp->Capability =3D 0; if (netdev->real_num_tx_queues > 1) - nii_rsp->Capability |=3D cpu_to_le32(RSS_CAPABLE); + nii_rsp->Capability |=3D RSS_CAPABLE; if (ksmbd_rdma_capable_netdev(netdev)) - nii_rsp->Capability |=3D cpu_to_le32(RDMA_CAPABLE); + nii_rsp->Capability |=3D RDMA_CAPABLE; =20 nii_rsp->Next =3D cpu_to_le32(152); nii_rsp->Reserved =3D 0; @@ -7904,7 +7904,7 @@ static int fsctl_query_iface_info_ioctl(struct ksmbd_= conn *conn, if (!ipv4_set) { struct in_device *idev; =20 - sockaddr_storage->Family =3D cpu_to_le16(INTERNETWORK); + sockaddr_storage->Family =3D INTERNETWORK; sockaddr_storage->addr4.Port =3D 0; =20 idev =3D __in_dev_get_rtnl(netdev); @@ -7920,7 +7920,7 @@ static int fsctl_query_iface_info_ioctl(struct ksmbd_= conn *conn, struct inet6_ifaddr *ifa; __u8 *ipv6_addr =3D sockaddr_storage->addr6.IPv6Address; =20 - sockaddr_storage->Family =3D cpu_to_le16(INTERNETWORKV6); + sockaddr_storage->Family =3D INTERNETWORKV6; sockaddr_storage->addr6.Port =3D 0; sockaddr_storage->addr6.FlowInfo =3D 0; =20 diff --git a/fs/smb/server/smb2pdu.h b/fs/smb/server/smb2pdu.h index a6940e971047..66cdc8e4a648 100644 --- a/fs/smb/server/smb2pdu.h +++ b/fs/smb/server/smb2pdu.h @@ -83,10 +83,6 @@ struct create_durable_rsp { } Data; } __packed; =20 -/* 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; @@ -100,9 +96,6 @@ struct create_posix_rsp { =20 #define SMB2_0_IOCTL_IS_FSCTL 0x00000001 =20 -#define INTERNETWORK 0x0002 -#define INTERNETWORKV6 0x0017 - struct sockaddr_storage_rsp { __le16 Family; union { @@ -111,18 +104,6 @@ struct sockaddr_storage_rsp { }; } __packed; =20 -#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]; --=20 2.43.0