Commit 86cdf9ca authored by Vinay Kumar Yadav's avatar Vinay Kumar Yadav Committed by Jakub Kicinski

chelsio/chtls: fix panic when server is on ipv6

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: 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 81519d1f
...@@ -736,14 +736,13 @@ void chtls_listen_stop(struct chtls_dev *cdev, struct sock *sk) ...@@ -736,14 +736,13 @@ void chtls_listen_stop(struct chtls_dev *cdev, struct sock *sk)
#if IS_ENABLED(CONFIG_IPV6) #if IS_ENABLED(CONFIG_IPV6)
if (sk->sk_family == PF_INET6) { if (sk->sk_family == PF_INET6) {
struct chtls_sock *csk; struct net_device *ndev = chtls_find_netdev(cdev, sk);
int addr_type = 0; int addr_type = 0;
csk = rcu_dereference_sk_user_data(sk);
addr_type = ipv6_addr_type((const struct in6_addr *) addr_type = ipv6_addr_type((const struct in6_addr *)
&sk->sk_v6_rcv_saddr); &sk->sk_v6_rcv_saddr);
if (addr_type != IPV6_ADDR_ANY) 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); &sk->sk_v6_rcv_saddr, 1);
} }
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment