Patchwork [U-Boot] drivers/net/e1000_spi.c: Fix build warnings

login
register
mail settings
Submitter Anatolij Gustschin
Date Dec. 20, 2011, 12:29 p.m.
Message ID <1324384143-10198-1-git-send-email-agust@denx.de>
Download mbox | patch
Permalink /patch/132410/
State Accepted
Headers show

Comments

Anatolij Gustschin - Dec. 20, 2011, 12:29 p.m.
Fix:
e1000_spi.c: In function 'spi_free_slave':
e1000_spi.c:115: warning: unused variable 'hw'
e1000_spi.c: In function 'do_e1000_spi':
e1000_spi.c:472: warning: 'checksum' may be used uninitialized in this function
e1000_spi.c:472: note: 'checksum' was declared here

Signed-off-by: Anatolij Gustschin <agust@denx.de>
Cc: Kyle Moffett <Kyle.D.Moffett@boeing.com>
---
 drivers/net/e1000_spi.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)
Kyle Moffett - Dec. 20, 2011, 4:19 p.m.
On Dec 20, 2011, at 07:29, Anatolij Gustschin wrote:
> Fix:
> e1000_spi.c: In function 'spi_free_slave':
> e1000_spi.c:115: warning: unused variable 'hw'
> e1000_spi.c: In function 'do_e1000_spi':
> e1000_spi.c:472: warning: 'checksum' may be used uninitialized in this function
> e1000_spi.c:472: note: 'checksum' was declared here

Acked-by: Kyle Moffett <Kyle.D.Moffett@boeing.com>

This is great, thanks!

I actually thought that the "checksum" fix had already made it
into Wolfgang's tree, but I can't find it now that I'm looking
for it.

The really frustrating thing is that on my test system I have
seen the "unused variable" warning for a while now (although I
was not sure what to do about it), but despite the fact that
the "checksum" variable is very clearly improperly initialized
I don't get that warning out of my compiler.

Oh, right, I'm using GCC 4.4 right now and it needs 4.6+

Ironically enough, I have never had the checksum computation
produce an incorrect result, Linux always thinks the result is
correct.  It must always get a zero in that register somehow.

Cheers,
Kyle Moffett

