On Thu, May 21, 2020 at 8:21 AM [off-list ref] wrote:
On 05/21, Jakub Sitnicki wrote:
quoted
When attaching a flow dissector program to a network namespace with
bpf(BPF_PROG_ATTACH, ...) we grab a reference to bpf_prog.
quoted
If netns gets destroyed while a flow dissector is still attached, and
there
are no other references to the prog, we leak the reference and the program
remains loaded.
quoted
Leak can be reproduced by running flow dissector tests from selftests/bpf:
quoted
# bpftool prog list
# ./test_flow_dissector.sh
...
selftests: test_flow_dissector [PASS]
# bpftool prog list
4: flow_dissector name _dissect tag e314084d332a5338 gpl
loaded_at 2020-05-20T18:50:53+0200 uid 0
xlated 552B jited 355B memlock 4096B map_ids 3,4
btf_id 4
#
quoted
Fix it by detaching the flow dissector program when netns is going away.
quoted
Fixes: d58e468b1112 ("flow_dissector: implements flow dissector BPF hook")
Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
Reviewed-by: Stanislav Fomichev <redacted>
Applied. Thanks