• Lorenzo Bianconi's avatar
    iio: imu: st_lsm6dsx: add sanity check for read_fifo pointer · a912ee4c
    Lorenzo Bianconi authored
    Check read_fifo pointer before using it since we can't assume it
    is always set adding new sensors. This patch fixes the following crash:
    
    irq 277: nobody cared (try booting with the "irqpoll" option)
    CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.3.0-rc5-00322-g792b824-dirty #7
    Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
    [<c0112750>] (unwind_backtrace) from [<c010d018>] (show_stack+0x10/0x14)
    [<c010d018>] (show_stack) from [<c0c2bfc8>] (dump_stack+0xd8/0x10c)
    [<c0c2bfc8>] (dump_stack) from [<c01923fc>] (__report_bad_irq+0x24/0xc0)
    [<c01923fc>] (__report_bad_irq) from [<c0192820>] (note_interrupt+0x27c/0x2dc)
    [<c0192820>] (note_interrupt) from [<c018f174>] (handle_irq_event_percpu+0x54/0x7c)
    [<c018f174>] (handle_irq_event_percpu) from [<c018f1d4>] (handle_irq_event+0x38/0x5c)
    [<c018f1d4>] (handle_irq_event) from [<c0193664>] (handle_level_irq+0xc8/0x154)
    [<c0193664>] (handle_level_irq) from [<c018df58>] (generic_handle_irq+0x20/0x34)
    [<c018df58>] (generic_handle_irq) from [<c053c348>] (mxc_gpio_irq_handler+0xc4/0xf8)
    [<c053c348>] (mxc_gpio_irq_handler) from [<c053c3e0>] (mx3_gpio_irq_handler+0x64/0xb8)
    [<c053c3e0>] (mx3_gpio_irq_handler) from [<c018df58>] (generic_handle_irq+0x20/0x34)
    [<c018df58>] (generic_handle_irq) from [<c018e550>] (__handle_domain_irq+0x64/0xe0)
    [<c018e550>] (__handle_domain_irq) from [<c0529610>] (gic_handle_irq+0x4c/0xa0)
    [<c0529610>] (gic_handle_irq) from [<c0101a70>] (__irq_svc+0x70/0x98)
    Exception stack(0xc1301f10 to 0xc1301f58
    1f00: 00000001 00000006 00000000 c130c340
    1f20: c1300000 c1308928 00000001 c1308960 00000000 c12b9db0 c1308908 00000000
    1f40: 00000000 c1301f60 c0182010 c0109508 20000013 ffffffff
    [<c0101a70>] (__irq_svc) from [<c0109508>] (arch_cpu_idle+0x20/0x3c)
    [<c0109508>] (arch_cpu_idle) from [<c015ed70>] (do_idle+0x1bc/0x2bc)
    [<c015ed70>] (do_idle) from [<c015f204>] (cpu_startup_entry+0x18/0x1c)
    [<c015f204>] (cpu_startup_entry) from [<c1200e68>] (start_kernel+0x440/0x504)
    [<c1200e68>] (start_kernel) from [<00000000>] (0x0)
    handlers:
    [<62052c0d>] st_lsm6dsx_handler_irq threaded
    [<f2004b92>] st_lsm6dsx_handler_thread
    
    Fixes: 52f4b1f1 ("iio: imu: st_lsm6dsx: add support for accel/gyro unit of lsm9ds1")
    Tested-by: default avatarBobby Jones <rjones@gateworks.com>
    Signed-off-by: default avatarLorenzo Bianconi <lorenzo@kernel.org>
    Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
    a912ee4c
st_lsm6dsx_buffer.c 18 KB