[PATCH] gpio: Fix kernel stack leak to userspace

Subsystems: gpio subsystem, the rest

STALE3185d

3 messages, 3 authors, 2018-01-22 · open the first message on its own page

[PATCH] gpio: Fix kernel stack leak to userspace

From: Linus Walleij <hidden>
Date: 2018-01-22 12:21:52

The GPIO event descriptor was leaking kernel stack to
userspace because we don't zero the variable before
use. Ooops. Fix this.

Cc: stable@vger.kernel.org
Cc: Bartosz Golaszewski <redacted>
Cc: Arnd Bergmann <arnd@arndb.de>
Reported-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Linus Walleij <redacted>
---
 drivers/gpio/gpiolib.c | 3 +++
 1 file changed, 3 insertions(+)
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index 37e31ba82ca0..754836e4ca0e 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -744,6 +744,9 @@ static irqreturn_t lineevent_irq_thread(int irq, void *p)
 	struct gpioevent_data ge;
 	int ret, level;
 
+	/* Do not leak kernel stack to userspace */
+	memset(&ge, 0, sizeof(ge));
+
 	ge.timestamp = ktime_get_real_ns();
 	level = gpiod_get_value_cansleep(le->desc);
 
-- 
2.14.3

Re: [PATCH] gpio: Fix kernel stack leak to userspace

From: Bartosz Golaszewski <hidden>
Date: 2018-01-22 12:23:37

2018-01-22 13:21 GMT+01:00 Linus Walleij [off-list ref]:
quoted hunk
The GPIO event descriptor was leaking kernel stack to
userspace because we don't zero the variable before
use. Ooops. Fix this.

Cc: stable@vger.kernel.org
Cc: Bartosz Golaszewski <redacted>
Cc: Arnd Bergmann <arnd@arndb.de>
Reported-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Linus Walleij <redacted>
---
 drivers/gpio/gpiolib.c | 3 +++
 1 file changed, 3 insertions(+)
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index 37e31ba82ca0..754836e4ca0e 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -744,6 +744,9 @@ static irqreturn_t lineevent_irq_thread(int irq, void *p)
        struct gpioevent_data ge;
        int ret, level;

+       /* Do not leak kernel stack to userspace */
+       memset(&ge, 0, sizeof(ge));
+
        ge.timestamp = ktime_get_real_ns();
        level = gpiod_get_value_cansleep(le->desc);

--
2.14.3
Reviewed-by: Bartosz Golaszewski <redacted>

Re: [PATCH] gpio: Fix kernel stack leak to userspace

From: Arnd Bergmann <arnd@arndb.de>
Date: 2018-01-22 13:48:54

On Mon, Jan 22, 2018 at 1:21 PM, Linus Walleij [off-list ref] wrote:
The GPIO event descriptor was leaking kernel stack to
userspace because we don't zero the variable before
use. Ooops. Fix this.

Cc: stable@vger.kernel.org
Cc: Bartosz Golaszewski <redacted>
Cc: Arnd Bergmann <arnd@arndb.de>
Reported-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Linus Walleij <redacted>
---
 drivers/gpio/gpiolib.c | 3 +++
 1 file changed, 3 insertions(+)
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help