Skip to content

Commit 34cf191

Browse files
ZhangGuoDongsmfrench
authored andcommitted
smb: move smb_version_values to common/smbglob.h
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 <chenxiaosong@kylinos.cn> Signed-off-by: ChenXiaoSong <chenxiaosong@kylinos.cn> Signed-off-by: ZhangGuoDong <zhangguodong@kylinos.cn> Acked-by: Namjae Jeon <linkinjeon@kernel.org> Signed-off-by: Steve French <stfrench@microsoft.com>
1 parent 94b9551 commit 34cf191

6 files changed

Lines changed: 53 additions & 73 deletions

File tree

fs/smb/client/cifsglob.h

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -633,28 +633,6 @@ struct smb_version_operations {
633633
struct kvec *xattr_iov);
634634
};
635635

636-
struct smb_version_values {
637-
char *version_string;
638-
__u16 protocol_id;
639-
__u32 req_capabilities;
640-
__u32 large_lock_type;
641-
__u32 exclusive_lock_type;
642-
__u32 shared_lock_type;
643-
__u32 unlock_lock_type;
644-
size_t header_preamble_size;
645-
size_t header_size;
646-
size_t max_header_size;
647-
size_t read_rsp_size;
648-
__le16 lock_cmd;
649-
unsigned int cap_unix;
650-
unsigned int cap_nt_find;
651-
unsigned int cap_large_files;
652-
unsigned int cap_unicode;
653-
__u16 signing_enabled;
654-
__u16 signing_required;
655-
size_t create_lease_size;
656-
};
657-
658636
#define HEADER_SIZE(server) (server->vals->header_size)
659637
#define MAX_HEADER_SIZE(server) (server->vals->max_header_size)
660638
#define HEADER_PREAMBLE_SIZE(server) (server->vals->header_preamble_size)

fs/smb/common/smbglob.h

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,37 @@
99
#ifndef _COMMON_SMB_GLOB_H
1010
#define _COMMON_SMB_GLOB_H
1111

12+
struct smb_version_values {
13+
char *version_string;
14+
__u16 protocol_id;
15+
__le16 lock_cmd;
16+
__u32 req_capabilities;
17+
__u32 max_read_size;
18+
__u32 max_write_size;
19+
__u32 max_trans_size;
20+
__u32 max_credits;
21+
__u32 large_lock_type;
22+
__u32 exclusive_lock_type;
23+
__u32 shared_lock_type;
24+
__u32 unlock_lock_type;
25+
size_t header_preamble_size;
26+
size_t header_size;
27+
size_t max_header_size;
28+
size_t read_rsp_size;
29+
unsigned int cap_unix;
30+
unsigned int cap_nt_find;
31+
unsigned int cap_large_files;
32+
unsigned int cap_unicode;
33+
__u16 signing_enabled;
34+
__u16 signing_required;
35+
size_t create_lease_size;
36+
size_t create_durable_size;
37+
size_t create_durable_v2_size;
38+
size_t create_mxac_size;
39+
size_t create_disk_id_size;
40+
size_t create_posix_size;
41+
};
42+
1243
static inline void inc_rfc1001_len(void *buf, int count)
1344
{
1445
be32_add_cpu((__be32 *)buf, count);

fs/smb/server/smb2misc.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,7 @@ int ksmbd_smb2_check_message(struct ksmbd_work *work)
460460
}
461461

