mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-01 10:42:11 +00:00
70b6f46a4e
With CONFIG_PROVE_LOCKING, when creating a set of type bitmap:ip, adding
it to a set of type list:set and populating it from iptables SET target
triggers a kernel warning:
| WARNING: possible recursive locking detected
| 6.12.0-rc7-01692-g5e9a28f41134-dirty #594 Not tainted
| --------------------------------------------
| ping/4018 is trying to acquire lock:
| ffff8881094a6848 (&set->lock){+.-.}-{2:2}, at: ip_set_add+0x28c/0x360 [ip_set]
|
| but task is already holding lock:
| ffff88811034c048 (&set->lock){+.-.}-{2:2}, at: ip_set_add+0x28c/0x360 [ip_set]
This is a false alarm: ipset does not allow nested list:set type, so the
loop in list_set_kadd() can never encounter the outer set itself. No
other set type supports embedded sets, so this is the only case to
consider.
To avoid the false report, create a distinct lock class for list:set
type ipset locks.
Fixes:
|
||
---|---|---|
.. | ||
ip_set_bitmap_gen.h | ||
ip_set_bitmap_ip.c | ||
ip_set_bitmap_ipmac.c | ||
ip_set_bitmap_port.c | ||
ip_set_core.c | ||
ip_set_getport.c | ||
ip_set_hash_gen.h | ||
ip_set_hash_ip.c | ||
ip_set_hash_ipmac.c | ||
ip_set_hash_ipmark.c | ||
ip_set_hash_ipport.c | ||
ip_set_hash_ipportip.c | ||
ip_set_hash_ipportnet.c | ||
ip_set_hash_mac.c | ||
ip_set_hash_net.c | ||
ip_set_hash_netiface.c | ||
ip_set_hash_netnet.c | ||
ip_set_hash_netport.c | ||
ip_set_hash_netportnet.c | ||
ip_set_list_set.c | ||
Kconfig | ||
Makefile | ||
pfxlen.c |