cifs: protect session channel fields with chan_lock
authorShyam Prasad N <sprasad@microsoft.com>
Mon, 19 Jul 2021 10:54:46 +0000 (10:54 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 8 Mar 2022 18:12:41 +0000 (19:12 +0100)
commit3d74c2c917e4006a3bd660d2fc7829cb2ef64113
tree5d2619fe6fb1862ad44bb9e028ed3047542ca859
parent2594dba1cd791ad4a7db64a33713a734b4f7deff
cifs: protect session channel fields with chan_lock

[ Upstream commit 724244cdb3828522109c88e56a0242537aefabe9 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/cifs/cifs_debug.c
fs/cifs/cifsglob.h
fs/cifs/connect.c
fs/cifs/misc.c
fs/cifs/sess.c
fs/cifs/transport.c