Commit d813a8cb authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'gpio-v5.9-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio

Pull GPIO fixes from Linus Walleij:
 "Some late fixes: one IRQ issue and one compilation issue for UML.

   - Fix a compilation issue with User Mode Linux

   - Handle spurious interrupts properly in the PCA953x driver"

* tag 'gpio-v5.9-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio:
  gpio: pca953x: Survive spurious interrupts
  gpiolib: Disable compat ->read() code in UML case
parents f318052e 8b81edd8
...@@ -824,8 +824,21 @@ static irqreturn_t pca953x_irq_handler(int irq, void *devid) ...@@ -824,8 +824,21 @@ static irqreturn_t pca953x_irq_handler(int irq, void *devid)
ret = pca953x_irq_pending(chip, pending); ret = pca953x_irq_pending(chip, pending);
mutex_unlock(&chip->i2c_lock); mutex_unlock(&chip->i2c_lock);
for_each_set_bit(level, pending, gc->ngpio) if (ret) {
handle_nested_irq(irq_find_mapping(gc->irq.domain, level)); ret = 0;
for_each_set_bit(level, pending, gc->ngpio) {
int nested_irq = irq_find_mapping(gc->irq.domain, level);
if (unlikely(nested_irq <= 0)) {
dev_warn_ratelimited(gc->parent, "unmapped interrupt %d\n", level);
continue;
}
handle_nested_irq(nested_irq);
ret = 1;
}
}
return IRQ_RETVAL(ret); return IRQ_RETVAL(ret);
} }
......
...@@ -425,7 +425,7 @@ static __poll_t lineevent_poll(struct file *file, ...@@ -425,7 +425,7 @@ static __poll_t lineevent_poll(struct file *file,
static ssize_t lineevent_get_size(void) static ssize_t lineevent_get_size(void)
{ {
#ifdef __x86_64__ #if defined(CONFIG_X86_64) && !defined(CONFIG_UML)
/* i386 has no padding after 'id' */ /* i386 has no padding after 'id' */
if (in_ia32_syscall()) { if (in_ia32_syscall()) {
struct compat_gpioeevent_data { struct compat_gpioeevent_data {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment