Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp36123772rwd; Mon, 10 Jul 2023 18:35:27 -0700 (PDT) X-Google-Smtp-Source: APBJJlHKcFZWY6PeXldX8OJXWavHPTWdxG1sbWoKJtqEdpbdKAy0y4eGbp/5vggI8k0oOXNiQjWk X-Received: by 2002:a17:906:b41:b0:991:f6d0:9bc1 with SMTP id v1-20020a1709060b4100b00991f6d09bc1mr12155721ejg.66.1689039327294; Mon, 10 Jul 2023 18:35:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689039327; cv=none; d=google.com; s=arc-20160816; b=Zyj0OUCdUcML9Knp8TP+dmpzcD1uDyd1djN1rwX3TgRXwII4I6IKtSAg5vEpBjIM69 9I+RQShsm8uls/dgkepLX+Wrqed83gFcq1j41HDVtCBQFAY8ER6vOvgSO2UlCaOd5QxY OuiKiH8IEyvhZpL9qG9Ob6CdRRsClVVFnj9mUJlmRraAT04v9hyeCHjH950E2rdcYc8I OoQ+VF+uOlsX+Z0AMlyn8ZRrqyFkGwTk667XoXDMAtLIOtO+/v11z7aDB60+I6Zhjh7H fjN8XltfM4kNQzMUqgtlEQQi5F44b9ulsITF9hWllKvxAECdCc6UoRFCg4JaCtcRtstM pvow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=efOAgxEmmwfXTjqPB7I0Z2dgqV2TvYCNGg5OCjQJVI4=; fh=xJQ3cleYGJt8dK6DTdfFshW3DIwItEJtamS1vBBHmK8=; b=ebiiUvdRYXPTrpnwPSaZDhUGwHpnpTOhJFZHTndUSJra2epUqDNJged/HNoqODDINi d+XT6XObbYr0cSxOBqYfdldQ2kIjlIHh0YrP1ewA84975zdQjggsaIEHF4HMSXFXndFx o3I7ZgF4rauMUZjpYrgAkaCUkrJ89N/dxT2Hqs7SbgoPpcvLoKY72vMDC1oc2C6gt45e 1dRbgXJnzbDBqFMuaTVxNGmzeKWc/8FKOe57z+26k5w6D1C/KxLOFX5xPXXydOb8MWU8 I9TWRHrpzkCEfUUIxjfFxKmtxkFlKsVSNLffqqHJVfd/tYwgYnypsEnESNkufxHI7MWJ L2Mg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=B+3OS09M; 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 cf20-20020a170906b2d400b0098882d02831si915223ejb.710.2023.07.10.18.34.54; Mon, 10 Jul 2023 18:35:27 -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=@gmail.com header.s=20221208 header.b=B+3OS09M; 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 S230106AbjGKAlZ (ORCPT + 99 others); Mon, 10 Jul 2023 20:41:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39906 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229468AbjGKAlX (ORCPT ); Mon, 10 Jul 2023 20:41:23 -0400 Received: from mail-lj1-x233.google.com (mail-lj1-x233.google.com [IPv6:2a00:1450:4864:20::233]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B47F71AC; Mon, 10 Jul 2023 17:41:22 -0700 (PDT) Received: by mail-lj1-x233.google.com with SMTP id 38308e7fff4ca-2b6ff1ada5dso80498691fa.2; Mon, 10 Jul 2023 17:41:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689036081; x=1691628081; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=efOAgxEmmwfXTjqPB7I0Z2dgqV2TvYCNGg5OCjQJVI4=; b=B+3OS09MuotFOVY1dDveToEz2WoT5xkcB3LzHb6Z+2tOWZQ84ha0XpAoqRFu8tNIgl 7Uj90GnG4Yml9Bj40WCMsC01xMMal/sHbREfSoKFrIXtt7X241sCWPXGb+M9WdE/BGz/ 4Joe6k93ob75Inpyix+DVPJ/OHbqPjLg3kLRTbZt3d4dxR0m+C1tUqMfl3kQ+Ouoitgi 5sC0r3tQL8mS4qQqOBlSPt1QNPL/6Whceai7ALHec3LXf0+HW5N/01JZ0Kr5PfFoTVcR wqT5pvQ+Adwa0szw82oz1/mBXkHeDak7VxrAHoWqQ6Cvppb7ibPCzHuYpNKUSvxvTZ5c fjqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689036081; x=1691628081; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=efOAgxEmmwfXTjqPB7I0Z2dgqV2TvYCNGg5OCjQJVI4=; b=frVijC4tNI+4JD7u6aV1/HByf163CJw2gBrECSg16/BScF/106EEYTNKplr1yU0Mq1 cr9Mrx/OmgoM70+mPszAcB9s0wXjb3zW9UlhnBuzsnCwZHwII3M2WkNPDw2aqvYfIMti bLai9OLzbphEVkKRjCdPWDRmEnOqQu9K1s9Pmj+MRZbr6G3o3TXaElVRJixaaiwE19F/ Ne/dD8oQi35sS3R4C1YexQLuchuNbVoGxwFHfhyqfe+UUaDi/RwcpCLiGQbzJ+SE3yCR H8gPPTf7YTNsDzkdfYhQrf/3atODAABub/HfrTldpuiFCBIRKwrGuEsbvbu88ChiuxqS 8a3Q== X-Gm-Message-State: ABy/qLbI159XA/s3wXOC2FlOLBpopGwdUWnNnPomFcF8sq8Kl+JKJv4y 9+Vt4kcmNw1760akZH8PJFAycfAXSg9cVzyfGpM= X-Received: by 2002:a2e:8883:0:b0:2b6:e2c2:d234 with SMTP id k3-20020a2e8883000000b002b6e2c2d234mr11356614lji.33.1689036080823; Mon, 10 Jul 2023 17:41:20 -0700 (PDT) MIME-Version: 1.0 References: <20230706153327.99298-1-kuniyu@amazon.com> In-Reply-To: <20230706153327.99298-1-kuniyu@amazon.com> From: Alexei Starovoitov Date: Mon, 10 Jul 2023 17:41:09 -0700 Message-ID: Subject: Re: [PATCH bpf-next v4 6/7] bpf, net: Support SO_REUSEPORT sockets with bpf_sk_assign To: Kuniyuki Iwashima Cc: Lorenz Bauer , Andrii Nakryiko , Alexei Starovoitov , bpf , Daniel Borkmann , "David S. Miller" , David Ahern , Eric Dumazet , Hao Luo , Hemanth Malla , Joe Stringer , Joe Stringer , John Fastabend , Jiri Olsa , KP Singh , Jakub Kicinski , LKML , "open list:KERNEL SELFTEST FRAMEWORK" , Martin KaFai Lau , Mykola Lysenko , Network Development , Paolo Abeni , Stanislav Fomichev , Shuah Khan , Song Liu , Willem de Bruijn , Yonghong Song Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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_BLOCKED,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, Jul 6, 2023 at 8:33=E2=80=AFAM Kuniyuki Iwashima wrote: > > From: Lorenz Bauer > Date: Thu, 6 Jul 2023 09:11:15 +0100 > > On Thu, Jul 6, 2023 at 1:41=E2=80=AFAM Kuniyuki Iwashima wrote: > > > > > > Sorry for late reply. > > > > > > What we know about sk before inet6?_lookup_reuseport() are > > > > > > (1) sk was full socket in bpf_sk_assign() > > > (2) sk had SOCK_RCU_FREE in bpf_sk_assign() > > > (3) sk was TCP_LISTEN here if TCP > > > > Are we looking at the same bpf_sk_assign? Confusingly there are two > > very similarly named functions. The one we care about is: > > > > BPF_CALL_3(bpf_sk_assign, struct sk_buff *, skb, struct sock *, sk, u64= , flags) > > { > > if (!sk || flags !=3D 0) > > return -EINVAL; > > if (!skb_at_tc_ingress(skb)) > > return -EOPNOTSUPP; > > if (unlikely(dev_net(skb->dev) !=3D sock_net(sk))) > > return -ENETUNREACH; > > if (sk_is_refcounted(sk) && > > unlikely(!refcount_inc_not_zero(&sk->sk_refcnt))) > > return -ENOENT; > > > > skb_orphan(skb); > > skb->sk =3D sk; > > skb->destructor =3D sock_pfree; > > > > return 0; > > } > > > > From this we can't tell what state the socket is in or whether it is > > RCU freed or not. > > But we can in inet6?_steal_sock() by calling sk_is_refcounted() again > via skb_steal_sock(). > > In inet6?_steal_sock(), we call inet6?_lookup_reuseport() only for > sk that was a TCP listener or UDP non-connected socket until just before > the sk_state checks. Then, we know *refcounted should be false for such > sockets even before inet6?_lookup_reuseport(). > > After the checks, sk might be poped out of the reuseport group before > inet6?_lookup_reuseport() and reuse_sk might be NULL, but it's not > related because *refcounted is a value for sk, not for reuse_sk. I was about to apply v5 before I noticed this discussion on v4. Sounds like v6 will be needed. Next time please continue discussion in the latest version.