mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-06 13:23:18 +00:00
ipv4: Convert check_lifetime() to per-netns RTNL.
Since commit 1675f38521
("ipv4: Namespacify IPv4 address GC."),
check_lifetime() works on a per-netns basis.
Let's use rtnl_net_lock() and rtnl_net_dereference().
Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
4df5066f07
commit
c350c4761e
@ -771,7 +771,8 @@ static void check_lifetime(struct work_struct *work)
|
||||
rcu_read_unlock();
|
||||
if (!change_needed)
|
||||
continue;
|
||||
rtnl_lock();
|
||||
|
||||
rtnl_net_lock(net);
|
||||
hlist_for_each_entry_safe(ifa, n, head, addr_lst) {
|
||||
unsigned long age;
|
||||
|
||||
@ -788,7 +789,7 @@ static void check_lifetime(struct work_struct *work)
|
||||
struct in_ifaddr *tmp;
|
||||
|
||||
ifap = &ifa->ifa_dev->ifa_list;
|
||||
tmp = rtnl_dereference(*ifap);
|
||||
tmp = rtnl_net_dereference(net, *ifap);
|
||||
while (tmp) {
|
||||
if (tmp == ifa) {
|
||||
inet_del_ifa(ifa->ifa_dev,
|
||||
@ -796,7 +797,7 @@ static void check_lifetime(struct work_struct *work)
|
||||
break;
|
||||
}
|
||||
ifap = &tmp->ifa_next;
|
||||
tmp = rtnl_dereference(*ifap);
|
||||
tmp = rtnl_net_dereference(net, *ifap);
|
||||
}
|
||||
} else if (ifa->ifa_preferred_lft !=
|
||||
INFINITY_LIFE_TIME &&
|
||||
@ -806,7 +807,7 @@ static void check_lifetime(struct work_struct *work)
|
||||
rtmsg_ifa(RTM_NEWADDR, ifa, NULL, 0);
|
||||
}
|
||||
}
|
||||
rtnl_unlock();
|
||||
rtnl_net_unlock(net);
|
||||
}
|
||||
|
||||
next_sec = round_jiffies_up(next);
|
||||
|
Loading…
Reference in New Issue
Block a user