Netdev is filled in egress_dev when connection is established,
If connection is closed before establishment, then egress_dev
is NULL, Fix it using ip_dev_find() rather then extracting from
egress_dev.

Fixes: 6abde0b24122 ("crypto/chtls: IPv6 support for inline TLS")
Signed-off-by: Venkatesh Ellapu <venkates...@chelsio.com>
Signed-off-by: Vinay Kumar Yadav <vinay.ya...@chelsio.com>
---
 drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_cm.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_cm.c 
b/drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_cm.c
index 2f9eceaf706d..e46228ca49ad 100644
--- a/drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_cm.c
+++ b/drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_cm.c
@@ -736,14 +736,13 @@ void chtls_listen_stop(struct chtls_dev *cdev, struct 
sock *sk)
 
 #if IS_ENABLED(CONFIG_IPV6)
        if (sk->sk_family == PF_INET6) {
-               struct chtls_sock *csk;
+               struct net_device *ndev = chtls_find_netdev(cdev, sk);
                int addr_type = 0;
 
-               csk = rcu_dereference_sk_user_data(sk);
                addr_type = ipv6_addr_type((const struct in6_addr *)
                                          &sk->sk_v6_rcv_saddr);
                if (addr_type != IPV6_ADDR_ANY)
-                       cxgb4_clip_release(csk->egress_dev, (const u32 *)
+                       cxgb4_clip_release(ndev, (const u32 *)
                                           &sk->sk_v6_rcv_saddr, 1);
        }
 #endif
-- 
2.18.1

Reply via email to