diff options
author | Julian Wiedmann <jwi@linux.ibm.com> | 2021-01-28 14:41:05 +0300 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2021-01-29 07:36:21 +0300 |
commit | c464444fa2ca41255817e2bdcfc47a658ec20645 (patch) | |
tree | 5bfe15a20464d9c430ef6f4a948cb21ad0f18857 /net/iucv | |
parent | 27e9c1de529919d8dd7d072415d3bcae77709300 (diff) | |
download | linux-c464444fa2ca41255817e2bdcfc47a658ec20645.tar.xz |
net/af_iucv: don't lookup the socket on TX notification
Whoever called iucv_sk(sk)->sk_txnotify() must already know that they're
dealing with an af_iucv socket.
Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Acked-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net/iucv')
-rw-r--r-- | net/iucv/af_iucv.c | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/net/iucv/af_iucv.c b/net/iucv/af_iucv.c index 427a1abce0a8..8683b6939f45 100644 --- a/net/iucv/af_iucv.c +++ b/net/iucv/af_iucv.c @@ -2134,23 +2134,14 @@ static int afiucv_hs_rcv(struct sk_buff *skb, struct net_device *dev, static void afiucv_hs_callback_txnotify(struct sk_buff *skb, enum iucv_tx_notify n) { - struct sock *isk = skb->sk; - struct sock *sk = NULL; - struct iucv_sock *iucv = NULL; + struct iucv_sock *iucv = iucv_sk(skb->sk); + struct sock *sk = skb->sk; struct sk_buff_head *list; struct sk_buff *list_skb; struct sk_buff *nskb; unsigned long flags; - read_lock_irqsave(&iucv_sk_list.lock, flags); - sk_for_each(sk, &iucv_sk_list.head) - if (sk == isk) { - iucv = iucv_sk(sk); - break; - } - read_unlock_irqrestore(&iucv_sk_list.lock, flags); - - if (!iucv || sock_flag(sk, SOCK_ZAPPED)) + if (sock_flag(sk, SOCK_ZAPPED)) return; list = &iucv->send_skb_q; |