Skip to contentSkip to conversation

clocksource/drivers/tango-xtal: Fix incorrect test

PATCH In review Mason 2 participants 8 messages Apr 19, 2016 – Apr 20, 2016 Clocksource, clockevent drivers

lore
Share & tools
lore

Mason

author
#0 lore raw

PATCH 1/1 clocksource/drivers/tango-xtal: Fix incorrect test

From: Marc Gonzalez <[email protected]>

Commit 0881841f7e78 changed "if (ret != 0)" to "if (!ret)"

Fixes 0881841f7e78 ("Replace code by clocksource_mmio_init")
---
 drivers/clocksource/tango_xtal.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/clocksource/tango_xtal.c +3 -3
index 2bcecafdeaea..0464c52e61f1 100644
@@ -22,7 +22,7 @@ static u64 notrace read_sched_clock(void)
 static void __init tango_clocksource_init(struct device_node *np)
 {
 	struct clk *clk;
-	int xtal_freq, ret;
+	int xtal_freq, err;
 
 	xtal_in_cnt = of_iomap(np, 0);
 	if (xtal_in_cnt == NULL) {
@@ -40,9 +40,9 @@ static void __init tango_clocksource_init(struct device_node *np)
 	delay_timer.freq = xtal_freq;
 	delay_timer.read_current_timer = read_xtal_counter;
 
-	ret = clocksource_mmio_init(xtal_in_cnt, "tango-xtal", xtal_freq, 350,
+	err = clocksource_mmio_init(xtal_in_cnt, "tango-xtal", xtal_freq, 350,
 				    32, clocksource_mmio_readl_up);
-	if (!ret) {
+	if (err) {
 		pr_err("%s: registration failed\n", np->full_name);
 		return;
 	}
Signature · 1 line
2.8.1
author
#2 lore raw
Quoted 11 lines · Daniel Lezcano
Quoted 7 lines · Mason

From: Marc Gonzalez <[email protected]>

Commit 0881841f7e78 changed "if (ret != 0)" to "if (!ret)"

Fixes 0881841f7e78 ("Replace code by clocksource_mmio_init")

---

Please resend the patch with the fix only, without s/ret/err/

As I wrote on IRC, I think it is misguided to consider variable renaming as not part of the fix. A properly named variable helps reviewers by communicating intent.

Had I named the variable 'err' in the first place, would you have introduced the bug by writing

  if (!err) {
    pr_err("registration failed");
  }

or would if (!err) have jumped out for an error path? (Not a rhetorical question; if you say it would not have helped, then I guess my mental workflow is different.)

How do others feel about this? Thomas?

Regards.

#3 lore raw
Quoted 21 lines · Mason
Quoted 11 lines · Daniel Lezcano
Quoted 7 lines · Mason

From: Marc Gonzalez <[email protected]>

Commit 0881841f7e78 changed "if (ret != 0)" to "if (!ret)"

Fixes 0881841f7e78 ("Replace code by clocksource_mmio_init")

---

Please resend the patch with the fix only, without s/ret/err/

As I wrote on IRC, I think it is misguided to consider variable renaming as not part of the fix. A properly named variable helps reviewers by communicating intent.

Had I named the variable 'err' in the first place, would you have introduced the bug by writing

Quoted 7 lines
  if (!err) {
    pr_err("registration failed");
  }

or would if (!err) have jumped out for an error path? (Not a rhetorical question; if you say it would not have helped, then I guess my mental workflow is different.)

Ok I won't argue for a stupid variable name.

The point is we are at v4.6-rc4 and even if the change is obvious, it is a good practice to do a simple change:

- if (!ret) {
+ if (ret) {

Why ? Because maintainers have a lot of code to review, and removing the noise as much as possible helps them to make their life easier especially when they have to pay double attention for fixes at RC.

If the 'ret' name is a problem for you, just send another patch for v4.7 to change the name.

-- Daniel

author
#4 lore raw
Quoted 38 lines · Daniel Lezcano
Quoted 21 lines · Mason
Quoted 11 lines · Daniel Lezcano
Quoted 7 lines · Mason

From: Marc Gonzalez <[email protected]>

Commit 0881841f7e78 changed "if (ret != 0)" to "if (!ret)"

Fixes 0881841f7e78 ("Replace code by clocksource_mmio_init")

---

Please resend the patch with the fix only, without s/ret/err/

As I wrote on IRC, I think it is misguided to consider variable renaming as not part of the fix. A properly named variable helps reviewers by communicating intent.

Had I named the variable 'err' in the first place, would you have introduced the bug by writing

Quoted 7 lines
  if (!err) {
    pr_err("registration failed");
  }

or would if (!err) have jumped out for an error path? (Not a rhetorical question; if you say it would not have helped, then I guess my mental workflow is different.)

Ok I won't argue for a stupid variable name.

The point is we are at v4.6-rc4 and even if the change is obvious, it is a good practice to do a simple change:

(quoted diff) +1 -1
-       if (!ret) {
+       if (ret) {
Quoted 6 lines

Why ? Because maintainers have a lot of code to review, and removing the noise as much as possible helps them to make their life easier especially when they have to pay double attention for fixes at RC.

If the 'ret' name is a problem for you, just send another patch for v4.7 to change the name.

I want to be sure I understand, please correct me if I'm wrong.

1) you have already committed the minimal fix above (changing only the test, and keeping the original variable name) and this will be pushed to linux-next for the upcoming v4.6-rc

2) if I want to change the variable name, I can send another patch, to be pushed in the next merge window, for v4.7

Do you agree that 2) would be a (minor) improvement? If not, I will not bother with the patch.

Regards.

#5 lore raw
Quoted 43 lines · Mason
Quoted 42 lines · Daniel Lezcano
Quoted 21 lines · Mason
Quoted 11 lines · Daniel Lezcano
Quoted 7 lines · Mason

From: Marc Gonzalez <[email protected]>

Commit 0881841f7e78 changed "if (ret != 0)" to "if (!ret)"

Fixes 0881841f7e78 ("Replace code by clocksource_mmio_init")

---

Please resend the patch with the fix only, without s/ret/err/

As I wrote on IRC, I think it is misguided to consider variable renaming as not part of the fix. A properly named variable helps reviewers by communicating intent.

Had I named the variable 'err' in the first place, would you have introduced the bug by writing

Quoted 7 lines
  if (!err) {
    pr_err("registration failed");
  }

or would if (!err) have jumped out for an error path? (Not a rhetorical question; if you say it would not have helped, then I guess my mental workflow is different.)

Ok I won't argue for a stupid variable name.

The point is we are at v4.6-rc4 and even if the change is obvious, it is a good practice to do a simple change:

(quoted diff) +1 -1
-       if (!ret) {
+       if (ret) {

Why ? Because maintainers have a lot of code to review, and removing the noise as much as possible helps them to make their life easier especially when they have to pay double attention for fixes at RC.

Quoted 8 lines
Quoted 2 lines

If the 'ret' name is a problem for you, just send another patch for v4.7 to change the name.

I want to be sure I understand, please correct me if I'm wrong.

1) you have already committed the minimal fix above (changing only the test, and keeping the original variable name) and this will be pushed to linux-next for the upcoming v4.6-rc

yes.

Quoted 2 lines

2) if I want to change the variable name, I can send another patch, to be pushed in the next merge window, for v4.7

yes.

Quoted 2 lines

Do you agree that 2) would be a (minor) improvement? If not, I will not bother with the patch.

Usually people are using 'ret'

grep -r "ret =" drivers/ | wc -l
76754

or are using 'err'

grep -r "err =" drivers/ | wc -l
27940

Up to you ...

Thanks.

-- Daniel

author
#6 lore raw
Quoted 47 lines · Daniel Lezcano
Quoted 46 lines · Mason
Quoted 44 lines · Daniel Lezcano
Quoted 21 lines · Mason
Quoted 11 lines · Daniel Lezcano
Quoted 7 lines · Mason

From: Marc Gonzalez <[email protected]>

Commit 0881841f7e78 changed "if (ret != 0)" to "if (!ret)"

Fixes 0881841f7e78 ("Replace code by clocksource_mmio_init")

---

Please resend the patch with the fix only, without s/ret/err/

As I wrote on IRC, I think it is misguided to consider variable renaming as not part of the fix. A properly named variable helps reviewers by communicating intent.

Had I named the variable 'err' in the first place, would you have introduced the bug by writing

Quoted 7 lines
  if (!err) {
    pr_err("registration failed");
  }

or would if (!err) have jumped out for an error path? (Not a rhetorical question; if you say it would not have helped, then I guess my mental workflow is different.)

Ok I won't argue for a stupid variable name.

The point is we are at v4.6-rc4 and even if the change is obvious, it is a good practice to do a simple change:

(quoted diff) +1 -1
-       if (!ret) {
+       if (ret) {

Why ? Because maintainers have a lot of code to review, and removing the noise as much as possible helps them to make their life easier especially when they have to pay double attention for fixes at RC.

If the 'ret' name is a problem for you, just send another patch for v4.7 to change the name.

Quoted 7 lines
Quoted 5 lines

I want to be sure I understand, please correct me if I'm wrong.

1) you have already committed the minimal fix above (changing only the test, and keeping the original variable name) and this will be pushed to linux-next for the upcoming v4.6-rc

yes.

Thanks for the quick turn around.

Quoted 13 lines
Quoted 2 lines

2) if I want to change the variable name, I can send another patch, to be pushed in the next merge window, for v4.7

yes.

Quoted 2 lines

Do you agree that 2) would be a (minor) improvement? If not, I will not bother with the patch.

Usually people are using 'ret'

grep -r "ret =" drivers/ | wc -l
76754

Quoted 6 lines

or are using 'err'

grep -r "err =" drivers/ | wc -l
27940

Up to you ...

About the error handling... you advised against panic() because there might be other clock sources.

Does it makes sense to give up registering sched_clock and delay_timer when the clocksource registration fails?

Regards.

#7 lore raw

[ ... ]

Quoted 5 lines

About the error handling... you advised against panic() because there might be other clock sources.

Does it makes sense to give up registering sched_clock and delay_timer when the clocksource registration fails?

Actually, all the problem is coming from the CLOCKSOURCE_OF_DECLARE where the init_func is a void (*init_func)(struct device_node *) signature, thus not allowing to return a value.

Because of that, the init code path of the different drivers are somewhat fuzzy when an error occurs.

If the function could return an error code, then the drivers would be written in a way to catch and handle the errors gracefully. That implies the clocksource-probe() routine will be able to detect when the init_func() is failing, trace it and count if one clocksource/clockevent succeed at boot time.

So because the latter, it would make sense to give up registering and leave a clean place in the init function when something is going wrong.

-- Daniel