2023-11-16 19:11:35

by Steve French

[permalink] [raw]
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


Attachments:
0001-cifs-fix-leak-of-iface-for-primary-channel.patch (1.37 kB)
0002-cifs-fix-lock-ordering-while-disabling-multichannel.patch (2.51 kB)
Download all attachments