462462
validate_credit:
463-
if ((work->conn->vals->capabilities & SMB2_GLOBAL_CAP_LARGE_MTU) &&
463+
if ((work->conn->vals->req_capabilities & SMB2_GLOBAL_CAP_LARGE_MTU) &&
464464
smb2_validate_credit_charge(work->conn, hdr))
465465
return 1;
466466

fs/smb/server/smb2ops.c

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
static struct smb_version_values smb21_server_values = {
1616
.version_string = SMB21_VERSION_STRING,
1717
.protocol_id = SMB21_PROT_ID,
18-
.capabilities = SMB2_GLOBAL_CAP_LARGE_MTU,
18+
.req_capabilities = SMB2_GLOBAL_CAP_LARGE_MTU,
1919
.max_read_size = SMB21_DEFAULT_IOSIZE,
2020
.max_write_size = SMB21_DEFAULT_IOSIZE,
2121
.max_trans_size = SMB21_DEFAULT_IOSIZE,
@@ -41,7 +41,7 @@ static struct smb_version_values smb21_server_values = {
4141
static struct smb_version_values smb30_server_values = {
4242
.version_string = SMB30_VERSION_STRING,
4343
.protocol_id = SMB30_PROT_ID,
44-
.capabilities = SMB2_GLOBAL_CAP_LARGE_MTU,
44+
.req_capabilities = SMB2_GLOBAL_CAP_LARGE_MTU,
4545
.max_read_size = SMB3_DEFAULT_IOSIZE,
4646
.max_write_size = SMB3_DEFAULT_IOSIZE,
4747
.max_trans_size = SMB3_DEFAULT_TRANS_SIZE,
@@ -68,7 +68,7 @@ static struct smb_version_values smb30_server_values = {
6868
static struct smb_version_values smb302_server_values = {
6969
.version_string = SMB302_VERSION_STRING,
7070
.protocol_id = SMB302_PROT_ID,
71-
.capabilities = SMB2_GLOBAL_CAP_LARGE_MTU,
71+
.req_capabilities = SMB2_GLOBAL_CAP_LARGE_MTU,
7272
.max_read_size = SMB3_DEFAULT_IOSIZE,
7373
.max_write_size = SMB3_DEFAULT_IOSIZE,
7474
.max_trans_size = SMB3_DEFAULT_TRANS_SIZE,
@@ -95,7 +95,7 @@ static struct smb_version_values smb302_server_values = {
9595
static struct smb_version_values smb311_server_values = {
9696
.version_string = SMB311_VERSION_STRING,
9797
.protocol_id = SMB311_PROT_ID,
98-
.capabilities = SMB2_GLOBAL_CAP_LARGE_MTU,
98+
.req_capabilities = SMB2_GLOBAL_CAP_LARGE_MTU,
9999
.max_read_size = SMB3_DEFAULT_IOSIZE,
100100
.max_write_size = SMB3_DEFAULT_IOSIZE,
101101
.max_trans_size = SMB3_DEFAULT_TRANS_SIZE,
@@ -204,7 +204,7 @@ void init_smb2_1_server(struct ksmbd_conn *conn)
204204
conn->signing_algorithm = SIGNING_ALG_HMAC_SHA256_LE;
205205

206206
if (server_conf.flags & KSMBD_GLOBAL_FLAG_SMB2_LEASES)
207-
conn->vals->capabilities |= SMB2_GLOBAL_CAP_LEASING;
207+
conn->vals->req_capabilities |= SMB2_GLOBAL_CAP_LEASING;
208208
}
209209

210210
/**
@@ -221,20 +221,20 @@ void init_smb3_0_server(struct ksmbd_conn *conn)
221221
conn->signing_algorithm = SIGNING_ALG_AES_CMAC_LE;
222222

223223
if (server_conf.flags & KSMBD_GLOBAL_FLAG_SMB2_LEASES)
224-
conn->vals->capabilities |= SMB2_GLOBAL_CAP_LEASING |
224+
conn->vals->req_capabilities |= SMB2_GLOBAL_CAP_LEASING |
225225
SMB2_GLOBAL_CAP_DIRECTORY_LEASING;
226226

227227
if (server_conf.flags & KSMBD_GLOBAL_FLAG_SMB2_ENCRYPTION &&
228228
conn->cli_cap & SMB2_GLOBAL_CAP_ENCRYPTION)
229-
conn->vals->capabilities |= SMB2_GLOBAL_CAP_ENCRYPTION;
229+
conn->vals->req_capabilities |= SMB2_GLOBAL_CAP_ENCRYPTION;
230230

231231
if (server_conf.flags & KSMBD_GLOBAL_FLAG_SMB2_ENCRYPTION ||
232232
(!(server_conf.flags & KSMBD_GLOBAL_FLAG_SMB2_ENCRYPTION_OFF) &&
233233
conn->cli_cap & SMB2_GLOBAL_CAP_ENCRYPTION))
234-
conn->vals->capabilities |= SMB2_GLOBAL_CAP_ENCRYPTION;
234+
conn->vals->req_capabilities |= SMB2_GLOBAL_CAP_ENCRYPTION;
235235

236236
if (server_conf.flags & KSMBD_GLOBAL_FLAG_SMB3_MULTICHANNEL)
237-
conn->vals->capabilities |= SMB2_GLOBAL_CAP_MULTI_CHANNEL;
237+
conn->vals->req_capabilities |= SMB2_GLOBAL_CAP_MULTI_CHANNEL;
238238
}
239239

240240
/**
@@ -251,19 +251,19 @@ void init_smb3_02_server(struct ksmbd_conn *conn)
251251
conn->signing_algorithm = SIGNING_ALG_AES_CMAC_LE;
252252

253253
if (server_conf.flags & KSMBD_GLOBAL_FLAG_SMB2_LEASES)
254-
conn->vals->capabilities |= SMB2_GLOBAL_CAP_LEASING |
254+
conn->vals->req_capabilities |= SMB2_GLOBAL_CAP_LEASING |
255255
SMB2_GLOBAL_CAP_DIRECTORY_LEASING;
256256

257257
if (server_conf.flags & KSMBD_GLOBAL_FLAG_SMB2_ENCRYPTION ||
258258
(!(server_conf.flags & KSMBD_GLOBAL_FLAG_SMB2_ENCRYPTION_OFF) &&
259259
conn->cli_cap & SMB2_GLOBAL_CAP_ENCRYPTION))
260-
conn->vals->capabilities |= SMB2_GLOBAL_CAP_ENCRYPTION;
260+
conn->vals->req_capabilities |= SMB2_GLOBAL_CAP_ENCRYPTION;
261261

262262
if (server_conf.flags & KSMBD_GLOBAL_FLAG_SMB3_MULTICHANNEL)
263-
conn->vals->capabilities |= SMB2_GLOBAL_CAP_MULTI_CHANNEL;
263+
conn->vals->req_capabilities |= SMB2_GLOBAL_CAP_MULTI_CHANNEL;
264264

265265
if (server_conf.flags & KSMBD_GLOBAL_FLAG_DURABLE_HANDLE)
266-
conn->vals->capabilities |= SMB2_GLOBAL_CAP_PERSISTENT_HANDLES;
266+
conn->vals->req_capabilities |= SMB2_GLOBAL_CAP_PERSISTENT_HANDLES;
267267
}
268268

269269
/**
@@ -280,14 +280,14 @@ int init_smb3_11_server(struct ksmbd_conn *conn)
280280
conn->signing_algorithm = SIGNING_ALG_AES_CMAC_LE;
281281

282282
if (server_conf.flags & KSMBD_GLOBAL_FLAG_SMB2_LEASES)
283-
conn->vals->capabilities |= SMB2_GLOBAL_CAP_LEASING |
283+
conn->vals->req_capabilities |= SMB2_GLOBAL_CAP_LEASING |
284284
SMB2_GLOBAL_CAP_DIRECTORY_LEASING;
285285

286286
if (server_conf.flags & KSMBD_GLOBAL_FLAG_SMB3_MULTICHANNEL)
287-
conn->vals->capabilities |= SMB2_GLOBAL_CAP_MULTI_CHANNEL;
287+
conn->vals->req_capabilities |= SMB2_GLOBAL_CAP_MULTI_CHANNEL;
288288

289289
if (server_conf.flags & KSMBD_GLOBAL_FLAG_DURABLE_HANDLE)
290-
conn->vals->capabilities |= SMB2_GLOBAL_CAP_PERSISTENT_HANDLES;
290+
conn->vals->req_capabilities |= SMB2_GLOBAL_CAP_PERSISTENT_HANDLES;
291291

292292
INIT_LIST_HEAD(&conn->preauth_sess_table);
293293
return 0;

fs/smb/server/smb2pdu.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ int init_smb2_neg_rsp(struct ksmbd_work *work)
282282
/* Not setting conn guid rsp->ServerGUID, as it
283283
* not used by client for identifying connection
284284
*/
285-
rsp->Capabilities = cpu_to_le32(conn->vals->capabilities);
285+
rsp->Capabilities = cpu_to_le32(conn->vals->req_capabilities);
286286
/* Default Max Message Size till SMB2.0, 64K*/
287287
rsp->MaxTransactSize = cpu_to_le32(conn->vals->max_trans_size);
288288
rsp->MaxReadSize = cpu_to_le32(conn->vals->max_read_size);
@@ -956,7 +956,7 @@ bool smb3_encryption_negotiated(struct ksmbd_conn *conn)
956956
* SMB 3.0 and 3.0.2 dialects use the SMB2_GLOBAL_CAP_ENCRYPTION flag.
957957
* SMB 3.1.1 uses the cipher_type field.
958958
*/
959-
return (conn->vals->capabilities & SMB2_GLOBAL_CAP_ENCRYPTION) ||
959+
return (conn->vals->req_capabilities & SMB2_GLOBAL_CAP_ENCRYPTION) ||
960960
conn->cipher_type;
961961
}
962962

@@ -1210,7 +1210,7 @@ int smb2_handle_negotiate(struct ksmbd_work *work)
12101210
rc = -EINVAL;
12111211
goto err_out;
12121212
}
1213-
rsp->Capabilities = cpu_to_le32(conn->vals->capabilities);
1213+
rsp->Capabilities = cpu_to_le32(conn->vals->req_capabilities);
12141214

12151215
/* For stats */
12161216
conn->connection_type = conn->dialect;
@@ -3464,7 +3464,7 @@ int smb2_open(struct ksmbd_work *work)
34643464
share_ret = ksmbd_smb_check_shared_mode(fp->filp, fp);
34653465
if (!test_share_config_flag(work->tcon->share_conf, KSMBD_SHARE_FLAG_OPLOCKS) ||
34663466
(req_op_level == SMB2_OPLOCK_LEVEL_LEASE &&
3467-
!(conn->vals->capabilities & SMB2_GLOBAL_CAP_LEASING))) {
3467+
!(conn->vals->req_capabilities & SMB2_GLOBAL_CAP_LEASING))) {
34683468
if (share_ret < 0 && !S_ISDIR(file_inode(fp->filp)->i_mode)) {
34693469
rc = share_ret;
34703470
goto err_out1;
@@ -7974,7 +7974,7 @@ static int fsctl_validate_negotiate_info(struct ksmbd_conn *conn,
79747974
goto err_out;
79757975
}
79767976

7977-
neg_rsp->Capabilities = cpu_to_le32(conn->vals->capabilities);
7977+
neg_rsp->Capabilities = cpu_to_le32(conn->vals->req_capabilities);
79787978
memset(neg_rsp->Guid, 0, SMB2_CLIENT_GUID_SIZE);
79797979
neg_rsp->SecurityMode = cpu_to_le16(conn->srv_sec_mode);
79807980
neg_rsp->Dialect = cpu_to_le16(conn->dialect);

fs/smb/server/smb_common.h

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -338,35 +338,6 @@ struct file_id_full_dir_info {
338338
char FileName[];
339339
} __packed; /* level 0x105 FF rsp data */
340340

341-
struct smb_version_values {
342-
char *version_string;
343-
__u16 protocol_id;
344-
__le16 lock_cmd;
345-
__u32 capabilities;
346-
__u32 max_read_size;
347-
__u32 max_write_size;
348-
__u32 max_trans_size;
349-
__u32 max_credits;
350-
__u32 large_lock_type;
351-
__u32 exclusive_lock_type;
352-
__u32 shared_lock_type;
353-
__u32 unlock_lock_type;
354-
size_t header_size;
355-
size_t max_header_size;
356-
size_t read_rsp_size;
357-
unsigned int cap_unix;
358-
unsigned int cap_nt_find;
359-
unsigned int cap_large_files;
360-
__u16 signing_enabled;
361-
__u16 signing_required;
362-
size_t create_lease_size;
363-
size_t create_durable_size;
364-
size_t create_durable_v2_size;
365-
size_t create_mxac_size;
366-
size_t create_disk_id_size;
367-
size_t create_posix_size;
368-
};
369-
370341
struct filesystem_posix_info {
371342
/* For undefined recommended transfer size return -1 in that field */
372343
__le32 OptimalTransferSize; /* bsize on some os, iosize on other os */

0 commit comments

Comments
 (0)