Received: by 2002:a6b:fb09:0:0:0:0:0 with SMTP id h9csp4995043iog; Wed, 22 Jun 2022 09:45:43 -0700 (PDT) X-Google-Smtp-Source: AGRyM1tA4Xh4l/DpezAkELIVtTjwVrSNNu+iUR2LOHOn66pJlOLWXDEDQ1Sf+X/6c/uYRyJTbl79 X-Received: by 2002:a05:6a00:2484:b0:51c:4ee0:b899 with SMTP id c4-20020a056a00248400b0051c4ee0b899mr36204536pfv.46.1655916342999; Wed, 22 Jun 2022 09:45:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655916342; cv=none; d=google.com; s=arc-20160816; b=pOMPEyZ481ChsHysdc+YrmPpjUSQZ6vS4NFCND7TuwRLxNHoGuCGBlfkeeW2YF4Rm9 DA7/N88bMkqNHMBLCWSYxKMPnHy+fIxev49Qwu1j2z5MALhu9/gOmR8b7k4QzJZP3Dcj XzIKpN/I4LxO+MnD7QU8h18mkxR1gp3H/HUkkHZV3zzReC+rJllPGw7/8MoPwJVqzvJb H6AwevY9pRF6Dm4zREocnzkZa3kvOKvjV00Rm2SAZ9a7HjpspExnMWC0PKNO4lNHn/c7 WpVsvBZvRo3DRUsAUPNmZtTBwW5vM55e4aveIPj8/aHWpOpQ98U14OBvuZ/wdWv5t8pO kNBA== 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=hFEGuXQ8pK4dLxL00tb3iGKoWKxFFjHeOeemIT5G5fY=; b=g3C8aINIAvy0U7k1IZStdqtNuC2QYTFvH3RNbWB//m8nqDks7aUtsuV7NWcqkxTkHe L+IpHUr+428K0NWNnOnVnGdTQ1jVd3v70vpK2Nos4P9uXc9Lz8UzHfsAQZqnK7CvLl10 WfcFXaABhbs9KG1lHrA1OqJAuEeiqRdO1FO4R/1AeAk8YoTMx9vwQYdDCxi130GE02rb ZORFyfOTnJB/sfsDcMEzUGci9aXO0XbUZsTDUVn7AHJ0VJ7cfMTvybH9c6zHrq4Lde/k 1f7xofwWxNWfvcmPkU0oY1IwR395wNokN8gQSur+CS1zrUJJBxdYJTmtstWx0AOqVeJF 9FnA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=ejnhZWkw; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ob16-20020a17090b391000b001e6820f720esi30684901pjb.125.2022.06.22.09.45.30; Wed, 22 Jun 2022 09:45:42 -0700 (PDT) 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=@google.com header.s=20210112 header.b=ejnhZWkw; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1359780AbiFVQjg (ORCPT + 99 others); Wed, 22 Jun 2022 12:39:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43056 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1359735AbiFVQjX (ORCPT ); Wed, 22 Jun 2022 12:39:23 -0400 Received: from mail-yb1-xb2e.google.com (mail-yb1-xb2e.google.com [IPv6:2607:f8b0:4864:20::b2e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 89551369E4 for ; Wed, 22 Jun 2022 09:39:21 -0700 (PDT) Received: by mail-yb1-xb2e.google.com with SMTP id v81so31186080ybe.0 for ; Wed, 22 Jun 2022 09:39:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=hFEGuXQ8pK4dLxL00tb3iGKoWKxFFjHeOeemIT5G5fY=; b=ejnhZWkwjnv2aEad9hfgM3U18d/V+KXP/XBPIap0IO6WH7tonq9Z5XNuk2ssK7IV32 aD3pjA/KtRGInpdjEJr/T/MWdcvASxOpewrMXWEp01TNjIHhuN12y0bmysiCkXhX1u2r ib5XaEktSnEG264A93jIQl+SWjM4E5rXZIGu5nbJAmF4LQk6NxZ1zLDVj0qu2Ij+qQBu j4U8RW0m+/NxKqIWLKdmT7vLWKAeXpn61uuqJSAkg/GUKIPbXjsnPR5/KU/FoZkngSsj KHlM4yuhniP8iyxNyppsAPbGT/6BvOWePSUEzlXX8/V8Kfgba2CaeDMGjxcWBQtg0dBY pYXA== 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=hFEGuXQ8pK4dLxL00tb3iGKoWKxFFjHeOeemIT5G5fY=; b=JqVNpp/atR0x6eftTNQighMTutCwXprkPklY/H1OMdKtXk2s8w4wsXXOSTE+dLZTjm yDRpmQBp4og/qqtXVtp24qMDv3G48jzNOLLP32ZiZ0/x/A4fYECJ7bpYrGcmCabMkNBa fWbmwEVhCkizWKJYEDo2DNgltaEzxj43hMvmQ51eOkDI2vyQKgp2FI10VDzZcRt9hEXa mn5vLr0TSOrLt6LQ0t2BKn7eCbiOmhq50JNEWkk9hQD2cUtoy3MYwW5U2k0SK9twVzRs PBXDcmk56LbBS+zJzUj5d1LSnG0RtJ2Jf9r8shAs2CR4yjH4PoXIq1Krdcnv0AETAg43 uggA== X-Gm-Message-State: AJIora/r/gHrse6rDc/irQYIfxS93LRwowtwIJTElQX9rLXpM1bMMjR2 CNkbHIjIznJZJrsH9VObSj9tCLEo8LjNGhu89+UxlA== X-Received: by 2002:a25:6c5:0:b0:669:a17a:2289 with SMTP id 188-20020a2506c5000000b00669a17a2289mr1473725ybg.231.1655915960442; Wed, 22 Jun 2022 09:39:20 -0700 (PDT) MIME-Version: 1.0 References: <20220619003919.394622-1-i.maximets@ovn.org> <20220622102813.GA24844@breakpoint.cc> <068ad894-c60f-c089-fd4a-5deda1c84cdd@ovn.org> In-Reply-To: From: Eric Dumazet Date: Wed, 22 Jun 2022 18:39:08 +0200 Message-ID: Subject: Re: [PATCH net] net: ensure all external references are released in deferred skbuffs To: Ilya Maximets Cc: Steffen Klassert , Herbert Xu , Florian Westphal , netdev , "David S. Miller" , dev@openvswitch.org, LKML , Jakub Kicinski , Paolo Abeni Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-17.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL,USER_IN_DEF_SPF_WL autolearn=unavailable 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 Wed, Jun 22, 2022 at 6:29 PM Eric Dumazet wrote: > > On Wed, Jun 22, 2022 at 4:26 PM Ilya Maximets wrote: > > > > On 6/22/22 13:43, Eric Dumazet wrote: > > > > > I tested the patch below and it seems to fix the issue seen > > with OVS testsuite. Though it's not obvious for me why this > > happens. Can you explain a bit more? > > Anyway, I am not sure we can call nf_reset_ct(skb) that early. > > git log seems to say that xfrm check needs to be done before > nf_reset_ct(skb), I have no idea why. Additional remark: In IPv6 side, xfrm6_policy_check() _is_ called after nf_reset_ct(skb) Steffen, do you have some comments ? Some context: commit b59c270104f03960069596722fea70340579244d Author: Patrick McHardy Date: Fri Jan 6 23:06:10 2006 -0800 [NETFILTER]: Keep conntrack reference until IPsec policy checks are done Keep the conntrack reference until policy checks have been performed for IPsec NAT support. The reference needs to be dropped before a packet is queued to avoid having the conntrack module unloadable. Signed-off-by: Patrick McHardy Signed-off-by: David S. Miller > > I suspect some incoming packets are not going through > xfrm4_policy_check() and end up being stored in a TCP receive queue. > > Maybe something is missing before calling tcp_child_process() > > > > > > > > > > I note that IPv6 does the nf_reset_ct() earlier, from ip6_protocol_deliver_rcu() > > > > > > diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c > > > index fda811a5251f2d76ac24a036e6b4f4e7d7d96d6f..a06464f96fe0cc94dd78272738ddaab2c19e87db > > > 100644 > > > --- a/net/ipv4/tcp_ipv4.c > > > +++ b/net/ipv4/tcp_ipv4.c > > > @@ -1919,6 +1919,8 @@ int tcp_v4_rcv(struct sk_buff *skb) > > > struct sock *sk; > > > int ret; > > > > > > + nf_reset_ct(skb); > > > + > > > drop_reason = SKB_DROP_REASON_NOT_SPECIFIED; > > > if (skb->pkt_type != PACKET_HOST) > > > goto discard_it; > > > @@ -2046,8 +2048,6 @@ int tcp_v4_rcv(struct sk_buff *skb) > > > if (drop_reason) > > > goto discard_and_relse; > > > > > > - nf_reset_ct(skb); > > > - > > > if (tcp_filter(sk, skb)) { > > > drop_reason = SKB_DROP_REASON_SOCKET_FILTER; > > > goto discard_and_relse; > >