On Tue, 30 Apr 2024 at 12:44, Benjamin Tissoires <bentiss@xxxxxxxxxx> 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@xxxxxxxxxx> > > --- 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@xxxxxxxxx>