Re: BUG: soft lockup in ieee80211_tasklet_handler

From: Dmitry Vyukov
Date: Wed Mar 03 2021 - 09:40:49 EST


On Wed, Mar 3, 2021 at 9:59 AM Hillf Danton <hdanton@xxxxxxxx> wrote:
>
> On Tue, 02 Mar 2021 15:18:16 +0100 Johannes Berg wrote:
> > On Wed, 2021-02-24 at 10:30 +0800, Hillf Danton wrote:
> > >
> > > Add budget for the 80211 softint handler - it's feasible not to try to
> > > build the giant pyramid in a week.
> > >
> > > --- x/net/mac80211/main.c
> > > +++ y/net/mac80211/main.c
> > > @@ -224,9 +224,15 @@ static void ieee80211_tasklet_handler(un
> > > {
> > > struct ieee80211_local *local = (struct ieee80211_local *) data;
> > > struct sk_buff *skb;
> > > + int i = 0;
> > > +
> > > + while (i++ < 64) {
> > > + skb = skb_dequeue(&local->skb_queue);
> > > + if (!skb)
> > > + skb = skb_dequeue(&local->skb_queue_unreliable);
> > > + if (!skb)
> > > + return;
> >
> > I guess that's not such a bad idea, but I do wonder how we get here,
> > userspace can submit packets faster than we can process?
>
> I wonder why syzbot did not make other handlers stand out than
> ieee80211_tasklet_handler.

syzbot has no relation to this whatsoever. It's just a proxy between
the kernel and you. Ask the kernel ;)

> > It feels like a simulation-only case, tbh, since over the air you have
> > limits how much bandwidth you can get ... unless you have a very slow
> > CPU?
>
> Even with a slower CPU I want to run a FIFO task every tick - it can bear
> latencies like two seconds.
> >
> > In any case, if you want anything merged you're going to have to submit
> > a proper patch with a real commit message and Signed-off-by, etc.
> >
> > johannes