lkml.org 
[lkml]   [2024]   [Mar]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] random: Fix the issue of '_might_sleep' function running in an atomic contex
    Hi Guoyong,

    On Mon, Mar 18, 2024 at 03:53:27PM +0800, Guoyong Wang wrote:
    > 'input_handle_event' runs in an atomic context
    > (spinlock). In rare instances, it may call
    > the '_might_sleep' function, which could trigger
    > a kernel exception.
    >
    > Backtrace:
    > [<ffffffd613025ba0>] die+0xa8/0x2fc
    > [<ffffffd613027428>] bug_handler+0x44/0xec
    > [<ffffffd613016964>] brk_handler+0x90/0x144
    > [<ffffffd613041e58>] do_debug_exception+0xa0/0x148
    > [<ffffffd61400c208>] el1_dbg+0x60/0x7c
    > [<ffffffd61400c000>] el1h_64_sync_handler+0x38/0x90
    > [<ffffffd613011294>] el1h_64_sync+0x64/0x6c
    > [<ffffffd613102d88>] __might_resched+0x1fc/0x2e8
    > [<ffffffd613102b54>] __might_sleep+0x44/0x7c
    > [<ffffffd6130b6eac>] cpus_read_lock+0x1c/0xec
    > [<ffffffd6132c2820>] static_key_enable+0x14/0x38
    > [<ffffffd61400ac08>] crng_set_ready+0x14/0x28
    > [<ffffffd6130df4dc>] execute_in_process_context+0xb8/0xf8
    > [<ffffffd61400ab30>] _credit_init_bits+0x118/0x1dc
    > [<ffffffd6138580c8>] add_timer_randomness+0x264/0x270
    > [<ffffffd613857e54>] add_input_randomness+0x38/0x48
    > [<ffffffd613a80f94>] input_handle_event+0x2b8/0x490
    > [<ffffffd613a81310>] input_event+0x6c/0x98

    Thanks for reporting this.

    I'm wondering, though, rather than introducing a second function, maybe
    execute_in_process_context() should just gain a `&& !in_atomic()`.
    That'd make things a bit simpler.

    However, I'm pretty sure in_atomic() isn't actually a reliable way of
    determining that, depending on config. So maybe this should just call
    the worker always (if system_wq isn't null).

    Alternatively, any chance the call to add_input_randomness() could be
    moved outside the spinlock, or does this not look possible?

    Jason

    \
     
     \ /
      Last update: 2024-05-27 15:53    [W:7.713 / U:0.140 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site