* [PATCHv2] rtc: pcf8563: fix uninitialized use warning
@ 2014-09-08 15:26 Arnd Bergmann
2014-09-08 15:43 ` Sergei Shtylyov
0 siblings, 1 reply; 4+ messages in thread
From: Arnd Bergmann @ 2014-09-08 15:26 UTC (permalink / raw)
To: linux-arm-kernel
gcc-4.9 found a potential condition under which the 'pending'
variable may be used uninitialized:
drivers/rtc/rtc-pcf8563.c: In function 'pcf8563_irq':
drivers/rtc/rtc-pcf8563.c:173:5: warning: 'pending' may be used uninitialized in this function [-Wmaybe-uninitialized]
This is because in the pcf8563_get_alarm_mode() function, we
check any nonzero return of pcf8563_read_block_data, but
in the irq function we only check for negative values, so
a possible positive value does not get detected if the compiler
chooses not to inline the entire call chain.
Checking for any non-zero value in the interrupt handler as well
is just as correct and lets the compiler know what we are doing,
without needing a bogus initialization.
As pointed out by Sergei Shtylyov, the same code section contains
another bug: an interrupt handler is not supposed to return
an errno value. Let's fix this as well by returning IRQ_NONE
in case of a communication error.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
diff --git a/drivers/rtc/rtc-pcf8563.c b/drivers/rtc/rtc-pcf8563.c
index 5a197d9dc7e7..c2ef0a22ee94 100644
--- a/drivers/rtc/rtc-pcf8563.c
+++ b/drivers/rtc/rtc-pcf8563.c
@@ -167,8 +167,8 @@ static irqreturn_t pcf8563_irq(int irq, void *dev_id)
char pending;
err = pcf8563_get_alarm_mode(pcf8563->client, NULL, &pending);
- if (err < 0)
- return err;
+ if (err)
+ return IRQ_NONE;
if (pending) {
rtc_update_irq(pcf8563->rtc, 1, RTC_IRQF | RTC_AF);
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCHv2] rtc: pcf8563: fix uninitialized use warning
2014-09-08 15:26 [PATCHv2] rtc: pcf8563: fix uninitialized use warning Arnd Bergmann
@ 2014-09-08 15:43 ` Sergei Shtylyov
2014-09-09 12:36 ` [PATCH v3 1/2] " Arnd Bergmann
2014-09-09 12:37 ` [PATCH v3 2/2] rtc: pcf8563: fix pcf8563_irq error return value Arnd Bergmann
0 siblings, 2 replies; 4+ messages in thread
From: Sergei Shtylyov @ 2014-09-08 15:43 UTC (permalink / raw)
To: linux-arm-kernel
On 9/8/2014 7:26 PM, Arnd Bergmann wrote:
> gcc-4.9 found a potential condition under which the 'pending'
> variable may be used uninitialized:
> drivers/rtc/rtc-pcf8563.c: In function 'pcf8563_irq':
> drivers/rtc/rtc-pcf8563.c:173:5: warning: 'pending' may be used uninitialized in this function [-Wmaybe-uninitialized]
> This is because in the pcf8563_get_alarm_mode() function, we
> check any nonzero return of pcf8563_read_block_data, but
> in the irq function we only check for negative values, so
> a possible positive value does not get detected if the compiler
> chooses not to inline the entire call chain.
> Checking for any non-zero value in the interrupt handler as well
> is just as correct and lets the compiler know what we are doing,
> without needing a bogus initialization.
> As pointed out by Sergei Shtylyov, the same code section contains
> another bug: an interrupt handler is not supposed to return
> an errno value. Let's fix this as well by returning IRQ_NONE
> in case of a communication error.
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
If you're fixing both issues in one patch, it probably needs somewhat
modified subject, like "rtc: pcf8356: fix error handling".
WBR, Sergei
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v3 1/2] rtc: pcf8563: fix uninitialized use warning
2014-09-08 15:43 ` Sergei Shtylyov
@ 2014-09-09 12:36 ` Arnd Bergmann
2014-09-09 12:37 ` [PATCH v3 2/2] rtc: pcf8563: fix pcf8563_irq error return value Arnd Bergmann
1 sibling, 0 replies; 4+ messages in thread
From: Arnd Bergmann @ 2014-09-09 12:36 UTC (permalink / raw)
To: linux-arm-kernel
gcc-4.9 found a potential condition under which the 'pending'
variable may be used uninitialized:
drivers/rtc/rtc-pcf8563.c: In function 'pcf8563_irq':
drivers/rtc/rtc-pcf8563.c:173:5: warning: 'pending' may be used uninitialized in this function [-Wmaybe-uninitialized]
This is because in the pcf8563_get_alarm_mode() function, we
check any nonzero return of pcf8563_read_block_data, but
in the irq function we only check for negative values, so
a possible positive value does not get detected if the compiler
chooses not to inline the entire call chain.
Checking for any non-zero value in the interrupt handler as well
is just as correct and lets the compiler know what we are doing,
without needing a bogus initialization.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
diff --git a/drivers/rtc/rtc-pcf8563.c b/drivers/rtc/rtc-pcf8563.c
index 5a197d9dc7e7..3a6f994c4da8 100644
--- a/drivers/rtc/rtc-pcf8563.c
+++ b/drivers/rtc/rtc-pcf8563.c
@@ -167,7 +167,7 @@ static irqreturn_t pcf8563_irq(int irq, void *dev_id)
char pending;
err = pcf8563_get_alarm_mode(pcf8563->client, NULL, &pending);
- if (err < 0)
+ if (err)
return err;
if (pending) {
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v3 2/2] rtc: pcf8563: fix pcf8563_irq error return value
2014-09-08 15:43 ` Sergei Shtylyov
2014-09-09 12:36 ` [PATCH v3 1/2] " Arnd Bergmann
@ 2014-09-09 12:37 ` Arnd Bergmann
1 sibling, 0 replies; 4+ messages in thread
From: Arnd Bergmann @ 2014-09-09 12:37 UTC (permalink / raw)
To: linux-arm-kernel
As pointed out by Sergei Shtylyov, the pcf8563_irq function
contains a bug in the error handling: an interrupt handler
is not supposed to return an errno value but an 'enum
irqreturn'.
Let's fix this by returning IRQ_NONE in case of a communication error.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
diff --git a/drivers/rtc/rtc-pcf8563.c b/drivers/rtc/rtc-pcf8563.c
index 3a6f994c4da8..c2ef0a22ee94 100644
--- a/drivers/rtc/rtc-pcf8563.c
+++ b/drivers/rtc/rtc-pcf8563.c
@@ -168,7 +168,7 @@ static irqreturn_t pcf8563_irq(int irq, void *dev_id)
err = pcf8563_get_alarm_mode(pcf8563->client, NULL, &pending);
if (err)
- return err;
+ return IRQ_NONE;
if (pending) {
rtc_update_irq(pcf8563->rtc, 1, RTC_IRQF | RTC_AF);
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2014-09-09 12:37 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-09-08 15:26 [PATCHv2] rtc: pcf8563: fix uninitialized use warning Arnd Bergmann
2014-09-08 15:43 ` Sergei Shtylyov
2014-09-09 12:36 ` [PATCH v3 1/2] " Arnd Bergmann
2014-09-09 12:37 ` [PATCH v3 2/2] rtc: pcf8563: fix pcf8563_irq error return value Arnd Bergmann
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).