Two ksmbd server fixes

-----BEGIN PGP SIGNATURE-----
 
 iQGzBAABCgAdFiEE6fsu8pdIjtWE/DpLiiy9cAdyT1EFAmkNTw4ACgkQiiy9cAdy
 T1FILAv+ICa4OhWFeZEczTxbrM5RP6qfkMww5pm1OZLaw431h2KhZB2ak9C1iYBJ
 WqU7rE2panFRlN3I79z88gGGxMKjWVDApaIExm0Aab4Nui+rUslCyHiJzX+25XTi
 FwfCHKmM10yLUfcUfMXMg1fr2LO/tqEh11cluAOOdoofPOIpYB5/DtJ3fSK01/Ab
 Knn12KMpExfhRtit4wJ3eTyBWI/UIOQ9BOgHez6ELWpFCnhNK9/Q8qNBjefI+JnY
 h8bsqwwtTN46JbPmRLVIJq8PuM704DOF7KPzfT85W2/6+UV3ULA9PBICeIBmJN9w
 ZNQ5sYw72mJTIZwSTiYYgX0YH5Iv0gsvagnac2HLO/p0UZXQXXAgXfbddrFVV4Jt
 AtHRdBqQJFz2OQk1Wqat2QrPxOiP31nkUAe1fNB6P28wCgGzr1da75m65ccTP8Mg
 8X9q9MPGKQOIuFYx/s/7Ln5dv9XmuqTvvJVa4SQOZCVWJbAAtKtAC52i5fDp4SEV
 naMgcuTr
 =QNQi
 -----END PGP SIGNATURE-----

Merge tag 'v6.18-rc4-smb-server-fixes' of git://git.samba.org/ksmbd

Pull smb server fixes from Steve French:

 - More safely detect RDMA capable devices correctly

* tag 'v6.18-rc4-smb-server-fixes' of git://git.samba.org/ksmbd:
  ksmbd: detect RDMA capable netdevs include IPoIB
  ksmbd: detect RDMA capable lower devices when bridge and vlan netdev is used
This commit is contained in:
Linus Torvalds 2025-11-07 07:39:57 -08:00
commit cff0a1be08

View File

@ -2606,7 +2606,7 @@ void ksmbd_rdma_destroy(void)
}
}
bool ksmbd_rdma_capable_netdev(struct net_device *netdev)
static bool ksmbd_find_rdma_capable_netdev(struct net_device *netdev)
{
struct smb_direct_device *smb_dev;
int i;
@ -2648,6 +2648,28 @@ bool ksmbd_rdma_capable_netdev(struct net_device *netdev)
return rdma_capable;
}
bool ksmbd_rdma_capable_netdev(struct net_device *netdev)
{
struct net_device *lower_dev;
struct list_head *iter;
if (ksmbd_find_rdma_capable_netdev(netdev))
return true;
/* check if netdev is bridge or VLAN */
if (netif_is_bridge_master(netdev) ||
netdev->priv_flags & IFF_802_1Q_VLAN)
netdev_for_each_lower_dev(netdev, lower_dev, iter)
if (ksmbd_find_rdma_capable_netdev(lower_dev))
return true;
/* check if netdev is IPoIB safely without layer violation */
if (netdev->type == ARPHRD_INFINIBAND)
return true;
return false;
}
static const struct ksmbd_transport_ops ksmbd_smb_direct_transport_ops = {
.prepare = smb_direct_prepare,
.disconnect = smb_direct_disconnect,