Message ID | 20190111174347.25040-1-brgl@bgdev.pl |
---|---|
State | New |
Headers | show |
Series | [v2] gpiolib: fix line event timestamps for nested irqs | expand |
śr., 16 sty 2019 o 14:35 Sasha Levin <sashal@kernel.org> napisał(a): > > Hi, > > [This is an automated email] > > This commit has been processed because it contains a "Fixes:" tag, > fixing commit: d58f2bf261fd gpio: Timestamp events in hardirq handler. > > The bot has tested the following trees: v4.20.2, v4.19.15. > > v4.20.2: Build OK! > v4.19.15: Failed to apply! Possible dependencies: > Unable to calculate > > > How should we proceed with this patch? > I sent a backport of this patch. Bart > -- > Thanks, > Sasha
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index 1651d7f0a303..d1adfdf50fb3 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -828,7 +828,14 @@ static irqreturn_t lineevent_irq_thread(int irq, void *p) /* Do not leak kernel stack to userspace */ memset(&ge, 0, sizeof(ge)); - ge.timestamp = le->timestamp; + /* + * We may be running from a nested threaded interrupt in which case + * we didn't get the timestamp from lineevent_irq_handler(). + */ + if (!le->timestamp) + ge.timestamp = ktime_get_real_ns(); + else + ge.timestamp = le->timestamp; if (le->eflags & GPIOEVENT_REQUEST_RISING_EDGE && le->eflags & GPIOEVENT_REQUEST_FALLING_EDGE) {