diff options
author | Long Li <longli@microsoft.com> | 2020-04-01 01:21:43 +0200 |
---|---|---|
committer | Steve French <stfrench@microsoft.com> | 2020-04-07 19:41:16 +0200 |
commit | eda1c54f148a86f5e64d4d1d3f62d9ea7f94c17e (patch) | |
tree | dc8347065b8ef15630328e370a01940294c2b010 /fs/cifs/cifsglob.h | |
parent | cifs: smbd: Update receive credits before sending and deal with credits roll ... (diff) | |
download | linux-eda1c54f148a86f5e64d4d1d3f62d9ea7f94c17e.tar.xz linux-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/cifsglob.h')
-rw-r--r-- | fs/cifs/cifsglob.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h index 0d956360e984..7448e7202e7a 100644 --- a/fs/cifs/cifsglob.h +++ b/fs/cifs/cifsglob.h @@ -426,7 +426,8 @@ struct smb_version_operations { /* generate new lease key */ void (*new_lease_key)(struct cifs_fid *); int (*generate_signingkey)(struct cifs_ses *); - int (*calc_signature)(struct smb_rqst *, struct TCP_Server_Info *); + int (*calc_signature)(struct smb_rqst *, struct TCP_Server_Info *, + bool allocate_crypto); int (*set_integrity)(const unsigned int, struct cifs_tcon *tcon, struct cifsFileInfo *src_file); int (*enum_snapshots)(const unsigned int xid, struct cifs_tcon *tcon, |