]> git.baikalelectronics.ru Git - kernel.git/commit
ipv6/addrconf: ensure addrconf_verify_rtnl() has completed
authorEric Dumazet <edumazet@google.com>
Wed, 16 Feb 2022 18:20:37 +0000 (10:20 -0800)
committerJakub Kicinski <kuba@kernel.org>
Thu, 17 Feb 2022 16:41:54 +0000 (08:41 -0800)
commiteb0e1d6d760b9e4a09f4b6e952b6d61660f06447
tree3326aea689f69ff1392b14ac63d47bc27b0fd044
parentae8ce4d9ef4b29a16ff038e724c81a691f2438e5
ipv6/addrconf: ensure addrconf_verify_rtnl() has completed

Before freeing the hash table in addrconf_exit_net(),
we need to make sure the work queue has completed,
or risk NULL dereference or UAF.

Thus, use cancel_delayed_work_sync() to enforce this.
We do not hold RTNL in addrconf_exit_net(), making this safe.

Fixes: 8ee818770b94 ("ipv6/addrconf: use one delayed work per netns")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: syzbot <syzkaller@googlegroups.com>
Reviewed-by: David Ahern <dsahern@kernel.org>
Link: https://lore.kernel.org/r/20220216182037.3742-1-eric.dumazet@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv6/addrconf.c