On 02/22/2018 07:10 PM, Yonghong Song wrote: > Commit 9a3efb6b661f ("bpf: fix memory leak in lpm_trie map_free callback > function") > fixed a memory leak and removed unnecessary locks in map_free callback > function. > Unfortrunately, it introduced a lockdep warning. When lockdep checking is > turned on, > running tools/testing/selftests/bpf/test_lpm_map will have: > > [ 98.294321] ============================= > [ 98.294807] WARNING: suspicious RCU usage > [ 98.295359] 4.16.0-rc2+ #193 Not tainted > [ 98.295907] ----------------------------- > [ 98.296486] /home/yhs/work/bpf/kernel/bpf/lpm_trie.c:572 suspicious > rcu_dereference_check() usage! > [ 98.297657] > [ 98.297657] other info that might help us debug this: > [ 98.297657] > [ 98.298663] > [ 98.298663] rcu_scheduler_active = 2, debug_locks = 1 > [ 98.299536] 2 locks held by kworker/2:1/54: > [ 98.300152] #0: ((wq_completion)"events"){+.+.}, at: > [<00000000196bc1f0>] process_one_work+0x157/0x5c0 > [ 98.301381] #1: ((work_completion)(&map->work)){+.+.}, at: > [<00000000196bc1f0>] process_one_work+0x157/0x5c0 > > Since actual trie tree removal happens only after no other > accesses to the tree are possible, replacing > rcu_dereference_protected(*slot, lockdep_is_held(&trie->lock)) > with > rcu_dereference_protected(*slot, 1) > fixed the issue. > > Fixes: 9a3efb6b661f ("bpf: fix memory leak in lpm_trie map_free callback > function") > Reported-by: Eric Dumazet <eduma...@google.com> > Suggested-by: Eric Dumazet <eduma...@google.com> > Signed-off-by: Yonghong Song <y...@fb.com>
Applied to bpf tree, thanks everyone!