OSDN Git Service

gpio: ws16c48: Mask read inputs for get_multiple
authorWilliam Breathitt Gray <vilhelm.gray@gmail.com>
Mon, 22 Oct 2018 12:09:49 +0000 (21:09 +0900)
committerLinus Walleij <linus.walleij@linaro.org>
Mon, 5 Nov 2018 07:54:42 +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-ws16c48.c

index c7028eb..5cf3697 100644 (file)
@@ -169,7 +169,7 @@ static int ws16c48_gpio_get_multiple(struct gpio_chip *chip,
                port_state = inb(ws16c48gpio->base + 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;