Messages in this thread | | | Date | Tue, 08 Jun 2021 16:30:06 -0700 (PDT) | Subject | Re: [PATCH v4] ping: Check return value of function 'ping_queue_rcv_skb' | From | David Miller <> |
| |
From: Zheng Yongjun <zhengyongjun3@huawei.com> Date: Tue, 8 Jun 2021 14:42:46 +0800
> --- a/net/ipv4/ping.c > +++ b/net/ipv4/ping.c > @@ -954,6 +954,7 @@ bool ping_rcv(struct sk_buff *skb) > struct sock *sk; > struct net *net = dev_net(skb->dev); > struct icmphdr *icmph = icmp_hdr(skb); > + bool rc = false; > > /* We assume the packet has already been checked by icmp_rcv */ > > @@ -968,14 +969,13 @@ bool ping_rcv(struct sk_buff *skb) > struct sk_buff *skb2 = skb_clone(skb, GFP_ATOMIC); > > pr_debug("rcv on socket %p\n", sk); > - if (skb2) > - ping_queue_rcv_skb(sk, skb2); > + if (skb2 && !ping_queue_rcv_skb(sk, skb2)) > + rc = true; > sock_put(sk); > - return true; > } > pr_debug("no socket, dropping\n"); > > - return false; > + return rc;
YOu have chsanged the control flowe in a way that this pr_debug() can be inaccurate. It can print when we did find a socket.
Please fix this.
Thank you.
| |