]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ipv6: use np->final in inet6_sk_rebuild_header()
authorEric Dumazet <edumazet@google.com>
Fri, 6 Feb 2026 17:34:21 +0000 (17:34 +0000)
committerJakub Kicinski <kuba@kernel.org>
Wed, 11 Feb 2026 04:57:49 +0000 (20:57 -0800)
Instead of using an automatic variable, use np->final
to get rid of the stack canary in inet6_sk_rebuild_header().

Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Kuniyuki Iwashima <kuniyu@google.com>
Link: https://patch.msgid.link/20260206173426.1638518-3-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv6/af_inet6.c

index 0476dbc8edb2b8273fd337b15c8196e9597753ef..31ba677d0442a861fc87e163b43a0aa1df88d8d4 100644 (file)
@@ -825,7 +825,7 @@ int inet6_sk_rebuild_header(struct sock *sk)
 {
        struct ipv6_pinfo *np = inet6_sk(sk);
        struct inet_sock *inet = inet_sk(sk);
-       struct in6_addr *final_p, final;
+       struct in6_addr *final_p;
        struct dst_entry *dst;
        struct flowi6 *fl6;
 
@@ -847,7 +847,7 @@ int inet6_sk_rebuild_header(struct sock *sk)
        security_sk_classify_flow(sk, flowi6_to_flowi_common(fl6));
 
        rcu_read_lock();
-       final_p = fl6_update_dst(fl6, rcu_dereference(np->opt), &final);
+       final_p = fl6_update_dst(fl6, rcu_dereference(np->opt), &np->final);
        rcu_read_unlock();
 
        dst = ip6_dst_lookup_flow(sock_net(sk), sk, fl6, final_p);