• Yipeng Zou's avatar
    riscv:uprobe fix SR_SPIE set/clear handling · 3dbe5829
    Yipeng Zou authored
    In riscv the process of uprobe going to clear spie before exec
    the origin insn,and set spie after that.But When access the page
    which origin insn has been placed a page fault may happen and
    irq was disabled in arch_uprobe_pre_xol function,It cause a WARN
    as follows.
    There is no need to clear/set spie in arch_uprobe_pre/post/abort_xol.
    We can just remove it.
    
    [   31.684157] BUG: sleeping function called from invalid context at kernel/locking/rwsem.c:1488
    [   31.684677] in_atomic(): 0, irqs_disabled(): 1, non_block: 0, pid: 76, name: work
    [   31.684929] preempt_count: 0, expected: 0
    [   31.685969] CPU: 2 PID: 76 Comm: work Tainted: G
    [   31.686542] Hardware name: riscv-virtio,qemu (DT)
    [   31.686797] Call Trace:
    [   31.687053] [<ffffffff80006442>] dump_backtrace+0x30/0x38
    [   31.687699] [<ffffffff80812118>] show_stack+0x40/0x4c
    [   31.688141] [<ffffffff8081817a>] dump_stack_lvl+0x44/0x5c
    [   31.688396] [<ffffffff808181aa>] dump_stack+0x18/0x20
    [   31.688653] [<ffffffff8003e454>] __might_resched+0x114/0x122
    [   31.688948] [<ffffffff8003e4b2>] __might_sleep+0x50/0x7a
    [   31.689435] [<ffffffff80822676>] down_read+0x30/0x130
    [   31.689728] [<ffffffff8000b650>] do_page_fault+0x166/x446
    [   31.689997] [<ffffffff80003c0c>] ret_from_exception+0x0/0xc
    
    Fixes: 74784081 ("riscv: Add uprobes supported")
    Signed-off-by: default avatarYipeng Zou <zouyipeng@huawei.com>
    Reviewed-by: default avatarGuo Ren <guoren@kernel.org>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20220721065820.245755-1-zouyipeng@huawei.comSigned-off-by: default avatarPalmer Dabbelt <palmer@rivosinc.com>
    3dbe5829
uprobes.c 3.62 KB