[PATCH] RISC-V: fix taking the text_mutex twice during sifive errata patching

Palmer Dabbelt palmer at dabbelt.com
Tue Mar 7 12:52:29 PST 2023


On Tue, 07 Mar 2023 12:13:01 PST (-0800), geert at linux-m68k.org wrote:
> Hi Conor,
>
> On Thu, Mar 2, 2023 at 6:45 PM Conor Dooley <conor at kernel.org> wrote:
>> From: Conor Dooley <conor.dooley at microchip.com>
>>
>> Chris pointed out that some bonehead, *cough* me *cough*, added two
>> mutex_locks() to the SiFive errata patching. The second was meant to
>> have been a mutex_unlock().
>>
>> Reported-by: Chris Hofstaedtler <zeha at debian.org>
>> Fixes: 9493e6f3ce02 ("RISC-V: take text_mutex during alternative patching")
>> Signed-off-by: Conor Dooley <conor.dooley at microchip.com>
>
> Thanks for your patch!
>
> This fixes the crash I see (with "earlycon keep_bootcon") on StarLight,
> and which I've just bisected to aforementioned commit, so
> Tested-by: Geert Uytterhoeven <geert+renesas at glider.be>
>
> You may want to include (a part of) the crash log below in your
> patch description, to make it easier for affected people to find
> the fix.

I added it to the commit, thanks.  This is in fixes.

>
> Unable to handle kernel NULL pointer dereference at virtual address
> 0000000000000030
> Oops [#1]
> Modules linked in:
> CPU: 0 PID: 0 Comm: swapper Not tainted
> 6.2.0-rc1-starlight-00079-g9493e6f3ce02 #229
> Hardware name: BeagleV Starlight Beta (DT)
> epc : __schedule+0x42/0x500
>  ra : schedule+0x46/0xce
> epc : ffffffff8065957c ra : ffffffff80659a80 sp : ffffffff81203c80
>  gp : ffffffff812d50a0 tp : ffffffff8120db40 t0 : ffffffff81203d68
>  t1 : 0000000000000001 t2 : 4c45203a76637369 s0 : ffffffff81203cf0
>  s1 : ffffffff8120db40 a0 : 0000000000000000 a1 : ffffffff81213958
>  a2 : ffffffff81213958 a3 : 0000000000000000 a4 : 0000000000000000
>  a5 : ffffffff80a1bd00 a6 : 0000000000000000 a7 : 0000000052464e43
>  s2 : ffffffff8120db41 s3 : ffffffff80a1ad00 s4 : 0000000000000000
>  s5 : 0000000000000002 s6 : ffffffff81213938 s7 : 0000000000000000
>  s8 : 0000000000000000 s9 : 0000000000000001 s10: ffffffff812d7204
>  s11: ffffffff80d3c920 t3 : 0000000000000001 t4 : ffffffff812e6dd7
>  t5 : ffffffff812e6dd8 t6 : ffffffff81203bb8
> status: 0000000200000100 badaddr: 0000000000000030 cause: 000000000000000d
> [<ffffffff80659a80>] schedule+0x46/0xce
> [<ffffffff80659dce>] schedule_preempt_disabled+0x16/0x28
> [<ffffffff8065ae0c>] __mutex_lock.constprop.0+0x3fe/0x652
> [<ffffffff8065b138>] __mutex_lock_slowpath+0xe/0x16
> [<ffffffff8065b182>] mutex_lock+0x42/0x4c
> [<ffffffff8000ad94>] sifive_errata_patch_func+0xf6/0x18c
> [<ffffffff80002b92>] _apply_alternatives+0x74/0x76
> [<ffffffff80802ee8>] apply_boot_alternatives+0x3c/0xfa
> [<ffffffff80803cb0>] setup_arch+0x60c/0x640
> [<ffffffff80800926>] start_kernel+0x8e/0x99c
> ---[ end trace 0000000000000000 ]---
>
> Gr{oetje,eeting}s,
>
>                         Geert



More information about the linux-riscv mailing list