On Thu, Jul 23, 2020 at 6:58 PM Thomas Gleixner <[email protected]> wrote:
>
> kernel test robot <[email protected]> writes:
> > [ 106.856151] WARNING: CPU: 5 PID: 4569 at net/mac80211/rx.c:4708
> > ieee80211_rx_napi+0x44d/0x560 [mac80211]
>
> Bah. I clearly should have noticed when looking at the patch.
>
> pending = softirq_pending();
>
> set_softirq_pending(0);
>
> while (pending) {
> ....
>
> if (timeout)
> break;
> }
>
> That drops everything which has not yet been processed and the above
> warning is due to this.
>
wow, I made a mistake, thank you for finding the cause of the problem
so quickly.
How about the following code. we need to clear the corresponding
pending bit at the
right time Instead of all the pending bits cleared in the start.
pending = softirq_pending();
while ((softirq_bit = ffs(pending))) {
pending >>= softirq_bit;
set_softirq_pending(pending); //Only clear the corresponding
bit which will be processed.
h->action(h);
if (timeout)
break;
}
> Thanks,
>
> tglx
>