io_uring/bpf_filter: add ref counts to struct io_bpf_filter

In preparation for allowing inheritance of BPF filters and filter
tables, add a reference count to the filter. This allows multiple tables
to safely include the same filter.

Reviewed-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
Jens Axboe 2026-01-16 14:37:28 -07:00
parent e7c30675a7
commit e7f67c2be7

View file

@ -15,6 +15,7 @@
#include "openclose.h"
struct io_bpf_filter {
refcount_t refs;
struct bpf_prog *prog;
struct io_bpf_filter *next;
};
@ -125,6 +126,11 @@ static void io_free_bpf_filters(struct rcu_head *head)
*/
if (f == &dummy_filter)
break;
/* Someone still holds a ref, stop iterating. */
if (!refcount_dec_and_test(&f->refs))
break;
bpf_prog_destroy(f->prog);
kfree(f);
f = next;
@ -298,6 +304,7 @@ int io_register_bpf_filter(struct io_restriction *res,
ret = -ENOMEM;
goto err;
}
refcount_set(&filter->refs, 1);
filter->prog = prog;
res->bpf_filters = filters;