Received: by 2002:a05:6a10:413:0:0:0:0 with SMTP id 19csp962139pxp; Wed, 16 Mar 2022 22:45:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzPD2naKcotdtjJNNs0hbTITtSLPCoGAP6jJRZw1Q4/3dmPFkFw8r8nDOMyhIsxYHWluOph X-Received: by 2002:a17:902:bc83:b0:153:8d7a:70d1 with SMTP id bb3-20020a170902bc8300b001538d7a70d1mr3329773plb.63.1647495932007; Wed, 16 Mar 2022 22:45:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647495932; cv=none; d=google.com; s=arc-20160816; b=QNt/9zpv59IcYFokJnnnq8jsANJ/0/qi6qonHgOpSRLucQcDnptdt0dx3422kgZh9y P98INt1wAzt02ucEM5oPb0c50CMA9OOiOcfUzg3HY+zKxJuyiRMwoo6hQKmBD0nC45Wz tq39dc5jHZl+j4wMC7I772Oy+9Uvtl0w8MoVgiO5rLL4VaArXMdNGuwaKTF1wdlngk0I NFbdvfiBYzUw5b69E1wevyOmUOlCu4f8B3qHGwXWgxkqSBeY6Ns23N7yonABLiwK1X9I ZRejTjFmG22BcRPfT3KcWThyp1foF1c82AbkgJa6ada1qm34yyaJMb3c7V1f/u/jcgDp ANGA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=FZ3oVgkOFdOjGN51ntkgRhkDvnpqzxtfBSJIorikP9U=; b=EIuhij3Ba0xyrkmbQnEI2nWNki6lZT70eWBuCIWYkRolQLhNm5uY+NjPndJsLs9RY8 z284JGSWrvPdU9LX6ncDl1+QTKdb10KIKNn9ZB6LzSp4Vu5vztBqB0m90VhfCwdmTl0/ W9bA8MOXq0d6Wi8N0F9TemyTGGax4J5KhRt5Qycel154809mk+gfsTT8xa8EIoxQFh8+ ReK+C5Ar6OJLyqpOMgQmU7/IA16uF/stN7b9UCBiq6wzbiUGmh5RAoIfLu1sqh1wJnSJ 5eu0+rHZsGQjTHs8jCJ79WiTQeljjUL+8MK+1qsD4t2hbqiDmh32sw45K4KmTX5gKwOF CZqQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=MF4OFcWk; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id c8-20020a17090a8d0800b001c67393260esi2106851pjo.72.2022.03.16.22.45.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Mar 2022 22:45:31 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=MF4OFcWk; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 27F05121504; Wed, 16 Mar 2022 21:39:56 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1352962AbiCPBfj (ORCPT + 99 others); Tue, 15 Mar 2022 21:35:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38186 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235181AbiCPBfh (ORCPT ); Tue, 15 Mar 2022 21:35:37 -0400 Received: from mail-ej1-x644.google.com (mail-ej1-x644.google.com [IPv6:2a00:1450:4864:20::644]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C08DE33345; Tue, 15 Mar 2022 18:34:24 -0700 (PDT) Received: by mail-ej1-x644.google.com with SMTP id qa43so1155055ejc.12; Tue, 15 Mar 2022 18:34:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=FZ3oVgkOFdOjGN51ntkgRhkDvnpqzxtfBSJIorikP9U=; b=MF4OFcWkN113wb2xn99qdSLN90WhYrhjiB1meFH3g/pvR/wn4KTxp1olCmPraAAOhr 99ISfAji2kd7Pk+86KrwIGKLSFzOQD44dofaN8orFNNjdP6d/psqo+/S9BJp0bIVh0UU 1xoRekdSa1sexSz9BI0nk/6OU+T1jo2PNcgCYZpVkIcUyoXfPF2V01c80rX4KpoySw4D 0DLcoG9QdABSAKO+X0NpjqoeHXxiyi2UWihwOLWuHJnifBHIKtD/MDZfU5rOYAvXJa9Y +oRUIJodgU5s3UsHrF8v0qrzsNDu3RPGqflb9NKpgJ1IJlV+ffdJhFgDc0aWGjcTWEQ5 V2Mg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=FZ3oVgkOFdOjGN51ntkgRhkDvnpqzxtfBSJIorikP9U=; b=u+mJpjcysjo7BJtm9sL+fOeU+L2tE8kdhiIeKZ3fKJ3d+REhuKugHmgBSmE9WuM5Kr rVNL2dvafLN90YtG2/nw3X+2CME1hn/nuAW3vU2CUzpKoTaAdLSXFpe6cQl1wP8BA9b5 Dou+FD6fdIUDrQzQMdKTMd7qeIqpGu2YC3waSG9H8YzjQRNQuQVq4OtoZfzzdh5tRW8s Jpntp7+53As6/KZiCn199HsF3NBgiarShexp7GaFeqCPpN4wKlZ3qgsFr30fcI+0HTPO ORce6maPBIG+RZPPxc0ikQnEN6Ol0NUyEdXd/Atnyd08Nmahuvpzxbz0+lySuv1GdR26 rEbw== X-Gm-Message-State: AOAM530teCklBVFkOdsT97HYgDGa4egu+vrBACImxvqU6BUjUv1+T/KX X8eDmEDSdhIfF3zVz7hNjH/DGYpmrBpTJqFPmog= X-Received: by 2002:a17:906:3144:b0:6ce:de5d:5e3b with SMTP id e4-20020a170906314400b006cede5d5e3bmr25449418eje.689.1647394463212; Tue, 15 Mar 2022 18:34:23 -0700 (PDT) MIME-Version: 1.0 References: <20220314113225.151959-1-imagedong@tencent.com> <20220314113225.151959-3-imagedong@tencent.com> <5ebf8873334a3a38855e378748cb6d8948fbd0c7.camel@redhat.com> In-Reply-To: <5ebf8873334a3a38855e378748cb6d8948fbd0c7.camel@redhat.com> From: Menglong Dong Date: Wed, 16 Mar 2022 09:34:09 +0800 Message-ID: Subject: Re: [PATCH net-next 2/3] net: icmp: add skb drop reasons to ping_queue_rcv_skb() To: Paolo Abeni Cc: David Ahern , Jakub Kicinski , David Miller , Steven Rostedt , Ingo Molnar , Hideaki YOSHIFUJI , Menglong Dong , Eric Dumazet , Martin Lau , Talal Ahmad , Kees Cook , Alexander Lobakin , dongli.zhang@oracle.com, maze@google.com, aahringo@redhat.com, Wei Wang , yangbo.lu@nxp.com, Florian Westphal , tglx@linutronix.de, rpalethorpe@suse.com, LKML , netdev Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RDNS_NONE, SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Mar 15, 2022 at 8:49 PM Paolo Abeni wrote: > > Hello, > > On Mon, 2022-03-14 at 19:32 +0800, menglong8.dong@gmail.com wrote: > > From: Menglong Dong > > > > In order to get the reasons of skb drops, replace sock_queue_rcv_skb() > > used in ping_queue_rcv_skb() with sock_queue_rcv_skb_reason(). > > Meanwhile, use kfree_skb_reason() instead of kfree_skb(). > > > > As we can see in ping_rcv(), 'skb' will be freed if '-1' is returned > > by ping_queue_rcv_skb(). In order to get the drop reason of 'skb', > > make ping_queue_rcv_skb() return the drop reason. > > > > As ping_queue_rcv_skb() is used as 'ping_prot.backlog_rcv()', we can't > > change its return type. (Seems ping_prot.backlog_rcv() is not used?) > > Therefore, make it return 'drop_reason * -1' to keep the origin logic. > > > > Signed-off-by: Menglong Dong > > --- > > net/ipv4/ping.c | 7 ++++--- > > 1 file changed, 4 insertions(+), 3 deletions(-) > > > > diff --git a/net/ipv4/ping.c b/net/ipv4/ping.c > > index 3ee947557b88..cd4eb211431a 100644 > > --- a/net/ipv4/ping.c > > +++ b/net/ipv4/ping.c > > @@ -936,12 +936,13 @@ EXPORT_SYMBOL_GPL(ping_recvmsg); > > > > int ping_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) > > { > > + enum skb_drop_reason reason; > > Please insert an empty line between variable declaration and code. Ok > > > pr_debug("ping_queue_rcv_skb(sk=%p,sk->num=%d,skb=%p)\n", > > inet_sk(sk), inet_sk(sk)->inet_num, skb); > > - if (sock_queue_rcv_skb(sk, skb) < 0) { > > - kfree_skb(skb); > > + if (sock_queue_rcv_skb_reason(sk, skb, &reason) < 0) { > > + kfree_skb_reason(skb, reason); > > pr_debug("ping_queue_rcv_skb -> failed\n"); > > - return -1; > > + return -reason; > > This changes the return value for the release callback. Such callback > has a long and non trivial call chain via sk_backlog_rcv. > > It *should* be safe, but have you considered factoring out an > __ping_queue_rcv_skb() variant returning the full drop reason, use it > in the next patch and build ping_queue_rcv_skb() on top of such helper > to that backlog_rcv() return code will not change? > > The above should additionally avoid the IMHO not so nice: > > reason = ping_queue_rcv_skb(sk, skb2) * -1; > > in the next patch - it will become: > > reason = __ping_queue_rcv_skb(sk, skb2); > Good idea, thanks! Menglong Dong