From: Baoquan He <baoquan.he@linux.dev>
To: "Uladzislau Rezki (Sony)" <urezki@gmail.com>
Cc: linux-mm@kvack.org, Andrew Morton <akpm@linux-foundation.org>,
Baoquan He <bhe@redhat.com>, LKML <linux-kernel@vger.kernel.org>,
Ido Schimmel <idosch@nvidia.com>,
syzbot+8b12fc6e0fb139765b58@syzkaller.appspotmail.com
Subject: Re: [PATCH] mm/vmalloc: Do not trigger BUG() on BH disabled context
Date: Tue, 19 May 2026 09:40:19 +0800 [thread overview]
Message-ID: <agu_g0HODqOHXodu@MiWiFi-R3L-srv> (raw)
In-Reply-To: <20260515153009.2296191-1-urezki@gmail.com>
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@linux.dev>
Thanks
Baoquan
>
> Replace the in_interrupt() check with in_nmi() || in_hardirq().
>
> Cc: Ido Schimmel <idosch@nvidia.com>
> Fixes: c6307674ed82 ("mm: kvmalloc: add non-blocking support for vmalloc")
> Reported-by: syzbot+8b12fc6e0fb139765b58@syzkaller.appspotmail.com
> Closes: https://lore.kernel.org/all/69ff8c7c.050a0220.1036b8.000b.GAE@google.com/
> Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
> ---
> mm/vmalloc.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/mm/vmalloc.c b/mm/vmalloc.c
> index 676851d5cfe7..273bbe49eaef 100644
> --- a/mm/vmalloc.c
> +++ b/mm/vmalloc.c
> @@ -3209,7 +3209,7 @@ struct vm_struct *__get_vm_area_node(unsigned long size,
> struct vm_struct *area;
> unsigned long requested_size = size;
>
> - BUG_ON(in_interrupt());
> + BUG_ON(in_nmi() || in_hardirq());
> size = ALIGN(size, 1ul << shift);
> if (unlikely(!size))
> return NULL;
> --
> 2.47.3
>
next prev parent reply other threads:[~2026-05-19 1:40 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-15 15:30 [PATCH] mm/vmalloc: Do not trigger BUG() on BH disabled context Uladzislau Rezki (Sony)
2026-05-18 23:10 ` Andrew Morton
2026-05-19 16:19 ` Uladzislau Rezki
2026-05-19 1:40 ` Baoquan He [this message]
2026-05-19 16:20 ` Uladzislau Rezki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=agu_g0HODqOHXodu@MiWiFi-R3L-srv \
--to=baoquan.he@linux.dev \
--cc=akpm@linux-foundation.org \
--cc=bhe@redhat.com \
--cc=idosch@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=syzbot+8b12fc6e0fb139765b58@syzkaller.appspotmail.com \
--cc=urezki@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.