gpio: 104-dio-48e: Mask read inputs for get_multiple
authorWilliam Breathitt Gray <vilhelm.gray@gmail.com>
Mon, 22 Oct 2018 12:08:59 +0000 (21:08 +0900)
committerLinus Walleij <linus.walleij@linaro.org>
Mon, 5 Nov 2018 07:54:41 +0000 (08:54 +0100)
This patch masks the read inputs with the word mask in order to ensure
only requested input states are returned in the bits array.

Suggested-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpio-104-dio-48e.c

index 9c4e07fcb74b5f8fb1286c209a3b3c47d5a412b3..92c8f944bf641240fcf1e53b6c9aceac3f91a5b2 100644 (file)
@@ -222,7 +222,7 @@ static int dio48e_gpio_get_multiple(struct gpio_chip *chip, unsigned long *mask,
                port_state = inb(dio48egpio->base + ports[i]);
 
                /* store acquired bits at respective bits array offset */
-               bits[word_index] |= port_state << word_offset;
+               bits[word_index] |= (port_state << word_offset) & word_mask;
        }
 
        return 0;