diff options
author | Shyam Prasad N <sprasad@microsoft.com> | 2021-07-19 12:54:46 +0200 |
---|---|---|
committer | Steve French <stfrench@microsoft.com> | 2021-11-12 23:22:20 +0100 |
commit | 724244cdb3828522109c88e56a0242537aefabe9 (patch) | |
tree | 59f14fbd73adcbb3b89fc822d24b99f47883ea67 /fs/cifs/misc.c | |
parent | cifs: do not negotiate session if session already exists (diff) | |
download | linux-724244cdb3828522109c88e56a0242537aefabe9.tar.xz linux-724244cdb3828522109c88e56a0242537aefabe9.zip |
cifs: protect session channel fields with chan_lock
Introducing a new spin lock to protect all the channel related
fields in a cifs_ses struct. This lock should be taken
whenever dealing with the channel fields, and should be held
only for very short intervals which will not sleep.
Currently, all channel related fields in cifs_ses structure
are protected by session_mutex. However, this mutex is held for
long periods (sometimes while waiting for a reply from server).
This makes the codepath quite tricky to change.
Signed-off-by: Shyam Prasad N <sprasad@microsoft.com>
Reviewed-by: Paulo Alcantara (SUSE) <pc@cjr.nz>
Signed-off-by: Steve French <stfrench@microsoft.com>
Diffstat (limited to 'fs/cifs/misc.c')
-rw-r--r-- | fs/cifs/misc.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c index a6089ea53ad7..5148d48d6a35 100644 --- a/fs/cifs/misc.c +++ b/fs/cifs/misc.c @@ -75,6 +75,7 @@ sesInfoAlloc(void) INIT_LIST_HEAD(&ret_buf->tcon_list); mutex_init(&ret_buf->session_mutex); spin_lock_init(&ret_buf->iface_lock); + spin_lock_init(&ret_buf->chan_lock); } return ret_buf; } |