From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from www62.your-server.de (www62.your-server.de [213.133.104.62]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 11F913C3C0F; Thu, 12 Mar 2026 10:12:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.133.104.62 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773310360; cv=none; b=CN6wX8+U8dfRppGSdgkh9q9Ivyzk99DhzZxlC7ApggzGq/5QQJK3YCVgobKCiHsHeXmmICm3sBbo9icqza8BRS6mGb34o763M3vK+WKabyK1HG2iw8Q6mdGchrOZDw856p5BD80KycaAXpbsxzLXSHGhnnhM3LYqKk5TFGE0F1w= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773310360; c=relaxed/simple; bh=ItOAhrAR+eiwiRNV4INTBhSAQAN7XiFQ8TsEBihnDsE=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=PnP6h25dwJG6vwpUOoqpPGcf0ZKJQUdilGe4EOs+oC1E0vyLIjnW2AK78oREfoO0YeCFqNVTlesCoBaRCtJWvbCZB0GzMnByfdOBJA4pQRUJ/vgOgqeIWKMHVFbyahauC2+pDDYVXcyYjpSA+M99k/s60pzwMuFwYvVklhwd1BE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=iogearbox.net; spf=pass smtp.mailfrom=iogearbox.net; dkim=pass (2048-bit key) header.d=iogearbox.net header.i=@iogearbox.net header.b=CtvMqwqs; arc=none smtp.client-ip=213.133.104.62 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=iogearbox.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=iogearbox.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=iogearbox.net header.i=@iogearbox.net header.b="CtvMqwqs" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=iogearbox.net; s=default2302; h=Content-Transfer-Encoding:Content-Type: In-Reply-To:From:References:Cc:To:Subject:MIME-Version:Date:Message-ID:Sender :Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID; bh=0P27Qi4kzLbaESFehk6n75i4gSjV9T4d8OjlOUPf0p8=; b=CtvMqwqswXt0iAGZcY14U0uMhI 3tCU4HOjMOzMQdxQ9JQsQITVZ5IyTBPY0xs8jUYJgA7RR9HNxOHHSfjgVwHa/OSoXNlj9nnzEl0HS ndJ/M6DHor15MZqL8k2URqSSdvGBFVhjDvrkABjIwNHmcXLEg/6GXKXMZuu9iCv9PygmWo2/+twIH fn5l6c1OsM8kPU0dwDJ8XOpgf8Ah7RIDp/WS6v3+jaIeWvCW1FgbDFxD/hLCgkBH7lYFbHonYkMJK thAprcsMhZMlkThnePxyzT0KLXKR70q/SdjXxj30mZ8uYE9mNctH0JrJyyXGwKtdyPWyhV9hquP5o gpV+8eSQ==; Received: from sslproxy05.your-server.de ([78.46.172.2]) by www62.your-server.de with esmtpsa (TLS1.3) tls TLS_AES_256_GCM_SHA384 (Exim 4.96.2) (envelope-from ) id 1w0d1m-000NqT-07; Thu, 12 Mar 2026 11:12:26 +0100 Received: from localhost ([127.0.0.1]) by sslproxy05.your-server.de with esmtpsa (TLS1.3) tls TLS_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w0d1k-000Chv-1x; Thu, 12 Mar 2026 11:12:24 +0100 Message-ID: <9dc43229-8aee-4f77-8c9e-68829e226429@iogearbox.net> Date: Thu, 12 Mar 2026 11:12:23 +0100 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 08/10 net-next v2] bpf: remove ipv6_bpf_stub completely and use direct function calls To: Fernando Fernandez Mancera , netdev@vger.kernel.org Cc: rbm@suse.com, "David S. Miller" , David Ahern , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Alexei Starovoitov , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Song Liu , Yonghong Song , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Jiri Olsa , Guillaume Nault , Ido Schimmel , open list , "open list:BPF [GENERAL] (Safe Dynamic Programs and Tools)" References: <20260310153506.5181-1-fmancera@suse.de> <20260310153506.5181-9-fmancera@suse.de> Content-Language: en-US From: Daniel Borkmann Autocrypt: addr=daniel@iogearbox.net; keydata= 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 In-Reply-To: <20260310153506.5181-9-fmancera@suse.de> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: Clear (ClamAV 1.4.3/27938/Thu Mar 12 07:24:01 2026) On 3/10/26 4:34 PM, Fernando Fernandez Mancera wrote: > As IPv6 is built-in only, the ipv6_bpf_stub can be removed completely. > > Convert all ipv6_bpf_stub usage to direct function calls instead. The > fallback functions introduced previously will prevent linkage errors > when CONFIG_IPV6 is disabled. > > Signed-off-by: Fernando Fernandez Mancera [...] > @@ -6000,11 +5996,9 @@ BPF_CALL_3(bpf_bind, struct bpf_sock_addr_kern *, ctx, struct sockaddr *, addr, > return err; > if (((struct sockaddr_in6 *)addr)->sin6_port == htons(0)) > flags |= BIND_FORCE_ADDRESS_NO_PORT; > - /* ipv6_bpf_stub cannot be NULL, since it's called from > - * bpf_cgroup_inet6_connect hook and ipv6 is already loaded > - */ > - return ipv6_bpf_stub->inet6_bind(sk, (struct sockaddr_unsized *)addr, > - addr_len, flags); > + > + return inet6_bind_flags(sk, (struct sockaddr_unsized *)addr, > + addr_len, flags); nit: You're adding the inet6_bind_flags just as an alias for __inet6_bind, might as well just call the latter directly like we do in IPv4 case further above. [...]> @@ -6283,12 +6277,11 @@ static int bpf_ipv6_fib_lookup(struct net *net, struct bpf_fib_lookup *params, > params->tbid = 0; > } > > - tb = ipv6_stub->fib6_get_table(net, tbid); > + tb = fib6_get_table(net, tbid); > if (unlikely(!tb)) > return BPF_FIB_LKUP_RET_NOT_FWDED; > > - err = ipv6_stub->fib6_table_lookup(net, tb, oif, &fl6, &res, > - strict); > + err = fib6_table_lookup(net, tb, oif, &fl6, &res, strict); > } else { > if (flags & BPF_FIB_LOOKUP_MARK) > fl6.flowi6_mark = params->mark; Love it, for the bpf_ipv6_fib_lookup we're now able to get rid of 3 subsequent indirect calls in fast-path (ipv6_stub->fib6_lookup + ipv6_stub->fib6_select_path + ipv6_bpf_stub->ipv6_dev_get_saddr in case BPF prog requested to fill src IP). [...] > diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c > index 448be9704313..75a9d9fe1308 100644 > --- a/net/ipv6/af_inet6.c > +++ b/net/ipv6/af_inet6.c > @@ -460,6 +460,12 @@ int inet6_bind_sk(struct sock *sk, struct sockaddr_unsized *uaddr, int addr_len) > return __inet6_bind(sk, uaddr, addr_len, flags); > } > > +int inet6_bind_flags(struct sock *sk, struct sockaddr_unsized *uaddr, > + int addr_len, u32 flags) > +{ > + return __inet6_bind(sk, uaddr, addr_len, flags); > +} > + (wrt above comment) Acked-by: Daniel Borkmann Thanks, Daniel