Re: [net-next] bpf: avoid hashtab deadlock with try_lock

From: Hao Luo
Date: Wed Nov 30 2022 - 00:02:33 EST


On Tue, Nov 29, 2022 at 8:13 PM Hou Tao <houtao@xxxxxxxxxxxxxxx> wrote:
>
> On 11/30/2022 10:47 AM, Tonghao Zhang wrote:
<...>
> > if (in_nmi()) {
> > if (!raw_spin_trylock_irqsave(&b->raw_lock, flags))
> > return -EBUSY;
>
> The only purpose of trylock here is to make lockdep happy and it may lead to
> unnecessary -EBUSY error for htab operations in NMI context. I still prefer add
> a virtual lock-class for map_locked to fix the lockdep warning. So could you use
> separated patches to fix the potential dead-lock and the lockdep warning ? It
> will be better you can also add a bpf selftests for deadlock problem as said before.
>

Agree with Tao here. Tonghao, could you send another version which:

- separates the fix to deadlock and the fix to lockdep warning
- includes a bpf selftest to verify the fix to deadlock
- with bpf-specific tag: [PATCH bpf-next]

There are multiple ideas on the fly in this thread, it's easy to lose
track of what has been proposed and what change you intend to make.

Thanks,
Hao