Patchwork [U-Boot] ppc: mpc8323erdb: Fix compiler warning

login
register
mail settings
Submitter Marek Vasut
Date July 13, 2013, 10:22 a.m.
Message ID <1373710940-15779-1-git-send-email-marex@denx.de>
Download mbox | patch
Permalink /patch/258828/
State New
Delegated to: Kim Phillips
Headers show

Comments

Marek Vasut - July 13, 2013, 10:22 a.m.
Fix the following warning:

mpc8323erdb.c: In function 'mac_read_from_eeprom':
mpc8323erdb.c:198:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
   if (crc32(crc, buf, 24) == *(unsigned int *)&buf[24]) {
   ^

Size remains unchanged after and before fix:

   text    data     bss     dec     hex filename
 206977   18748   23344  249069   3cced ./u-boot

Note the fix is the crudest possible, but also least intrusive.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Michael Barkowski <michael.barkowski@freescale.com>
Cc: Tom Rini <trini@ti.com>
Cc: Wolfgang Denk <wd@denx.de>
---
 board/freescale/mpc8323erdb/mpc8323erdb.c |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
Wolfgang Denk - July 14, 2013, 5:43 p.m.
Dear Marek Vasut,

In message <1373710940-15779-1-git-send-email-marex@denx.de> you wrote:
> Fix the following warning:
> 
> mpc8323erdb.c: In function 'mac_read_from_eeprom':
> mpc8323erdb.c:198:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
>    if (crc32(crc, buf, 24) == *(unsigned int *)&buf[24]) {
>    ^
> 
> Size remains unchanged after and before fix:
> 
>    text    data     bss     dec     hex filename
>  206977   18748   23344  249069   3cced ./u-boot
> 
> Note the fix is the crudest possible, but also least intrusive.

Please see Timur's review comments to my original patch for this
isssue ([1]). The "unsigned int" should indeed be fixed.

I resubmitted a v2 with the review comments incorporated on July 08,
see [2], but I caught only one part of the needed changes.  V3 sent
right now; see [3].  I'd rather see this added than yours.

Also note that it might be a good idea to add the MPC83xx custodion to
the Cc: list of such patches...


[1] http://article.gmane.org/gmane.comp.boot-loaders.u-boot/163386
[2] http://article.gmane.org/gmane.comp.boot-loaders.u-boot/165266
[3] http://article.gmane.org/gmane.comp.boot-loaders.u-boot/165731


Best regards,

Wolfgang Denk
Marek Vasut - July 14, 2013, 11:32 p.m.
Hello Wolfgang,

> Dear Marek Vasut,
> 
> In message <1373710940-15779-1-git-send-email-marex@denx.de> you wrote:
> > Fix the following warning:
> > 
> > mpc8323erdb.c: In function 'mac_read_from_eeprom':
> > mpc8323erdb.c:198:3: warning: dereferencing type-punned pointer will
> > break strict-aliasing rules [-Wstrict-aliasing]
> > 
> >    if (crc32(crc, buf, 24) == *(unsigned int *)&buf[24]) {
> >    ^
> > 
> > Size remains unchanged after and before fix:
> >    text    data     bss     dec     hex filename
> >  
> >  206977   18748   23344  249069   3cced ./u-boot
> > 
> > Note the fix is the crudest possible, but also least intrusive.
> 
> Please see Timur's review comments to my original patch for this
> isssue ([1]). The "unsigned int" should indeed be fixed.
> 
> I resubmitted a v2 with the review comments incorporated on July 08,
> see [2], but I caught only one part of the needed changes.  V3 sent
> right now; see [3].  I'd rather see this added than yours.

OK, I didn't know you were at it.

> Also note that it might be a good idea to add the MPC83xx custodion to
> the Cc: list of such patches...

Yes, I only added the board maintainer, who's apparently no longer at FSL :(

> [1] http://article.gmane.org/gmane.comp.boot-loaders.u-boot/163386
> [2] http://article.gmane.org/gmane.comp.boot-loaders.u-boot/165266
> [3] http://article.gmane.org/gmane.comp.boot-loaders.u-boot/165731

Best regards,
Marek Vasut

Patch

diff --git a/board/freescale/mpc8323erdb/mpc8323erdb.c b/board/freescale/mpc8323erdb/mpc8323erdb.c
index f29b2f4..710589f 100644
--- a/board/freescale/mpc8323erdb/mpc8323erdb.c
+++ b/board/freescale/mpc8323erdb/mpc8323erdb.c
@@ -184,7 +184,8 @@  void ft_board_setup(void *blob, bd_t *bd)
 #if defined(CONFIG_SYS_I2C_MAC_OFFSET)
 int mac_read_from_eeprom(void)
 {
-	uchar buf[28];
+	uint32_t bbuf[28 / 4];
+	uchar *buf = (uchar *)bbuf;
 	char str[18];
 	int i = 0;
 	unsigned int crc = 0;
@@ -195,7 +196,7 @@  int mac_read_from_eeprom(void)
 		printf("\nEEPROM @ 0x%02x read FAILED!!!\n",
 		       CONFIG_SYS_I2C_EEPROM_ADDR);
 	} else {
-		if (crc32(crc, buf, 24) == *(unsigned int *)&buf[24]) {
+		if (crc32(crc, buf, 24) == bbuf[24 / 4]) {
 			printf("Reading MAC from EEPROM\n");
 			for (i = 0; i < 4; i++) {
 				if (memcmp(&buf[i * 6], "\0\0\0\0\0\0", 6)) {