mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
ipv4: fib: Call fib_proc_exit() and nl_fib_lookup_exit() at ->pre_exit().
We will call ip_fib_net_exit() from ->exit_rtnl(). Since the exit callbacks are called in the following order, 1. ->pre_exit() ~~~ synchronize_rcu() ~~~ 2. ->exit_rtnl() : ip_fib_net_exit() 3. ->exit() : fib_proc_exit() / nl_fib_lookup_exit() 4. ->exit_batch() : fib4_semantics_exit() the reverse order of fib_net_init() would get messed up. Let's move fib_proc_exit() and nl_fib_lookup_exit() to ->pre_exit(). This is fine because procfs/netlink access from userspace cannot occur at this point and synchronize_rcu() is not needed. Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com> Reviewed-by: Ido Schimmel <idosch@nvidia.com> Reviewed-by: Eric Dumazet <edumazet@google.com> Link: https://patch.msgid.link/20260612063225.455191-3-kuniyu@google.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
64587e936b
commit
c993bd0102
|
|
@ -1656,7 +1656,7 @@ static int __net_init fib_net_init(struct net *net)
|
|||
goto out;
|
||||
}
|
||||
|
||||
static void __net_exit fib_net_exit(struct net *net)
|
||||
static void __net_exit fib_net_pre_exit(struct net *net)
|
||||
{
|
||||
fib_proc_exit(net);
|
||||
nl_fib_lookup_exit(net);
|
||||
|
|
@ -1680,7 +1680,7 @@ static void __net_exit fib_net_exit_batch(struct list_head *net_list)
|
|||
|
||||
static struct pernet_operations fib_net_ops = {
|
||||
.init = fib_net_init,
|
||||
.exit = fib_net_exit,
|
||||
.pre_exit = fib_net_pre_exit,
|
||||
.exit_batch = fib_net_exit_batch,
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user