• M
    gpiolib: cdev: Set lineevent_state::irq after IRQ register successfully · 69bef19d
    Meng Li 提交于
    When running gpio test on nxp-ls1028 platform with below command
    gpiomon --num-events=3 --rising-edge gpiochip1 25
    There will be a warning trace as below:
    Call trace:
    free_irq+0x204/0x360
    lineevent_free+0x64/0x70
    gpio_ioctl+0x598/0x6a0
    __arm64_sys_ioctl+0xb4/0x100
    invoke_syscall+0x5c/0x130
    ......
    el0t_64_sync+0x1a0/0x1a4
    The reason of this issue is that calling request_threaded_irq()
    function failed, and then lineevent_free() is invoked to release
    the resource. Since the lineevent_state::irq was already set, so
    the subsequent invocation of free_irq() would trigger the above
    warning call trace. To fix this issue, set the lineevent_state::irq
    after the IRQ register successfully.
    
    Fixes: 46824272 ("gpiolib: cdev: refactor lineevent cleanup into lineevent_free")
    Cc: stable@vger.kernel.org
    Signed-off-by: NMeng Li <Meng.Li@windriver.com>
    Reviewed-by: NKent Gibson <warthog618@gmail.com>
    Signed-off-by: NBartosz Golaszewski <brgl@bgdev.pl>
    69bef19d
gpiolib-cdev.c 64.9 KB