> Signed-off-by: Anatolij Gustschin <agust@denx.de>
> Cc: Kyle Moffett <Kyle.D.Moffett@boeing.com>
> ---
> drivers/net/e1000_spi.c |    5 +++--
> 1 files changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/e1000_spi.c b/drivers/net/e1000_spi.c
> index 5491780..5f774f4 100644
> --- a/drivers/net/e1000_spi.c
> +++ b/drivers/net/e1000_spi.c
> @@ -1,4 +1,5 @@
> #include "e1000.h"
> +#include <linux/compiler.h>
> 
> /*-----------------------------------------------------------------------
>  * SPI transfer
> @@ -112,7 +113,7 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
> 
> void spi_free_slave(struct spi_slave *spi)
> {
> -	struct e1000_hw *hw = e1000_hw_from_spi(spi);
> +	__maybe_unused struct e1000_hw *hw = e1000_hw_from_spi(spi);
> 	E1000_DBG(hw->nic, "EEPROM SPI access released\n");
> }
> 
> @@ -469,7 +470,7 @@ static int do_e1000_spi_program(cmd_tbl_t *cmdtp, struct e1000_hw *hw,
> static int do_e1000_spi_checksum(cmd_tbl_t *cmdtp, struct e1000_hw *hw,
> 		int argc, char * const argv[])
> {
> -	uint16_t i, length, checksum, checksum_reg;
> +	uint16_t i, length, checksum = 0, checksum_reg;
> 	uint16_t *buffer;
> 	boolean_t upd;
Anatolij Gustschin - Dec. 20, 2011, 4:35 p.m.
On Tue, 20 Dec 2011 10:19:51 -0600
"Moffett, Kyle D" <Kyle.D.Moffett@boeing.com> wrote:

> On Dec 20, 2011, at 07:29, Anatolij Gustschin wrote:
> > Fix:
> > e1000_spi.c: In function 'spi_free_slave':
> > e1000_spi.c:115: warning: unused variable 'hw'
> > e1000_spi.c: In function 'do_e1000_spi':
> > e1000_spi.c:472: warning: 'checksum' may be used uninitialized in this function
> > e1000_spi.c:472: note: 'checksum' was declared here
> 
> Acked-by: Kyle Moffett <Kyle.D.Moffett@boeing.com>
> 
> This is great, thanks!
> 
> I actually thought that the "checksum" fix had already made it
> into Wolfgang's tree, but I can't find it now that I'm looking
> for it.

There is a "checksum" fix in Wolfgang's tree, commit 7a341066
(e1000: fix bugs from recent commits). It is for drivers/net/e1000.c
file, however.

> The really frustrating thing is that on my test system I have
> seen the "unused variable" warning for a while now (although I
> was not sure what to do about it), but despite the fact that
> the "checksum" variable is very clearly improperly initialized
> I don't get that warning out of my compiler.
> 
> Oh, right, I'm using GCC 4.4 right now and it needs 4.6+

I've seen this warning with GCC 4.2.2 and GCC 4.6.1.

Thanks,
Anatolij
Mike Frysinger - Dec. 20, 2011, 5:19 p.m.
On Tuesday 20 December 2011 07:29:03 Anatolij Gustschin wrote:
> -	struct e1000_hw *hw = e1000_hw_from_spi(spi);
> +	__maybe_unused struct e1000_hw *hw = e1000_hw_from_spi(spi);
>  	E1000_DBG(hw->nic, "EEPROM SPI access released\n");

fix the E1000_DBG() macro to use debug() instead
-mike
Wolfgang Denk - Dec. 20, 2011, 10:13 p.m.
Dear Anatolij Gustschin,

In message <1324384143-10198-1-git-send-email-agust@denx.de> you wrote:
> Fix:
> e1000_spi.c: In function 'spi_free_slave':
> e1000_spi.c:115: warning: unused variable 'hw'
> e1000_spi.c: In function 'do_e1000_spi':
> e1000_spi.c:472: warning: 'checksum' may be used uninitialized in this function
> e1000_spi.c:472: note: 'checksum' was declared here
> 
> Signed-off-by: Anatolij Gustschin <agust@denx.de>
> Cc: Kyle Moffett <Kyle.D.Moffett@boeing.com>
> ---
>  drivers/net/e1000_spi.c |    5 +++--
>  1 files changed, 3 insertions(+), 2 deletions(-)

Applied, thanks.

Best regards,

Wolfgang Denk

Patch

diff --git a/drivers/net/e1000_spi.c b/drivers/net/e1000_spi.c
index 5491780..5f774f4 100644
--- a/drivers/net/e1000_spi.c
+++ b/drivers/net/e1000_spi.c
@@ -1,4 +1,5 @@ 
 #include "e1000.h"
+#include <linux/compiler.h>
 
 /*-----------------------------------------------------------------------
  * SPI transfer
@@ -112,7 +113,7 @@  struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
 
 void spi_free_slave(struct spi_slave *spi)
 {
-	struct e1000_hw *hw = e1000_hw_from_spi(spi);
+	__maybe_unused struct e1000_hw *hw = e1000_hw_from_spi(spi);
 	E1000_DBG(hw->nic, "EEPROM SPI access released\n");
 }
 
@@ -469,7 +470,7 @@  static int do_e1000_spi_program(cmd_tbl_t *cmdtp, struct e1000_hw *hw,
 static int do_e1000_spi_checksum(cmd_tbl_t *cmdtp, struct e1000_hw *hw,
 		int argc, char * const argv[])
 {
-	uint16_t i, length, checksum, checksum_reg;
+	uint16_t i, length, checksum = 0, checksum_reg;
 	uint16_t *buffer;
 	boolean_t upd;