diff options
author | Florian Westphal <[email protected]> | 2024-10-07 22:52:24 +0200 |
---|---|---|
committer | Andrew Morton <[email protected]> | 2024-10-17 00:28:07 -0700 |
commit | dc783ba4b9df3fb3e76e968b2cbeb9960069263c (patch) | |
tree | 78f5621308fbdb7f8f0fa3d32784ddf4bc85dd43 /tools/testing/selftests/bpf/prog_tests/autoload.c | |
parent | 6fa1066fc5d00cb9f1b0e83b7ff6ef98d26ba2aa (diff) |
lib: alloc_tag_module_unload must wait for pending kfree_rcu calls
Ben Greear reports following splat:
------------[ cut here ]------------
net/netfilter/nf_nat_core.c:1114 module nf_nat func:nf_nat_register_fn has 256 allocated at module unload
WARNING: CPU: 1 PID: 10421 at lib/alloc_tag.c:168 alloc_tag_module_unload+0x22b/0x3f0
Modules linked in: nf_nat(-) btrfs ufs qnx4 hfsplus hfs minix vfat msdos fat
...
Hardware name: Default string Default string/SKYBAY, BIOS 5.12 08/04/2020
RIP: 0010:alloc_tag_module_unload+0x22b/0x3f0
codetag_unload_module+0x19b/0x2a0
? codetag_load_module+0x80/0x80
nf_nat module exit calls kfree_rcu on those addresses, but the free
operation is likely still pending by the time alloc_tag checks for leaks.
Wait for outstanding kfree_rcu operations to complete before checking
resolves this warning.
Reproducer:
unshare -n iptables-nft -t nat -A PREROUTING -p tcp
grep nf_nat /proc/allocinfo # will list 4 allocations
rmmod nft_chain_nat
rmmod nf_nat # will WARN.
[[email protected]: add comment]
Link: https://lkml.kernel.org/r/[email protected]
Fixes: a473573964e5 ("lib: code tagging module support")
Signed-off-by: Florian Westphal <[email protected]>
Reported-by: Ben Greear <[email protected]>
Closes: https://lore.kernel.org/netdev/[email protected]/
Cc: Uladzislau Rezki <[email protected]>
Cc: Vlastimil Babka <[email protected]>
Cc: Suren Baghdasaryan <[email protected]>
Cc: Kent Overstreet <[email protected]>
Cc: <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Diffstat (limited to 'tools/testing/selftests/bpf/prog_tests/autoload.c')
0 files changed, 0 insertions, 0 deletions