• Alexei Starovoitov's avatar
    bpf: fix lockdep false positive in stackmap · c7c68a1b
    Alexei Starovoitov authored
    [ Upstream commit 3defaf2f ]
    
    Lockdep warns about false positive:
    [   11.211460] ------------[ cut here ]------------
    [   11.211936] DEBUG_LOCKS_WARN_ON(depth <= 0)
    [   11.211985] WARNING: CPU: 0 PID: 141 at ../kernel/locking/lockdep.c:3592 lock_release+0x1ad/0x280
    [   11.213134] Modules linked in:
    [   11.214954] RIP: 0010:lock_release+0x1ad/0x280
    [   11.223508] Call Trace:
    [   11.223705]  <IRQ>
    [   11.223874]  ? __local_bh_enable+0x7a/0x80
    [   11.224199]  up_read+0x1c/0xa0
    [   11.224446]  do_up_read+0x12/0x20
    [   11.224713]  irq_work_run_list+0x43/0x70
    [   11.225030]  irq_work_run+0x26/0x50
    [   11.225310]  smp_irq_work_interrupt+0x57/0x1f0
    [   11.225662]  irq_work_interrupt+0xf/0x20
    
    since rw_semaphore is released in a different task vs task that locked the sema.
    It is expected behavior.
    Fix the warning with up_read_non_owner() and rwsem_release() annotation.
    
    Fixes: bae77c5e ("bpf: enable stackmap with build_id in nmi context")
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    c7c68a1b
stackmap.c 16.7 KB