On Tue, 30 Apr 2024 at 12:44, Benjamin Tissoires bentiss@kernel.org wrote:
If someone stores both a timer and a workqueue in a hash map, on free, we would walk it twice. Add a check in htab_free_malloced_timers_or_wq and free the timers and workqueues if they are present.
Fixes: 246331e3f1ea ("bpf: allow struct bpf_wq to be embedded in arraymaps and hashmaps") Signed-off-by: Benjamin Tissoires bentiss@kernel.org
I had forgotten how the extra_elems logic is working, turns out everything is in the preallocated elems array and per-cpu extra_elems stores the *pointer* to them for recycling without hitting the pcpu allocator, so should be fine (just in case this confuses anyone else).
changes in v3:
- fix unloading of bpf_wq, again
changes in v2:
- fix wq being not freed (and static call not used)
Acked-by: Kumar Kartikeya Dwivedi memxor@gmail.com