Skip to contentSkip to conversation

gpiolib: fix line event timestamps for nested irqs

PATCH In review Bartosz Golaszewski 1 participant 2 messages Jan 11, 2019 – Jan 16, 2019 1 message not in the archive

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 gpiolib: fix line event timestamps for nested irqs

From: Bartosz Golaszewski <[email protected]>

Nested interrupts run inside the calling thread's context and the top half handler is never called which means that we never read the timestamp.

This issue came up when trying to read line events from a gpiochip using regmap_irq_chip for interrupts.

Fix it by reading the timestamp from the irq thread function if it's still 0 by the time the second handler is called.

Fixes d58f2bf261fd ("gpio: Timestamp events in hardirq handler")

---
v1 -> v2:
- add Fixes: to the commit message and Cc stable
- directly assing ktime_get_real_ns() to ge.timestamp

 drivers/gpio/gpiolib.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)
drivers/gpio/gpiolib.c +8 -1
index 1651d7f0a303..d1adfdf50fb3 100644
@@ -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) {
Signature · 1 line
2.19.1

A message that is not in the archive (sent off-list or not yet received): [email protected]

#2 lore raw

śr., 16 sty 2019 o 14:35 Sasha Levin <[email protected]> napisał(a):

Quoted 8 lines

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.

Quoted 9 lines

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

Quoted 3 lines

--
Thanks,
Sasha