Skip to contentSkip to conversation

clockevents: a couple of fixes 4.3

GIT PULL In review Daniel Lezcano 3 participants 5 messages Sep 30, 2015

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

Hi Thomas,

this pull request contains a couple of fixes removing the NO_IRQ usage:

- Removed bad usage of the NO_IRQ macro which prevent to detect an
error when calling irq_of_parse_and_map on the rockchip and keystone timers (Daniel Lezcano)

Thanks !

-- Daniel

The following changes since commit eef7635a22f6b144206b5ca2f1398f637acffc4d:

clockevents: Remove unused set_mode() callback (2015-09-14 11:00:55
+0200)

are available in the git repository at:

http://git.linaro.org/people/daniel.lezcano/clockevents.git
clockevents/4.3-fixes

for you to fetch changes up to bdf7344e14d826d0df438a55fc51146d179e198d:

clocksource/drivers/keystone: Fix bad NO_IRQ usage (2015-09-29
14:33:51 +0200)

----------------------------------------------------------------
Daniel Lezcano (2):
clocksource/drivers/rockchip: Fix bad NO_IRQ usage clocksource/drivers/keystone: Fix bad NO_IRQ usage

  drivers/clocksource/rockchip_timer.c | 2 +-
  drivers/clocksource/timer-keystone.c | 2 +-
  2 files changed, 2 insertions(+), 2 deletions(-)
Signature · 5 lines
  <http://www.linaro.org/> Linaro.org ? Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog
#1 lore raw

PATCH 1/2 clocksource/drivers/rockchip: Fix bad NO_IRQ usage

The current code assumes the 'irq_of_parse_and_map' will return NO_IRQ in case of failure. Unfortunately, the NO_IRQ is not consistent across the different architectures and we must not rely on it.

NO_IRQ is equal to '-1' on ARM and 'irq_of_parse_and_map' returns '0' in case of an error. Hence, the latter won't be detected and will lead to a crash.

Fix this by just checking 'irq' is different from zero.

---
 drivers/clocksource/rockchip_timer.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/clocksource/rockchip_timer.c +1 -1
index bb2c2b0..d3c1742 100644
@@ -148,7 +148,7 @@ static void __init rk_timer_init(struct device_node *np)
 	bc_timer.freq = clk_get_rate(timer_clk);
 
 	irq = irq_of_parse_and_map(np, 0);
-	if (irq == NO_IRQ) {
+	if (!irq) {
 		pr_err("Failed to map interrupts for '%s'\n", TIMER_NAME);
 		return;
 	}
Signature · 1 line
1.9.1
#2 lore raw

PATCH 2/2 clocksource/drivers/keystone: Fix bad NO_IRQ usage

The current code assumes the 'irq_of_parse_and_map' will return NO_IRQ in case of failure. Unfortunately, the NO_IRQ is not consistent across the different architectures and we must not rely on it.

NO_IRQ is equal to '-1' on ARM and 'irq_of_parse_and_map' returns '0' in case of an error. Hence, the latter won't be detected and will lead to a crash.

Fix this by just checking 'irq' is different from zero.

---
 drivers/clocksource/timer-keystone.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/clocksource/timer-keystone.c +1 -1
index edacf39..1cea08c 100644
@@ -152,7 +152,7 @@ static void __init keystone_timer_init(struct device_node *np)
 	int irq, error;
 
 	irq  = irq_of_parse_and_map(np, 0);
-	if (irq == NO_IRQ) {
+	if (!irq) {
 		pr_err("%s: failed to map interrupts\n", __func__);
 		return;
 	}
Signature · 1 line
1.9.1
Acked-by on v1 2/2
#3 lore raw

Re: [PATCH 2/2] clocksource/drivers/keystone: Fix bad NO_IRQ usage

Quoted 7 lines · Daniel Lezcano

The current code assumes the 'irq_of_parse_and_map' will return NO_IRQ in case of failure. Unfortunately, the NO_IRQ is not consistent across the different architectures and we must not rely on it.

NO_IRQ is equal to '-1' on ARM and 'irq_of_parse_and_map' returns '0' in case of an error. Hence, the latter won't be detected and will lead to a crash.

Quoted 7 lines

Fix this by just checking 'irq' is different from zero.

---
  drivers/clocksource/timer-keystone.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
Tested-by on v1 1/2
#4 lore raw

Re: [PATCH 1/2] clocksource/drivers/rockchip: Fix bad NO_IRQ usage

In reply to Daniel Lezcano

? 2015?09?30? 18:08, Daniel Lezcano ??:

Quoted 10 lines

The current code assumes the 'irq_of_parse_and_map' will return NO_IRQ in case of failure. Unfortunately, the NO_IRQ is not consistent across the different architectures and we must not rely on it.

NO_IRQ is equal to '-1' on ARM and 'irq_of_parse_and_map' returns '0' in case of an error. Hence, the latter won't be detected and will lead to a crash.

Fix this by just checking 'irq' is different from zero.

As Per- discuss, you can free add my test tag.

Quoted 17 lines
---
  drivers/clocksource/rockchip_timer.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
drivers/clocksource/rockchip_timer.c +1 -1
index bb2c2b0..d3c1742 100644
@@ -148,7 +148,7 @@ static void __init rk_timer_init(struct device_node *np)
  	bc_timer.freq = clk_get_rate(timer_clk);
 
  	irq = irq_of_parse_and_map(np, 0);
-	if (irq == NO_IRQ) {
+	if (!irq) {
  		pr_err("Failed to map interrupts for '%s'\n", TIMER_NAME);
  		return;
  	}
Signature · 2 lines
Thanks,
Caesar