[<prev] [next>] [day] [month] [year] [list]
Message-ID: <CAH2r5mu8NBbW3ipMYd-UdfV+oDA1R7mwV-A8=PzU5qrd4kEiGg@mail.gmail.com>
Date: Thu, 16 Nov 2023 13:10:58 -0600
From: Steve French <smfrench@...il.com>
To: CIFS <linux-cifs@...r.kernel.org>,
samba-technical <samba-technical@...ts.samba.org>
Cc: LKML <linux-kernel@...r.kernel.org>
Subject: [PATCH][SMB client] two multichannel patches
Any thoughts on these two multichannel patches from Shyam (attached)?
The first fixes: "cifs: account for primary channel in the interface
list" which fixes a refcounting issue in channel deallocation. The
second fixes a lock ordering problem in the recent patch: "cifs:
handle when server stops supporting multichannel"
The code to handle the case of server disabling multichannel
was picking iface_lock with chan_lock held. This goes against
the lock ordering rules, as iface_lock is a higher order lock
(even if it isn't so obvious).
This change fixes the lock ordering by doing the following in
that order for each secondary channel:
1. store iface and server pointers in local variable
2. remove references to iface and server in channels
3. unlock chan_lock
4. lock iface_lock
5. dec ref count for iface
6. unlock iface_lock
7. dec ref count for server
8. lock chan_lock again
Let me know if any test feedback or reviews
--
Thanks,
Steve
View attachment "0001-cifs-fix-leak-of-iface-for-primary-channel.patch" of type "text/x-patch" (1401 bytes)
View attachment "0002-cifs-fix-lock-ordering-while-disabling-multichannel.patch" of type "text/x-patch" (2573 bytes)
Powered by blists - more mailing lists