All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ido Schimmel <idosch@nvidia.com>
To: Weiming Shi <bestswngs@gmail.com>
Cc: netdev@vger.kernel.org, dsahern@kernel.org, edumazet@google.com,
	kuba@kernel.org, pabeni@redhat.com, davem@davemloft.net,
	horms@kernel.org, xmei5@asu.edu, linux-kernel@vger.kernel.org
Subject: Re: [PATCH net] ipv4: fib: free fib_alias with kfree_rcu() on insert error path
Date: Sun, 5 Jul 2026 11:00:14 +0300	[thread overview]
Message-ID: <20260705080014.GA104589@shredder> (raw)
In-Reply-To: <20260704171421.1786806-1-bestswngs@gmail.com>

On Sat, Jul 04, 2026 at 10:14:21AM -0700, Weiming Shi wrote:
> fib_table_insert() publishes new_fa into the leaf's fa_list with
> fib_insert_alias() before calling the fib entry notifiers. When a
> notifier fails, the error path removes new_fa with fib_remove_alias()
> (hlist_del_rcu) and frees it right away with kmem_cache_free().
> 
> fib_table_lookup() walks that list under rcu_read_lock() only, so a
> concurrent lookup that already reached new_fa keeps reading it after the
> free:
> 
>  BUG: KASAN: slab-use-after-free in fib_table_lookup (net/ipv4/fib_trie.c:1601)
>  Read of size 1 at addr ffff88810676d4eb by task exploit/297
>  Call Trace:
>   fib_table_lookup (net/ipv4/fib_trie.c:1601)
>   ip_route_output_key_hash_rcu (net/ipv4/route.c:2814)
>   ip_route_output_key_hash (net/ipv4/route.c:2705)
>   __ip4_datagram_connect (net/ipv4/datagram.c:49)
>   udp_connect (net/ipv4/udp.c:2144)
>   __sys_connect (net/socket.c:2167)
>   __x64_sys_connect (net/socket.c:2173)
>   do_syscall_64
>   entry_SYSCALL_64_after_hwframe
>  which belongs to the cache ip_fib_alias of size 56
> 
> Triggering the error path needs CAP_NET_ADMIN and a registered fib
> notifier that can reject a route; a netdevsim device whose IPv4 FIB
> resource is exhausted is enough.
> 
> Free new_fa with alias_free_mem_rcu(), as fib_table_delete() already
> does for a fib_alias removed from the trie.
> 
> Fixes: a6c76c17df02 ("ipv4: Notify route after insertion to the routing table")
> Reported-by: Xiang Mei <xmei5@asu.edu>
> Assisted-by: Claude:claude-opus-4-8
> Signed-off-by: Weiming Shi <bestswngs@gmail.com>

Reviewed-by: Ido Schimmel <idosch@nvidia.com>

  reply	other threads:[~2026-07-05  8:00 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-04 17:14 [PATCH net] ipv4: fib: free fib_alias with kfree_rcu() on insert error path Weiming Shi
2026-07-05  8:00 ` Ido Schimmel [this message]
2026-07-10 14:10 ` patchwork-bot+netdevbpf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260705080014.GA104589@shredder \
    --to=idosch@nvidia.com \
    --cc=bestswngs@gmail.com \
    --cc=davem@davemloft.net \
    --cc=dsahern@kernel.org \
    --cc=edumazet@google.com \
    --cc=horms@kernel.org \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=xmei5@asu.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.