summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenrique Carvalho <henrique.carvalho@suse.com>2024-11-14 16:28:49 -0300
committerHenrique Carvalho <henrique.carvalho@suse.com>2024-11-14 16:31:46 -0300
commit189c2c20b77dd500a3706bee711acde11baf792e (patch)
tree4eeca886e5e7b00dd7a1d95cb290ad4a2d77e4ef
parent52077a5186d55d2619dd2d7ec503fd3de56d0aa0 (diff)
downloadlinux-189c2c20b77dd500a3706bee711acde11baf792e.tar.gz
linux-189c2c20b77dd500a3706bee711acde11baf792e.tar.bz2
linux-189c2c20b77dd500a3706bee711acde11baf792e.zip
smb: client: remove ->generate_signingkey ophw24-hc
Replace it for generic generate_smb_signingkey function. Signed-off-by: Henrique Carvalho <henrique.carvalho@suse.com>
-rw-r--r--fs/smb/client/cifsglob.h3
-rw-r--r--fs/smb/client/cifsproto.h2
-rw-r--r--fs/smb/client/smb2ops.c2
-rw-r--r--fs/smb/client/smb2pdu.c14
-rw-r--r--fs/smb/client/smb2transport.c15
5 files changed, 23 insertions, 13 deletions
diff --git a/fs/smb/client/cifsglob.h b/fs/smb/client/cifsglob.h
index cdda8e61ba98..ba47f14937ab 100644
--- a/fs/smb/client/cifsglob.h
+++ b/fs/smb/client/cifsglob.h
@@ -279,9 +279,6 @@ struct smb_version_operations {
umode_t mode, struct cifs_tcon *tcon,
const char *full_path,
struct cifs_sb_info *cifs_sb); /* send create hardlink request */
- /* query remote filesystem */
- int (*generate_signingkey)(struct cifs_ses *ses,
- struct TCP_Server_Info *server);
int (*calc_signature)(struct smb_rqst *, struct TCP_Server_Info *,
bool allocate_crypto);
/* parse lease context buffer and return oplock/epoch info */
diff --git a/fs/smb/client/cifsproto.h b/fs/smb/client/cifsproto.h
index daadff2f7663..bdb1652f0859 100644
--- a/fs/smb/client/cifsproto.h
+++ b/fs/smb/client/cifsproto.h
@@ -324,6 +324,8 @@ extern int generate_smb30signingkey(struct cifs_ses *ses,
struct TCP_Server_Info *server);
extern int generate_smb311signingkey(struct cifs_ses *ses,
struct TCP_Server_Info *server);
+extern int generate_smb_signingkey(struct cifs_ses *ses,
+ struct TCP_Server_Info *server);
extern void cifs_autodisable_serverino(struct cifs_sb_info *cifs_sb);
extern bool couldbe_mf_symlink(const struct cifs_fattr *fattr);
diff --git a/fs/smb/client/smb2ops.c b/fs/smb/client/smb2ops.c
index b0189727de40..ac55a1b76ab2 100644
--- a/fs/smb/client/smb2ops.c
+++ b/fs/smb/client/smb2ops.c
@@ -5088,7 +5088,6 @@ struct smb_version_operations smb21_operations = {
struct smb_version_operations smb30_operations = {
/* WSL tags introduced long after smb2.1, enable for SMB3, 3.11 only */
- .generate_signingkey = generate_smb30signingkey,
.calc_signature = smb3_calc_signature,
.parse_lease_buf = smb3_parse_lease_buf,
.duplicate_extents = smb2_duplicate_extents,
@@ -5099,7 +5098,6 @@ struct smb_version_operations smb30_operations = {
};
struct smb_version_operations smb311_operations = {
- .generate_signingkey = generate_smb311signingkey,
.calc_signature = smb3_calc_signature,
.parse_lease_buf = smb3_parse_lease_buf,
.duplicate_extents = smb2_duplicate_extents,
diff --git a/fs/smb/client/smb2pdu.c b/fs/smb/client/smb2pdu.c
index 9ed77efb9b62..15c0901ce9bf 100644
--- a/fs/smb/client/smb2pdu.c
+++ b/fs/smb/client/smb2pdu.c
@@ -1574,14 +1574,12 @@ SMB2_sess_establish_session(struct SMB2_sess_data *sess_data)
struct TCP_Server_Info *server = sess_data->server;
cifs_server_lock(server);
- if (server->ops->generate_signingkey) {
- rc = server->ops->generate_signingkey(ses, server);
- if (rc) {
- cifs_dbg(FYI,
- "SMB3 session key generation failed\n");
- cifs_server_unlock(server);
- return rc;
- }
+ rc = generate_smb_signingkey(ses, server);
+ if (rc) {
+ cifs_dbg(FYI,
+ "SMB3 session key generation failed\n");
+ cifs_server_unlock(server);
+ return rc;
}
if (!server->session_estab) {
server->sequence_number = 0x2;
diff --git a/fs/smb/client/smb2transport.c b/fs/smb/client/smb2transport.c
index a42654498abe..d6c7a6276f3a 100644
--- a/fs/smb/client/smb2transport.c
+++ b/fs/smb/client/smb2transport.c
@@ -557,6 +557,21 @@ generate_smb311signingkey(struct cifs_ses *ses,
return generate_smb3signingkey(ses, server, &triplet);
}
+int
+generate_smb_signingkey(struct cifs_ses *ses,
+ struct TCP_Server_Info *server)
+{
+ u16 protocol_id = server->vals->protocol_id;
+ if (protocol_id >= SMB311_PROT_ID)
+ return generate_smb311signingkey(ses, server);
+ else if (protocol_id >= SMB30_PROT_ID)
+ return generate_smb30signingkey(ses, server);
+ else
+ pr_warn_once("unsupported protocol id 0x%x\n", protocol_id);
+ return -ENOTSUPP;
+}
+
+
int
smb3_calc_signature(struct smb_rqst *rqst, struct TCP_Server_Info *server,
bool allocate_crypto)