Received: by 2002:a05:6a10:1a4d:0:0:0:0 with SMTP id nk13csp5511582pxb; Mon, 14 Feb 2022 00:17:24 -0800 (PST) X-Google-Smtp-Source: ABdhPJxfVH4MNzQ8y1GqU6dT/Yf13VpaO0gP7DetF53C2Z1RuReOqCPfMVoKXBQbl6Z9qdPwsZ54 X-Received: by 2002:a05:6402:f06:: with SMTP id i6mr13822837eda.371.1644826644125; Mon, 14 Feb 2022 00:17:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1644826644; cv=none; d=google.com; s=arc-20160816; b=hw9jlnmTU8/KRqMB5O9IAVsuUznbA6Pa1NCRw1TDzEpurSzdglN9ldsH9HRHsKWHgw mZDCvnrNpFUBPydKmpZcvDwS1C/bqr+7GTx5jrHj23PgBc0ChD2tjKFSR7vlPQgBJ3fn /+AOtuc+YrOCVG+ySStJBfLxd0i9YN7V1Zo7DqW5IbXbD1MUHAm6SixE3/PLBN4eTbg0 2HGgav8h9wHxUgMPWysLPsFA1gIInXplajzz6R8dUdUV/qUATW7S9IMtb0vu7azs/wFE Ab0WMRid4nue6r5RMvsnWOzERhiQf8hsgMJ6z1S/o5XjyxFuRq+X/i7MeRTLo0ATUrYM slJQ== 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=3O5dxW8Yi3OGBQsUph2cEFwlLeho+NaqEkL3/CgaS64=; b=Y1U8qAJPi+SK/QKNVwina1BWdSS/jdn7pujpKqpqm3586uytlbvNEO1hbCfaJkz0v3 RNFsumQ/uGpo7vA6lsirv311ySkS7r3nf2yrQCvrAx5KhznP9M1VV2o+VNBuVbzKcZLW VUBOg+K/xIERFiM8YsUp+f+jt9v2BUaJaZH03tG230IVJDKkierg1UH2ai46Ivl70aDo FM+VjWnXtGmWeoSC04zTf44kQn0vHM3ustTOZNic9Dzn4DiuxzxWvv40cWfLwzmnvTQ3 y28fPneB07Pvkx4ptepdCdWk+SYPT1Awu6WUUsLHohPSuWtXqro28p155XHLhvskIWIP eeDA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=UKZG9UDk; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id t2si19766273edf.543.2022.02.14.00.17.00; Mon, 14 Feb 2022 00:17:24 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=UKZG9UDk; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242396AbiBJNrP (ORCPT + 96 others); Thu, 10 Feb 2022 08:47:15 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:47438 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242384AbiBJNrM (ORCPT ); Thu, 10 Feb 2022 08:47:12 -0500 Received: from mail-ej1-x642.google.com (mail-ej1-x642.google.com [IPv6:2a00:1450:4864:20::642]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4F6D2D73; Thu, 10 Feb 2022 05:47:13 -0800 (PST) Received: by mail-ej1-x642.google.com with SMTP id fy20so15431505ejc.0; Thu, 10 Feb 2022 05:47:13 -0800 (PST) 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=3O5dxW8Yi3OGBQsUph2cEFwlLeho+NaqEkL3/CgaS64=; b=UKZG9UDkHLOigLdNLKeZ0FMk/1dFBQae/6nrOMlCiK4oKFBaClwv655PPDg/cf7/Cn x6QIyIowFHjt1tVUIhBnVGU0/QTY0GsbNysAdzdo9nioSB35CA74mDKDxwCanMaKgzZa QQ0QrC3oD7yE1GSkJAwi/6CJoSooxTPiqEWzO+eP+P4cY0RXxCRId1dhG5Tl6B2LbXfC 3kSJeyqj6PpHNcoS+2Qf9j264sHgYzxbMXzGPY4nqmMYDPdIwunS4IM+OXlJsWPYWkfs EtIYLpndqbz+NdSMUTrsozOYMfz3qnioawWsMTa5xiDMGgtuK4YPtvVdA2IGSkGpR6S5 I56Q== 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=3O5dxW8Yi3OGBQsUph2cEFwlLeho+NaqEkL3/CgaS64=; b=of/pj6Nm2MxdYLglRcjOAQNJ7Ij2f+oXi51FxZaGAHT6d/J7VF8SCCTlKgOPV7GLs0 ap8mBe6dfSe6pXPkLM8qm21uWxPS6v91HW+Wp+vaFd4XXaXMkcXck+XPZcuP5HBfBitU ndBz3/9IioSjTr+8b9uaDiFcwGuXGSO2B72ub206BycXmnjBmoeKnIbUx1QzSk/oOrr3 rHpWlpRmKucnItUH0lhSgtP7IYjTZnmzD3OUeVUyb2phGn4goyBch03cJt0JFJxz5YlK iwrFopkzy3T8Dx5Z/ykaPB1aXh8Ej8259n3zXUG1XdM9O0mCO3PtA13RZM9o9g0L/QnG e7cw== X-Gm-Message-State: AOAM532rMBwG+dEE7wc0OoPpkjsPGOAOeto6uX0ecTNT1rR8sZtAWqDT eIISOCs2wcPV5y3XO873Ds1Yov6lYJXhms+Dm1U= X-Received: by 2002:a17:906:b819:: with SMTP id dv25mr6409626ejb.689.1644500829972; Thu, 10 Feb 2022 05:47:09 -0800 (PST) MIME-Version: 1.0 References: <20220128073319.1017084-1-imagedong@tencent.com> <20220128073319.1017084-2-imagedong@tencent.com> <0029e650-3f38-989b-74a3-58c512d63f6b@gmail.com> <20220209211202.7cddd337@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com> In-Reply-To: <20220209211202.7cddd337@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com> From: Menglong Dong Date: Thu, 10 Feb 2022 21:42:14 +0800 Message-ID: Subject: Re: [PATCH v3 net-next 1/7] net: skb_drop_reason: add document for drop reasons To: Jakub Kicinski Cc: David Ahern , David Ahern , Steven Rostedt , mingo@redhat.com, David Miller , Hideaki YOSHIFUJI , pablo@netfilter.org, kadlec@netfilter.org, Florian Westphal , Menglong Dong , Eric Dumazet , alobakin@pm.me, paulb@nvidia.com, Kees Cook , talalahmad@google.com, haokexin@gmail.com, memxor@gmail.com, LKML , netdev , netfilter-devel@vger.kernel.org, coreteam@netfilter.org, Cong Wang Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham 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 Thu, Feb 10, 2022 at 1:12 PM Jakub Kicinski wrote: > > On Thu, 10 Feb 2022 11:19:49 +0800 Menglong Dong wrote: > > I'm doing the job of using kfree_skb_reason() for the TCP layer, > > and I have some puzzles. > > > > When collecting drop reason for tcp_v4_inbound_md5_hash() in > > tcp_v4_rcv(), I come up with 2 ways: > > > > First way: pass the address of reason to tcp_v4_inbound_md5_hash() > > like this: > > > > static bool tcp_v4_inbound_md5_hash(const struct sock *sk, > > const struct sk_buff *skb, > > - int dif, int sdif) > > + int dif, int sdif, > > + enum skb_drop_reason *reason) > > > > This can work, but many functions like tcp_v4_inbound_md5_hash() > > need to do such a change. > > > > Second way: introduce a 'drop_reason' field to 'struct sk_buff'. Therefore, > > drop reason can be set by 'skb->drop_reason = SKB_DROP_REASON_XXX' > > anywhere. > > > > For TCP, there are many cases where you can't get a drop reason in > > the place where skb is freed, so I think there needs to be a way to > > deeply collect drop reasons. The second can resolve this problem > > easily, but extra fields may have performance problems. > > > > Do you have some better ideas? > > On a quick look tcp_v4_inbound_md5_hash() returns a drop / no drop > decision, so you could just change the return type to enum > skb_drop_reason. SKB_DROP_REASON_NOT_SPECIFIED is 0 is false, > so if (reason) goto drop; logic will hold up. Yeah, that's an idea. But some functions are more complex, such as tcp_rcv_state_process() and tcp_rcv_state_process()->tcp_v4_conn_request(). The return value of tcp_rcv_state_process() can't be reused, and it's hard to add a function param of type 'enum skb_drop_reason *' to tcp_v4_conn_request(). There are some nice drop reasons in tcp_v4_conn_request(), it's a pity to give up them. How about introducing a field to 'struct sock' for drop reasons? As sk is locked during the packet process in tcp_v4_do_rcv(), this seems to work. Thanks! Menglong Dong