* Re: [PATCH 4/4] rhashtable: fix vmalloc() deadlock in atomic rehash
[not found] ` <20261028154218.1668182-5-liam@infradead.org>
@ 2026-10-29 2:16 ` Herbert Xu
2026-10-29 10:08 ` Uladzislau Rezki
0 siblings, 1 reply; 2+ messages in thread
From: Herbert Xu @ 2026-10-29 2:16 UTC (permalink / raw)
To: Liam R. Howlett (Google), Uladzislau Rezki, Michal Hocko,
Baoquan He, Alexander Potapenko, Andrey Ryabinin, Marco Elver,
Michal Hocko, Linux Crypto Mailing List
Cc: Andrew Morton, Thomas Graf, linux-mm, linux-kernel, maple-tree,
Lorenzo Stoakes, Chris Mason, Alice Ryhl, Andrew Ballance, stable,
David Hildenbrand (Arm)
On Wed, Oct 28, 2026 at 11:42:18AM -0400, Liam R. Howlett (Google) wrote:
>
> Below, one CPU adds an FDB entry for an RTM_NEWNEIGH netlink request,
> while another CPU is inside vmalloc() or vfree():
>
> RTM_NEWNEIGH vmalloc() or vfree()
> ============ ====================
> spin_lock_bh(&br->hash_lock)
> spin_lock(&vn->busy.lock)
> rhashtable_insert_rehash()
> kvmalloc(GFP_ATOMIC)
> vmalloc()
> spin_lock(&vn->busy.lock)
> waits for the other CPU
> softirq: a frame for the bridge
> spin_lock(&br->hash_lock)
> waits for RTM_NEWNEIGH
I think this is a fundamental bug in the kvmalloc non-blocking
support patch. How can it be used at all if it is susceptible
to such dead-locks?
And if you can't use it safely why don't we just get rid of the
broken kvmalloc non-block path and have it always go to kmalloc
like it did before?
> Fixes: c6307674ed82 ("mm: kvmalloc: add non-blocking support for vmalloc")
BTW, rhashtable patches should be sent to linux-crypto.
Thanks,
--
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH 4/4] rhashtable: fix vmalloc() deadlock in atomic rehash
2026-10-29 2:16 ` [PATCH 4/4] rhashtable: fix vmalloc() deadlock in atomic rehash Herbert Xu
@ 2026-10-29 10:08 ` Uladzislau Rezki
0 siblings, 0 replies; 2+ messages in thread
From: Uladzislau Rezki @ 2026-10-29 10:08 UTC (permalink / raw)
To: Herbert Xu
Cc: Liam R. Howlett (Google), Uladzislau Rezki, Michal Hocko,
Baoquan He, Alexander Potapenko, Andrey Ryabinin, Marco Elver,
Michal Hocko, Linux Crypto Mailing List, Andrew Morton,
Thomas Graf, linux-mm, linux-kernel, maple-tree, Lorenzo Stoakes,
Chris Mason, Alice Ryhl, Andrew Ballance, stable,
David Hildenbrand (Arm)
On Thu, Oct 29, 2026 at 10:16:36AM +0800, Herbert Xu wrote:
> On Wed, Oct 28, 2026 at 11:42:18AM -0400, Liam R. Howlett (Google) wrote:
> >
> > Below, one CPU adds an FDB entry for an RTM_NEWNEIGH netlink request,
> > while another CPU is inside vmalloc() or vfree():
> >
> > RTM_NEWNEIGH vmalloc() or vfree()
> > ============ ====================
> > spin_lock_bh(&br->hash_lock)
> > spin_lock(&vn->busy.lock)
> > rhashtable_insert_rehash()
> > kvmalloc(GFP_ATOMIC)
> > vmalloc()
> > spin_lock(&vn->busy.lock)
> > waits for the other CPU
> > softirq: a frame for the bridge
> > spin_lock(&br->hash_lock)
> > waits for RTM_NEWNEIGH
>
> I think this is a fundamental bug in the kvmalloc non-blocking
> support patch. How can it be used at all if it is susceptible
> to such dead-locks?
>
> And if you can't use it safely why don't we just get rid of the
> broken kvmalloc non-block path and have it always go to kmalloc
> like it did before?
>
If we have a look at this as we did not have vmalloc() here:
RTM_NEWNEIGH foo() or ...
============ ====================
lock_bh(&br->hash_lock)
foo()
lock(B)
rhashtable_insert_rehash()
foo()
lock(B)
waits for the other CPU
softirq: a frame for the bridge
lock(&br->hash_lock)
waits for RTM_NEWNEIGH
Same issue?
I have a question:
GFP_ATOMIC/GFP_NOWAIT guarantee they do not sleep. Do they guarantee
not hitting ABBA dead-locks or they are not interrupted?
--
Uladzislau Rezki
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-10-29 10:08 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20261028154218.1668182-1-liam@infradead.org>
[not found] ` <20261028154218.1668182-5-liam@infradead.org>
2026-10-29 2:16 ` [PATCH 4/4] rhashtable: fix vmalloc() deadlock in atomic rehash Herbert Xu
2026-10-29 10:08 ` Uladzislau Rezki
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox