• S
    gpio: max732x: Fix irq-events handler · 606f13e9
    Semen Protsenko 提交于
    MAX732X clears all pending interrupts on I2C read (when interrupts
    register is being read). Driver doesn't need to send any ACKs when
    interrupt was handled. So replace handle_edge_irq() with
    handle_simple_irq().
    
    Using handle_edge_irq() (w/o .irq_ack callback set) may lead to NULL
    pointer dereference in some cases. E.g. this was observed on
    hibernation process:
    
      Unable to handle kernel NULL pointer dereference at virtual address 0
      Backtrace:
      (handle_edge_irq) from (resend_irqs)
      (resend_irqs) from (tasklet_action)
      (tasklet_action) from (__do_softirq)
      (__do_softirq) from (run_ksoftirqd)
      (run_ksoftirqd) from (smpboot_thread_fn)
      (smpboot_thread_fn) from (kthread)
      (kthread) from (ret_from_fork)
    Signed-off-by: NSemen Protsenko <semen.protsenko@globallogic.com>
    Reviewed-by: NGrygorii Strashko <grygorii.strashko@linaro.org>
    Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
    606f13e9
gpio-max732x.c 18.3 KB