Commit 9819f22c authored by Vinay Kumar Yadav's avatar Vinay Kumar Yadav Committed by Jakub Kicinski
Browse files

chelsio/chtls: Fix panic when listen on multiadapter



Add the logic to compare net_device returned by ip_dev_find()
with the net_device list in cdev->ports[] array and return
net_device if matched else NULL.

Fixes: 6abde0b2 ("crypto/chtls: IPv6 support for inline TLS")
Signed-off-by: default avatarVenkatesh Ellapu <venkatesh.e@chelsio.com>
Signed-off-by: default avatarVinay Kumar Yadav <vinay.yadav@chelsio.com>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 86cdf9ca
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -92,11 +92,13 @@ static void chtls_sock_release(struct kref *ref)
static struct net_device *chtls_find_netdev(struct chtls_dev *cdev,
					    struct sock *sk)
{
	struct adapter *adap = pci_get_drvdata(cdev->pdev);
	struct net_device *ndev = cdev->ports[0];
#if IS_ENABLED(CONFIG_IPV6)
	struct net_device *temp;
	int addr_type;
#endif
	int i;

	switch (sk->sk_family) {
	case PF_INET:
@@ -127,8 +129,12 @@ static struct net_device *chtls_find_netdev(struct chtls_dev *cdev,
		return NULL;

	if (is_vlan_dev(ndev))
		return vlan_dev_real_dev(ndev);
		ndev = vlan_dev_real_dev(ndev);

	for_each_port(adap, i)
		if (cdev->ports[i] == ndev)
			return ndev;
	return NULL;
}

static void assign_rxopt(struct sock *sk, unsigned int opt)