Re: [PATCH] mm/vmalloc: Do not trigger BUG() on BH disabled context

From: Uladzislau Rezki

Date: Tue May 19 2026 - 12:49:03 EST


On Tue, May 19, 2026 at 09:40:19AM +0800, Baoquan He wrote:
> On 05/15/26 at 05:30pm, Uladzislau Rezki (Sony) wrote:
> > __get_vm_area_node() currently triggers a BUG() if in_interrupt()
> > returns true. However, in_interrupt() also reports true when BH
> > are disabled.
> >
> > The bridge code can call rhashtable_lookup_insert_fast() with
> > bottom halves disabled:
> >
> > __vlan_add()
> > -> br_fdb_add_local()
> > spin_lock_bh(&br->hash_lock); <-- Disable BH
> > -> fdb_add_local()
> > -> fdb_create()
> > -> rhashtable_lookup_insert_fast()
> > -> kvmalloc()
> > -> vmalloc()
> > -> __get_vm_area_node()
> > -> BUG_ON(in_interrupt())
> > spin_unlock_bh(&br->hash_lock)
> >
> > this triggers the BUG() despite the caller not being in NMI or
> > hard IRQ context.
>
> Because the current vmalloc supports non-blocking allocation, so we
> need to skip disabled BH or in_serving_softirq() cases to avoid unwanted
> BUG(). This change looks great to me, not sure if I undersand it
> correctly.
>
> Reviewed-by: Baoquan He <baoquan.he@xxxxxxxxx>
>
Thank you!

--
Uladzislau Rezki