diff options
author | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2019-02-18 18:36:10 +0100 |
---|---|---|
committer | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2019-02-18 18:36:10 +0100 |
commit | 88bbe2bc42de09249cda3b97c240b74c695868d2 (patch) | |
tree | e83b829157321d72d0b20905066567a0665aa0e6 /drivers/clocksource | |
parent | ad6f384a67d710d93b808848c22346c6c22163d8 (diff) | |
parent | 67d52fae61c152a68924d94dcf0c569a96fa2f5d (diff) |
Merge tag 'v4.19.23' into linux-4.19.y-rt
This is the 4.19.23 stable release
Diffstat (limited to 'drivers/clocksource')
-rw-r--r-- | drivers/clocksource/timer-integrator-ap.c | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/drivers/clocksource/timer-integrator-ap.c b/drivers/clocksource/timer-integrator-ap.c index 62d24690ba02..9701107806a7 100644 --- a/drivers/clocksource/timer-integrator-ap.c +++ b/drivers/clocksource/timer-integrator-ap.c @@ -181,8 +181,7 @@ static int __init integrator_ap_timer_init_of(struct device_node *node) int irq; struct clk *clk; unsigned long rate; - struct device_node *pri_node; - struct device_node *sec_node; + struct device_node *alias_node; base = of_io_request_and_map(node, 0, "integrator-timer"); if (IS_ERR(base)) @@ -204,7 +203,18 @@ static int __init integrator_ap_timer_init_of(struct device_node *node) return err; } - pri_node = of_find_node_by_path(path); + alias_node = of_find_node_by_path(path); + + /* + * The pointer is used as an identifier not as a pointer, we + * can drop the refcount on the of__node immediately after + * getting it. + */ + of_node_put(alias_node); + + if (node == alias_node) + /* The primary timer lacks IRQ, use as clocksource */ + return integrator_clocksource_init(rate, base); err = of_property_read_string(of_aliases, "arm,timer-secondary", &path); @@ -213,14 +223,11 @@ static int __init integrator_ap_timer_init_of(struct device_node *node) return err; } + alias_node = of_find_node_by_path(path); - sec_node = of_find_node_by_path(path); - - if (node == pri_node) - /* The primary timer lacks IRQ, use as clocksource */ - return integrator_clocksource_init(rate, base); + of_node_put(alias_node); - if (node == sec_node) { + if (node == alias_node) { /* The secondary timer will drive the clock event */ irq = irq_of_parse_and_map(node, 0); return integrator_clockevent_init(rate, base, irq); |