[PATCH 4/4] rhashtable: fix vmalloc() deadlock in atomic rehash
Uladzislau Rezki
urezki at gmail.com
Fri Nov 6 06:43:21 PST 2026
On Thu, Nov 05, 2026 at 01:02:35PM -0800, Linus Torvalds wrote:
> On Thu, 5 Nov 2026 at 10:44, Uladzislau Rezki <urezki at gmail.com> wrote:
> >
> > @@ -1025,7 +1025,13 @@ void br_fdb_update(struct net_bridge *br, struct net_bridge_port *source,
> > }
> > }
> > } else {
> > - spin_lock(&br->hash_lock);
> > + if (in_serving_softirq()) {
> > + if (!spin_trylock(&br->hash_lock))
>
> I don't think that in_serving_softirq() makes any sense.
>
> If I read this code correctly - and it's possible I didn't - this is
> always called under local_bh_disable().
>
> And local_bh_disable() will have increased the preempt-count exactly
> so that it looks like it's in_serving_softirq().
>
Sorry, probably i am missing something here. My understanding
is that local_bh_disable() adds SOFTIRQ_DISABLE_OFFSET and
in_serving_softirq() checks another SOFTIRQ_OFFSET bit.
--
Uladzislau Rezki
More information about the maple-tree
mailing list