aboutsummaryrefslogtreecommitdiffstats
path: root/fs/cifs/smb2proto.h
diff options
context:
space:
mode:
authorLong Li <longli@microsoft.com>2020-03-31 16:21:43 -0700
committerSteve French <stfrench@microsoft.com>2020-04-07 12:41:16 -0500
commiteda1c54f148a86f5e64d4d1d3f62d9ea7f94c17e (patch)
treedc8347065b8ef15630328e370a01940294c2b010 /fs/cifs/smb2proto.h
parentcifs: smbd: Update receive credits before sending and deal with credits roll back on failure before sending (diff)
downloadlinux-dev-eda1c54f148a86f5e64d4d1d3f62d9ea7f94c17e.tar.xz
linux-dev-eda1c54f148a86f5e64d4d1d3f62d9ea7f94c17e.zip
cifs: Allocate crypto structures on the fly for calculating signatures of incoming packets
CIFS uses pre-allocated crypto structures to calculate signatures for both incoming and outgoing packets. In this way it doesn't need to allocate crypto structures for every packet, but it requires a lock to prevent concurrent access to crypto structures. Remove the lock by allocating crypto structures on the fly for incoming packets. At the same time, we can still use pre-allocated crypto structures for outgoing packets, as they are already protected by transport lock srv_mutex. Signed-off-by: Long Li <longli@microsoft.com> Signed-off-by: Steve French <stfrench@microsoft.com>
Diffstat (limited to 'fs/cifs/smb2proto.h')
-rw-r--r--fs/cifs/smb2proto.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/cifs/smb2proto.h b/fs/cifs/smb2proto.h
index 4d1ff7b66fdc..087d5f14320b 100644
--- a/fs/cifs/smb2proto.h
+++ b/fs/cifs/smb2proto.h
@@ -55,9 +55,11 @@ extern struct cifs_ses *smb2_find_smb_ses(struct TCP_Server_Info *server,
extern struct cifs_tcon *smb2_find_smb_tcon(struct TCP_Server_Info *server,
__u64 ses_id, __u32 tid);
extern int smb2_calc_signature(struct smb_rqst *rqst,
- struct TCP_Server_Info *server);
+ struct TCP_Server_Info *server,
+ bool allocate_crypto);
extern int smb3_calc_signature(struct smb_rqst *rqst,
- struct TCP_Server_Info *server);
+ struct TCP_Server_Info *server,
+ bool allocate_crypto);
extern void smb2_echo_request(struct work_struct *work);
extern __le32 smb2_get_lease_state(struct cifsInodeInfo *cinode);
extern bool smb2_is_valid_oplock_break(char *buffer,