Re: [PATCH bpf-next v3 2/3] bpf, arena: fix range_tree_set inconsistency on kmalloc_nolock failure
| Newsgroups | org.kernel.vger.bpf,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <9081a78882b2455f3464e7765c8810765e4d75f48571239f85978b00cb356c1c@mail.kernel.org> |
> commit d5e05189cced9c98030a06e9001b3384079ee0ac > Author: Yuan Chen <[email protected]> > Date: Mon Aug 10 21:47:59 2026 +0800 > > bpf, arena: fix range_tree_set inconsistency on kmalloc_nolock failure > > range_tree_set() pre-allocates the node needed for a brand-new range > before calling range_tree_clear(), so an allocation failure returns > -ENOMEM without having modified the tree (previously the overlapping > nodes were already removed by range_tree_clear() before the allocation > was attempted, permanently losing the cleared sub-ranges). > > Signed-off-by: Yuan Chen <[email protected]> This looks like a bug fix, should it include a Fixes tag? The allocate-after-clear ordering has been present since range_tree_set() was introduced in b795379757eb ("bpf: Introduce range_tree data structure and use it in bpf arena"), which already had: kernel/bpf/range_tree.c:range_tree_set() { ... err = range_tree_clear(rt, start, len); if (err) return err; ... } else { left = bpf_mem_alloc(&bpf_global_ma, sizeof(struct range_node)); if (!left) return -ENOMEM; ... so the tree was already mutated by the time the allocation failure was returned. A Fixes tag also matters here for backport scope, since the allocator changed from bpf_mem_alloc() to kmalloc_nolock() partway through the affected history. --- AI reviewed your patch. Please fix the bug or email reply why it's not a bug. See: https://github.com/kernel-patches/vmtest/blob/master/ci/claude/README.md CI run summary: https://github.com/kernel-patches/bpf/actions/runs/31396076224