* [PATCH] mac68k: fix compiler warning
@ 2011-07-17 14:06 Finn Thain
2011-08-13 17:56 ` Geert Uytterhoeven
0 siblings, 1 reply; 2+ messages in thread
From: Finn Thain @ 2011-07-17 14:06 UTC (permalink / raw)
To: linux-m68k; +Cc: Geert Uytterhoeven
The algorithm described in the comment compares two reads from the RTC but
the code actually reads once and compares the result to an uninitialized
value. This causes the compiler to warn, "last_result maybe used
uninitialized". Make the code match the comment, fix the warning and
perhaps improve reliability. Tested on a Quadra 700.
Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
---
arch/m68k/mac/misc.c | 40 +++++++++++++++++++++++-----------------
1 file changed, 23 insertions(+), 17 deletions(-)
Index: linux-2.6.39/arch/m68k/mac/misc.c
===================================================================
--- linux-2.6.39.orig/arch/m68k/mac/misc.c 2011-05-19 14:06:34.000000000 +1000
+++ linux-2.6.39/arch/m68k/mac/misc.c 2011-07-17 19:29:17.000000000 +1000
@@ -304,35 +304,41 @@ static void via_write_pram(int offset, _
static long via_read_time(void)
{
union {
- __u8 cdata[4];
- long idata;
+ __u8 cdata[4];
+ long idata;
} result, last_result;
- int ct;
+ int count = 1;
+
+ via_pram_command(0x81, &last_result.cdata[3]);
+ via_pram_command(0x85, &last_result.cdata[2]);
+ via_pram_command(0x89, &last_result.cdata[1]);
+ via_pram_command(0x8D, &last_result.cdata[0]);
/*
* The NetBSD guys say to loop until you get the same reading
* twice in a row.
*/
- ct = 0;
- do {
- if (++ct > 10) {
- printk("via_read_time: couldn't get valid time, "
- "last read = 0x%08lx and 0x%08lx\n",
- last_result.idata, result.idata);
- break;
- }
-
- last_result.idata = result.idata;
- result.idata = 0;
-
+ while (1) {
via_pram_command(0x81, &result.cdata[3]);
via_pram_command(0x85, &result.cdata[2]);
via_pram_command(0x89, &result.cdata[1]);
via_pram_command(0x8D, &result.cdata[0]);
- } while (result.idata != last_result.idata);
- return result.idata - RTC_OFFSET;
+ if (result.idata == last_result.idata)
+ return result.idata - RTC_OFFSET;
+
+ if (++count > 10)
+ break;
+
+ last_result.idata = result.idata;
+ }
+
+ pr_err("via_read_time: failed to read a stable value; "
+ "got 0x%08lx then 0x%08lx\n",
+ last_result.idata, result.idata);
+
+ return 0;
}
/*
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] mac68k: fix compiler warning
2011-07-17 14:06 [PATCH] mac68k: fix compiler warning Finn Thain
@ 2011-08-13 17:56 ` Geert Uytterhoeven
0 siblings, 0 replies; 2+ messages in thread
From: Geert Uytterhoeven @ 2011-08-13 17:56 UTC (permalink / raw)
To: Finn Thain; +Cc: linux-m68k
On Sun, Jul 17, 2011 at 16:06, Finn Thain <fthain@telegraphics.com.au> wrote:
> The algorithm described in the comment compares two reads from the RTC but
> the code actually reads once and compares the result to an uninitialized
> value. This causes the compiler to warn, "last_result maybe used
> uninitialized". Make the code match the comment, fix the warning and
> perhaps improve reliability. Tested on a Quadra 700.
Thanks, applied. Will queue for 3.2.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2011-08-13 17:56 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-17 14:06 [PATCH] mac68k: fix compiler warning Finn Thain
2011-08-13 17:56 ` Geert Uytterhoeven
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox