Commit d813a8cb authored by Linus Torvalds's avatar Linus Torvalds
Browse files
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
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -824,8 +824,21 @@ static irqreturn_t pca953x_irq_handler(int irq, void *devid)
	ret = pca953x_irq_pending(chip, pending);
	mutex_unlock(&chip->i2c_lock);

	for_each_set_bit(level, pending, gc->ngpio)
		handle_nested_irq(irq_find_mapping(gc->irq.domain, level));
	if (ret) {
		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);
}
+1 −1
Original line number Diff line number Diff line
@@ -425,7 +425,7 @@ static __poll_t lineevent_poll(struct file *file,

static ssize_t lineevent_get_size(void)
{
#ifdef __x86_64__
#if defined(CONFIG_X86_64) && !defined(CONFIG_UML)
	/* i386 has no padding after 'id' */
	if (in_ia32_syscall()) {
		struct compat_gpioeevent_data {