Browse Source

Fix incorrect use of getenv() before relocation

A large number of boards incorrectly used getenv() in their board init
code running before relocation.  In some cases this caused U-Boot to
hang when certain environment variables grew too long.
Fix the code to use getenv_r().

Signed-off-by: Wolfgang Denk <wd@denx.de>
Cc: Stefan Roese <sr@denx.de>
Cc: The LEOX team <team@leox.org>
Cc: Michael Schwingen <michael@schwingen.org>
Cc: Georg Schardt <schardt@team-ctech.de>
Cc: Werner Pfister <Pfister_Werner@intercontrol.de>
Cc: Dirk Eibach <eibach@gdsys.de>
Cc: Peter De Schrijver <p2@mind.be>
Cc: John Zhan <zhanz@sinovee.com>
Cc: Rishi Bhattacharya <rishi@ti.com>
Cc: Peter Tyser <ptyser@xes-inc.com>
Wolfgang Denk 13 years ago
parent
commit
f0c0b3a9e6
61 changed files with 323 additions and 259 deletions
  1. 3 2
      board/LEOX/elpt860/elpt860.c
  2. 6 4
      board/RRvision/RRvision.c
  3. 5 4
      board/actux1/actux1.c
  4. 5 4
      board/actux2/actux2.c
  5. 4 3
      board/actux3/actux3.c
  6. 4 3
      board/amcc/acadia/acadia.c
  7. 4 3
      board/amcc/bamboo/bamboo.c
  8. 4 3
      board/amcc/bluestone/bluestone.c
  9. 4 3
      board/amcc/bubinga/bubinga.c
  10. 4 3
      board/amcc/canyonlands/canyonlands.c
  11. 4 3
      board/amcc/ebony/ebony.c
  12. 4 3
      board/amcc/katmai/katmai.c
  13. 4 3
      board/amcc/kilauea/kilauea.c
  14. 4 3
      board/amcc/luan/luan.c
  15. 4 3
      board/amcc/makalu/makalu.c
  16. 5 4
      board/amcc/ocotea/ocotea.c
  17. 4 3
      board/amcc/redwood/redwood.c
  18. 4 3
      board/amcc/sequoia/sequoia.c
  19. 4 3
      board/amcc/taihu/taihu.c
  20. 5 4
      board/amcc/taishan/taishan.c
  21. 4 3
      board/amcc/walnut/walnut.c
  22. 4 3
      board/amcc/yosemite/yosemite.c
  23. 4 3
      board/amcc/yucca/yucca.c
  24. 14 10
      board/amirix/ap1000/ap1000.c
  25. 8 9
      board/avnet/fx12mm/fx12mm.c
  26. 6 4
      board/c2mon/c2mon.c
  27. 4 3
      board/digsy_mtc/digsy_mtc.c
  28. 7 9
      board/etx094/etx094.c
  29. 4 3
      board/gdsys/405ep/dlvision-10g.c
  30. 4 3
      board/gdsys/405ep/io.c
  31. 4 3
      board/gdsys/405ep/iocon.c
  32. 4 3
      board/gdsys/dlvision/dlvision.c
  33. 4 3
      board/gdsys/gdppc440etx/gdppc440etx.c
  34. 4 3
      board/gdsys/intip/intip.c
  35. 4 3
      board/gdsys/neo/neo.c
  36. 4 4
      board/gw8260/gw8260.c
  37. 7 9
      board/hermes/hermes.c
  38. 4 3
      board/ixdp425/ixdp425.c
  39. 4 3
      board/lwmon5/lwmon5.c
  40. 4 3
      board/micronas/vct/vct.c
  41. 7 11
      board/ml2/ml2.c
  42. 4 3
      board/mosaixtech/icon/icon.c
  43. 4 3
      board/pcs440ep/pcs440ep.c
  44. 5 4
      board/prodrive/alpr/alpr.c
  45. 4 3
      board/prodrive/p3mx/p3mx.c
  46. 4 3
      board/prodrive/p3p440/p3p440.c
  47. 4 3
      board/prodrive/pdnb3/pdnb3.c
  48. 4 3
      board/quad100hd/quad100hd.c
  49. 6 4
      board/quantum/quantum.c
  50. 5 4
      board/rbc823/rbc823.c
  51. 7 5
      board/socrates/socrates.c
  52. 17 15
      board/svm_sc8xx/svm_sc8xx.c
  53. 4 3
      board/t3corp/t3corp.c
  54. 4 3
      board/ti/omap5912osk/omap5912osk.c
  55. 4 4
      board/tqc/tqm8260/tqm8260.c
  56. 6 2
      board/tqc/tqm8272/tqm8272.c
  57. 11 8
      board/tqc/tqm85xx/tqm85xx.c
  58. 10 8
      board/tqc/tqm8xx/tqm8xx.c
  59. 11 6
      board/xes/common/board.c
  60. 11 10
      board/xes/xpedite1000/xpedite1000.c
  61. 4 3
      board/zeus/zeus.c

+ 3 - 2
board/LEOX/elpt860/elpt860.c

@@ -169,9 +169,10 @@ int board_early_init_f (void)
 
 int checkboard (void)
 {
-	char *s = getenv ("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
-	if (!s || strncmp (s, "ELPT860", 7))
+	if ((i < 0) || strncmp(buf, "ELPT860", 7))
 		printf ("### No HW ID - assuming ELPT860\n");
 
 	return (0);		/* success */

+ 6 - 4
board/RRvision/RRvision.c

@@ -93,14 +93,16 @@ const uint sdram_table[] =
 
 int checkboard (void)
 {
-	char *s = getenv ("serial#");
+	char buf[64];
+	int i;
+	int l = getenv_f("serial#", buf, sizeof(buf));
 
 	puts ("Board: RRvision ");
 
-	for (; s && *s; ++s) {
-		if (*s == ' ')
+	for (i=0; i < l; ++i) {
+		if (buf[i] == ' ')
 			break;
-		putc (*s);
+		putc (buf[i]);
 	}
 
 	putc ('\n');

+ 5 - 4
board/actux1/actux1.c

@@ -89,14 +89,15 @@ int board_init (void)
  */
 int checkboard (void)
 {
-	char *s = getenv ("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	puts ("Board: AcTux-1 rev.");
 	putc (ACTUX1_BOARDREL + 'A' - 1);
 
-	if (s != NULL) {
-		puts (", serial# ");
-		puts (s);
+	if (i > 0) {
+		puts(", serial# ");
+		puts(buf);
 	}
 	putc ('\n');
 

+ 5 - 4
board/actux2/actux2.c

@@ -96,14 +96,15 @@ int board_init (void)
  */
 int checkboard (void)
 {
-	char *s = getenv ("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	puts ("Board: AcTux-2 rev.");
 	putc (ACTUX2_BOARDREL + 'A' - 1);
 
-	if (s != NULL) {
-		puts (", serial# ");
-		puts (s);
+	if (i > 0) {
+		puts(", serial# ");
+		puts(buf);
 	}
 	putc ('\n');
 

+ 4 - 3
board/actux3/actux3.c

@@ -111,14 +111,15 @@ int board_init (void)
  */
 int checkboard (void)
 {
-	char *s = getenv ("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	puts ("Board: AcTux-3 rev.");
 	putc (ACTUX3_BOARDREL + 'A' - 1);
 
-	if (s != NULL) {
+	if (i > 0) {
 		puts (", serial# ");
-		puts (s);
+		puts (buf);
 	}
 	putc ('\n');
 

+ 4 - 3
board/amcc/acadia/acadia.c

@@ -102,15 +102,16 @@ int misc_init_f(void)
  */
 int checkboard(void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 	u8 rev;
 
 	rev = in8(CONFIG_SYS_CPLD_BASE + 0);
 	printf("Board: Acadia - AMCC PPC405EZ Evaluation Board, Rev. %X", rev);
 
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');
 

+ 4 - 3
board/amcc/bamboo/bamboo.c

@@ -440,12 +440,13 @@ int board_early_init_f(void)
 
 int checkboard(void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	printf("Board: Bamboo - AMCC PPC440EP Evaluation Board");
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');
 

+ 4 - 3
board/amcc/bluestone/bluestone.c

@@ -78,13 +78,14 @@ int board_early_init_f(void)
 
 int checkboard(void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	puts("Board: Bluestone Evaluation Board");
 
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');
 

+ 4 - 3
board/amcc/bubinga/bubinga.c

@@ -53,13 +53,14 @@ int board_early_init_f(void)
  */
 int checkboard(void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	puts("Board: Bubinga - AMCC PPC405EP Evaluation Board");
 
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');
 

+ 4 - 3
board/amcc/canyonlands/canyonlands.c

@@ -293,7 +293,8 @@ int checkboard(void)
 {
 	struct board_bcsr *bcsr_data =
 		(struct board_bcsr *)CONFIG_SYS_BCSR_BASE;
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	if (pvr_460ex()) {
 		printf("Board: Canyonlands - AMCC PPC460EX Evaluation Board");
@@ -319,9 +320,9 @@ int checkboard(void)
 
 	printf(", Rev. %X", in_8(&bcsr_data->cpld_rev));
 
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');
 

+ 4 - 3
board/amcc/ebony/ebony.c

@@ -92,12 +92,13 @@ int board_early_init_f(void)
 
 int checkboard(void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	printf("Board: Ebony - AMCC PPC440GP Evaluation Board");
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');
 

+ 4 - 3
board/amcc/katmai/katmai.c

@@ -236,12 +236,13 @@ int board_early_init_f (void)
 
 int checkboard (void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	printf("Board: Katmai - AMCC 440SPe Evaluation Board");
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');
 

+ 4 - 3
board/amcc/kilauea/kilauea.c

@@ -307,16 +307,17 @@ int board_pcie_last(void)
 
 int checkboard (void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	if (is_405exr())
 		printf("Board: Haleakala - AMCC PPC405EXr Evaluation Board");
 	else
 		printf("Board: Kilauea - AMCC PPC405EX Evaluation Board");
 
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	printf(" (CPLD rev. %ld)\n", gd->board_type);
 

+ 4 - 3
board/amcc/luan/luan.c

@@ -105,13 +105,14 @@ int misc_init_r(void)
  ************************************************************************/
 int checkboard(void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	printf("Board: Luan - AMCC PPC440SP Evaluation Board");
 
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');
 

+ 4 - 3
board/amcc/makalu/makalu.c

@@ -224,13 +224,14 @@ int misc_init_r(void)
 
 int checkboard (void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	printf("Board: Makalu - AMCC PPC405EX Evaluation Board");
 
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');
 

+ 5 - 4
board/amcc/ocotea/ocotea.c

@@ -200,12 +200,13 @@ int board_early_init_f (void)
 
 int checkboard (void)
 {
-	char *s = getenv ("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	printf ("Board: Ocotea - AMCC PPC440GX Evaluation Board");
-	if (s != NULL) {
-		puts (", serial# ");
-		puts (s);
+	if (i > 0) {
+		puts(", serial# ");
+		puts(buf);
 	}
 	putc ('\n');
 

+ 4 - 3
board/amcc/redwood/redwood.c

@@ -200,12 +200,13 @@ int board_early_init_f(void)
 
 int checkboard(void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	printf("Board: Redwood - AMCC 460SX Reference Board");
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');
 

+ 4 - 3
board/amcc/sequoia/sequoia.c

@@ -331,7 +331,8 @@ int misc_init_r(void)
 
 int checkboard(void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 	u8 rev;
 	u32 clock = get_async_pci_freq();
 
@@ -344,9 +345,9 @@ int checkboard(void)
 	rev = in_8((void *)(CONFIG_SYS_BCSR_BASE + 0));
 	printf(", Rev. %X, PCI-Async=%d MHz", rev, clock / 1000000);
 
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');
 

+ 4 - 3
board/amcc/taihu/taihu.c

@@ -65,13 +65,14 @@ int board_early_init_f(void)
  */
 int checkboard(void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	puts("Board: Taihu - AMCC PPC405EP Evaluation Board");
 
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');
 

+ 5 - 4
board/amcc/taishan/taishan.c

@@ -193,12 +193,13 @@ int misc_init_r(void)
 
 int checkboard (void)
 {
-	char *s = getenv ("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	printf ("Board: Taishan - AMCC PPC440GX Evaluation Board");
-	if (s != NULL) {
-		puts (", serial# ");
-		puts (s);
+	if (i > 0) {
+		puts(", serial# ");
+		puts(buf);
 	}
 	putc ('\n');
 

+ 4 - 3
board/amcc/walnut/walnut.c

@@ -67,7 +67,8 @@ int board_early_init_f(void)
  */
 int checkboard(void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 	uint pvr = get_pvr();
 
 	if (pvr == PVR_405GPR_RB) {
@@ -76,9 +77,9 @@ int checkboard(void)
 		puts("Board: Walnut - AMCC PPC405GP Evaluation Board");
 	}
 
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');
 

+ 4 - 3
board/amcc/yosemite/yosemite.c

@@ -188,7 +188,8 @@ int misc_init_r (void)
 
 int checkboard(void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 	u8 rev;
 	u32 clock = get_async_pci_freq();
 
@@ -201,9 +202,9 @@ int checkboard(void)
 	rev = in_8((void *)(CONFIG_SYS_BCSR_BASE + 0));
 	printf(", Rev. %X, PCI-Async=%d MHz", rev, clock / 1000000);
 
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');
 

+ 4 - 3
board/amcc/yucca/yucca.c

@@ -542,12 +542,13 @@ int board_early_init_f (void)
 
 int checkboard (void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	printf("Board: Yucca - AMCC 440SPe Evaluation Board");
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');
 

+ 14 - 10
board/amirix/ap1000/ap1000.c

@@ -37,8 +37,8 @@ int board_pre_init (void)
 /** serial number and platform display at startup */
 int checkboard (void)
 {
-	char *s = getenv ("serial#");
-	char *e;
+	char buf[64];
+	int l = getenv_f("serial#", buf, sizeof(buf));
 
 	/* After a loadace command, the SystemAce control register is left in a wonky state. */
 	/* this code did not work in board_pre_init */
@@ -115,17 +115,19 @@ int checkboard (void)
 
 	puts ("Serial#: ");
 
-	if (!s) {
+	if (l < 0) {
 		printf ("### No HW ID - assuming AMIRIX");
 	} else {
-		for (e = s; *e; ++e) {
-			if (*e == ' ')
+		int i;
+
+		for (i = 0; i < l; ++i) {
+			if (buf[i] == ' ') {
+				buf[i] = '\0';
 				break;
+			}
 		}
 
-		for (; s < e; ++s) {
-			putc (*s);
-		}
+		puts(buf);
 	}
 
 	putc ('\n');
@@ -136,9 +138,11 @@ int checkboard (void)
 
 phys_size_t initdram (int board_type)
 {
-	char *s = getenv ("dramsize");
+	char buf[64];
+	int i = getenv_f("dramsize", buf, sizeof(buf));
 
-	if (s != NULL) {
+	if (i > 0) {
+		char *s = buf;
 		if ((s[0] == '0') && ((s[1] == 'x') || (s[1] == 'X'))) {
 			s += 2;
 		}

+ 8 - 9
board/avnet/fx12mm/fx12mm.c

@@ -32,20 +32,19 @@
 
 int checkboard(void)
 {
-	char tmp[64];
-	char *s, *e;
-	int i = getenv_f("serial", tmp, sizeof(tmp));
+	char buf[64];
+	int i;
+	int l = getenv_f("serial#", buf, sizeof(buf));
 
-	if (i < 0) {
+	if (l < 0) {
 		printf("Avnet Virtex4 FX12 with no serial #");
 	} else {
-		for (e = tmp; *e; ++e) {
-			if (*e == ' ')
+		printf("Avnet Virtex4 FX12 Minimodul # ");
+		for (i = 0; i < l; ++i) {
+			if (buf[i] == ' ')
 				break;
+			putc(buf[i]);
 		}
-		printf("Avnet Virtex4 FX12 Minimodul # ");
-		for (s = tmp; s < e; ++s)
-			putc(*s);
 	}
 	putc('\n');
 	return 0;

+ 6 - 4
board/c2mon/c2mon.c

@@ -91,14 +91,16 @@ const uint sdram_table[] =
 
 int checkboard (void)
 {
-	unsigned char *s = (unsigned char *)getenv ("serial#");
+	char buf[64];
+	int i;
+	int l = getenv_f("serial#", buf, sizeof(buf));
 
 	puts ("Board: TTTech C2MON ");
 
-	for (; s && *s; ++s) {
-		if (*s == ' ')
+	for (i = 0; i < l;  ++i) {
+		if (buf[i] == ' ')
 			break;
-		putc (*s);
+		putc (buf[i]);
 	}
 
 	putc ('\n');

+ 4 - 3
board/digsy_mtc/digsy_mtc.c

@@ -191,15 +191,16 @@ phys_size_t initdram(int board_type)
 
 int checkboard(void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	puts ("Board: InterControl digsyMTC");
 #if defined(CONFIG_DIGSY_REV5)
 	puts (" rev5");
 #endif
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');
 

+ 7 - 9
board/etx094/etx094.c

@@ -92,8 +92,9 @@ const uint sdram_table[] = {
 
 int checkboard (void)
 {
-	char *s = getenv ("serial#");
-	char *e;
+	char buf[64];
+	int i;
+	int l = getenv_f("serial#", buf, sizeof(buf));
 
 	puts ("Board: ");
 
@@ -103,19 +104,16 @@ int checkboard (void)
 	gd->board_type = 1; /* 1 = 1SDRAM-Device */
 #endif
 
-	if (!s || strncmp (s, "ETX_", 4)) {
+	if (l < 0 || strncmp(buf, "ETX_", 4)) {
 		puts ("### No HW ID - assuming ETX_094\n");
 		read_hw_vers ();
 		return (0);
 	}
 
-	for (e = s; *e; ++e) {
-		if (*e == ' ')
+	for (i = 0; i < l; ++i) {
+		if (buf[i] == ' ')
 			break;
-	}
-
-	for (; s < e; ++s) {
-		putc (*s);
+		putc(buf[i]);
 	}
 	putc ('\n');
 

+ 4 - 3
board/gdsys/405ep/dlvision-10g.c

@@ -225,15 +225,16 @@ static void print_fpga_info(unsigned dev)
  */
 int checkboard(void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	printf("Board: ");
 
 	printf("DLVision 10G");
 
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 
 	puts("\n");

+ 4 - 3
board/gdsys/405ep/io.c

@@ -87,8 +87,9 @@ err_out:
  */
 int checkboard(void)
 {
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 	ihs_fpga_t *fpga = (ihs_fpga_t *) CONFIG_SYS_FPGA_BASE(0);
-	char *s = getenv("serial#");
 	u16 versions = in_le16(&fpga->versions);
 	u16 fpga_version = in_le16(&fpga->fpga_version);
 	u16 fpga_features = in_le16(&fpga->fpga_features);
@@ -106,9 +107,9 @@ int checkboard(void)
 
 	printf("CATCenter Io");
 
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	puts("\n       ");
 

+ 4 - 3
board/gdsys/405ep/iocon.c

@@ -69,8 +69,9 @@ enum {
  */
 int checkboard(void)
 {
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 	ihs_fpga_t *fpga = (ihs_fpga_t *) CONFIG_SYS_FPGA_BASE(0);
-	char *s = getenv("serial#");
 	u16 versions = in_le16(&fpga->versions);
 	u16 fpga_version = in_le16(&fpga->fpga_version);
 	u16 fpga_features = in_le16(&fpga->fpga_features);
@@ -98,9 +99,9 @@ int checkboard(void)
 
 	printf("IoCon");
 
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	puts("\n       ");
 

+ 4 - 3
board/gdsys/dlvision/dlvision.c

@@ -75,7 +75,8 @@ int misc_init_r(void)
  */
 int checkboard(void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 	u8 channel2_msr = in_8((void *)CONFIG_UART_BASE + 0x26);
 	u8 channel3_msr = in_8((void *)CONFIG_UART_BASE + 0x36);
 	u8 channel7_msr = in_8((void *)CONFIG_UART_BASE + 0x76);
@@ -108,9 +109,9 @@ int checkboard(void)
 		break;
 	}
 
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	puts("\n       ");
 

+ 4 - 3
board/gdsys/gdppc440etx/gdppc440etx.c

@@ -145,13 +145,14 @@ int misc_init_r(void)
 
 int checkboard(void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	printf("Board: GDPPC440ETX - G&D PPC440EP/GR ETX-module");
 
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');
 

+ 4 - 3
board/gdsys/intip/intip.c

@@ -124,7 +124,8 @@ int get_cpu_num(void)
 
 int checkboard(void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 #ifdef CONFIG_DEVCONCENTER
 	printf("Board: DevCon-Center");
@@ -132,9 +133,9 @@ int checkboard(void)
 	printf("Board: Intip");
 #endif
 
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');
 

+ 4 - 3
board/gdsys/neo/neo.c

@@ -53,7 +53,8 @@ int board_early_init_f(void)
  */
 int checkboard(void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 	u16 val = in_le16((void *)CONFIG_FPGA_BASE + 2);
 	u8 unit_type;
 	u8 hardware_cpu_ports;
@@ -62,9 +63,9 @@ int checkboard(void)
 
 	printf("Board: CATCenter Neo");
 
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	puts("\n       ");
 

+ 4 - 4
board/gw8260/gw8260.c

@@ -214,13 +214,13 @@ const iop_conf_t iop_conf_tab[4][32] = {
 /*********************************************************************/
 int checkboard (void)
 {
-	char *str;
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	puts ("Board: Advent Networks gw8260\n");
 
-	str = getenv ("serial#");
-	if (str != NULL) {
-		printf ("SN:    %s\n", str);
+	if (i > 0) {
+		printf("SN:    %s\n", buf);
 	}
 	return 0;
 }

+ 7 - 9
board/hermes/hermes.c

@@ -107,21 +107,19 @@ const uint sdram_table[] = {
 
 int checkboard (void)
 {
-	char *s = getenv ("serial#");
-	char *e;
+	char buf[64];
+	int i;
+	int l = getenv_f("serial#", buf, sizeof(buf));
 
 	puts ("Board: ");
 
-	if (!s || strncmp (s, "HERMES", 6)) {
+	if (l < 0 || strncmp(buf, "HERMES", 6)) {
 		puts ("### No HW ID - assuming HERMES-PRO");
 	} else {
-		for (e = s; *e; ++e) {
-			if (*e == ' ')
+		for (i = 0; i < l; i++) {
+			if (buf[i] == ' ')
 				break;
-		}
-
-		for (; s < e; ++s) {
-			putc (*s);
+			putc (buf[i]);
 		}
 	}
 

+ 4 - 3
board/ixdp425/ixdp425.c

@@ -83,7 +83,8 @@ int board_init (void)
  */
 int checkboard(void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 #ifdef CONFIG_IXDPG425
 	puts("Board: IXDPG425 - Intel Network Gateway Reference Platform");
@@ -91,9 +92,9 @@ int checkboard(void)
 	puts("Board: IXDP425 - Intel Development Platform");
 #endif
 
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');
 

+ 4 - 3
board/lwmon5/lwmon5.c

@@ -333,13 +333,14 @@ int misc_init_r(void)
 
 int checkboard(void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	puts("Board: lwmon5");
 
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');
 

+ 4 - 3
board/micronas/vct/vct.c

@@ -80,8 +80,9 @@ phys_size_t initdram(int board_type)
 
 int checkboard(void)
 {
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 	u32 config0 = read_c0_prid();
-	char *s = getenv("serial#");
 
 	if ((config0 & 0xff0000) == PRID_COMP_LEGACY
 	    && (config0 & 0xff00) == PRID_IMP_LX4280) {
@@ -108,9 +109,9 @@ int checkboard(void)
 	}
 
 	printf("Board: Micronas VCT " BOARD_NAME BOARD_NAME_ADD);
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');
 

+ 7 - 11
board/ml2/ml2.c

@@ -30,23 +30,19 @@ int board_early_init_f (void)
 
 int checkboard (void)
 {
-	char *s = getenv ("serial#");
-	char *e;
+	char buf[64];
+	int i;
+	int l = getenv_f("serial#", buf, sizeof(buf));
 
-	if (!s || strncmp (s, "ML2", 9)) {
+	if (l < 0 || strncmp(buf, "ML2", 9)) {
 		printf ("### No HW ID - assuming ML2");
 	} else {
-		for (e = s; *e; ++e) {
-			if (*e == ' ')
+		for (i = 0; i < l; i++) {
+			if (buf[i] == ' ')
 				break;
-		}
-
-		for (; s < e; ++s) {
-			putc (*s);
+			putc(buf[i]);
 		}
 	}
-
-
 	putc ('\n');
 
 	return (0);

+ 4 - 3
board/mosaixtech/icon/icon.c

@@ -275,12 +275,13 @@ int board_early_init_r(void)
 
 int checkboard(void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	printf("Board: ICON");
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');
 

+ 4 - 3
board/pcs440ep/pcs440ep.c

@@ -509,12 +509,13 @@ int misc_init_r (void)
 
 int checkboard(void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	printf("Board: PCS440EP");
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');
 

+ 5 - 4
board/prodrive/alpr/alpr.c

@@ -133,12 +133,13 @@ static int board_rev(void)
 
 int checkboard (void)
 {
-	char *s = getenv ("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	printf ("Board: ALPR");
-	if (s != NULL) {
-		puts (", serial# ");
-		puts (s);
+	if (i > 0) {
+		puts(", serial# ");
+		puts(buf);
 	}
 	printf(" (Rev. %d)\n", board_rev());
 

+ 4 - 3
board/prodrive/p3mx/p3mx.c

@@ -335,13 +335,14 @@ void after_reloc (ulong dest_addr, gd_t * gd)
 
 int checkboard (void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	printf("Board: %s", CONFIG_SYS_BOARD_NAME);
 
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');
 

+ 4 - 3
board/prodrive/p3p440/p3p440.c

@@ -122,12 +122,13 @@ int board_early_init_f(void)
 
 int checkboard(void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	printf("Board: P3P440");
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 
 	if (is_monarch()) {

+ 4 - 3
board/prodrive/pdnb3/pdnb3.c

@@ -101,13 +101,14 @@ int board_init(void)
  */
 int checkboard(void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	puts("Board: PDNB3");
 
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');
 

+ 4 - 3
board/quad100hd/quad100hd.c

@@ -58,16 +58,17 @@ int board_early_init_f(void)
  */
 int checkboard(void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 #ifdef DISPLAY_BOARD_INFO
 	sys_info_t sysinfo;
 #endif
 
 	puts("Board: Quad100hd");
 
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');
 

+ 6 - 4
board/quantum/quantum.c

@@ -87,14 +87,16 @@ const uint sdram_table[] = {
 
 int checkboard (void)
 {
-	char *s = getenv ("serial#");
+	char buf[64];
+	int i;
+	int l = getenv_f("serial#", buf, sizeof(buf));
 
 	puts ("Board QUANTUM, Serial No: ");
 
-	for (; s && *s; ++s) {
-		if (*s == ' ')
+	for (i = 0; i < l; ++i) {
+		if (buf[i] == ' ')
 			break;
-		putc (*s);
+		putc (buf[i]);
 	}
 	putc ('\n');
 	return (0);		/* success */

+ 5 - 4
board/rbc823/rbc823.c

@@ -127,15 +127,16 @@ const uint static_table[] =
 
 int checkboard (void)
 {
-	char *s = getenv ("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
-	if (!s || strncmp (s, "TQM8", 4)) {
+	if (i < 0 || strncmp(buf, "TQM8", 4)) {
 		printf ("### No HW ID - assuming RBC823\n");
 		return (0);
 	}
 
-	puts (s);
-	putc ('\n');
+	puts(buf);
+	putc('\n');
 
 	return (0);
 }

+ 7 - 5
board/socrates/socrates.c

@@ -52,15 +52,17 @@ ulong flash_get_size (ulong base, int banknum);
 int checkboard (void)
 {
 	volatile ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
-
-	char *src;
+	char buf[64];
 	int f;
-	char *s = getenv("serial#");
+	int i = getenv_f("serial#", buf, sizeof(buf));
+#ifdef CONFIG_PCI
+	char *src;
+#endif
 
 	puts("Board: Socrates");
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');
 

+ 17 - 15
board/svm_sc8xx/svm_sc8xx.c

@@ -75,27 +75,29 @@ const uint sdram_table[] =
  * Return 1 for "SC8xx" type, 0 else.
  */
 
-int checkboard (void)
+int checkboard(void)
 {
-    char *s = getenv("serial#");
-    int board_type;
+	char buf[64];
+	int i;
+	int l = getenv_f("serial#", buf, sizeof(buf));
+	int board_type;
 
-    if (!s || strncmp(s, "SVM8", 4)) {
-	printf ("### No HW ID - assuming SVM SC8xx\n");
-	return (0);
-    }
+	if (l < 0 || strncmp(buf, "SVM8", 4)) {
+		printf("### No HW ID - assuming SVM SC8xx\n");
+		return (0);
+	}
 
-    board_type = 1;
+	board_type = 1;
 
-    for (; *s; ++s) {
-	if (*s == ' ')
-	    break;
-	putc (*s);
-    }
+	for (i = 0; i < l; ++i) {
+		if (buf[i] == ' ')
+			break;
+		putc(buf[i]);
+	}
 
-    putc ('\n');
+	putc('\n');
 
-    return (0);
+	return (0);
 }
 
 /* ------------------------------------------------------------------------- */

+ 4 - 3
board/t3corp/t3corp.c

@@ -89,13 +89,14 @@ int board_early_init_f(void)
 
 int checkboard(void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	printf("Board: T3CORP");
 
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');
 

+ 4 - 3
board/ti/omap5912osk/omap5912osk.c

@@ -295,13 +295,14 @@ void peripheral_power_enable (void)
  */
 int checkboard(void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	puts("Board: OSK5912");
 
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');
 

+ 4 - 4
board/tqc/tqm8260/tqm8260.c

@@ -195,17 +195,17 @@ const iop_conf_t iop_conf_tab[4][32] = {
  */
 int checkboard (void)
 {
-	char str[64];
-	int i = getenv_f("serial#", str, sizeof (str));
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	puts ("Board: ");
 
-	if (!i || strncmp (str, "TQM82", 5)) {
+	if (i < 0 || strncmp(buf, "TQM82", 5)) {
 		puts ("### No HW ID - assuming TQM8260\n");
 		return (0);
 	}
 
-	puts (str);
+	puts (buf);
 	putc ('\n');
 
 	return 0;

+ 6 - 2
board/tqc/tqm8272/tqm8272.c

@@ -514,12 +514,16 @@ static inline int scanChar (char *p, int len, unsigned long *number)
 static int dump_hwib(void)
 {
 	HWIB_INFO	*hw = &hwinf;
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 	volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
-	char *s = getenv("serial#");
+
+	if (i < 0)
+		buf[0] = '\0';
 
 	if (hw->OK) {
 		printf ("HWIB on %x\n", HWIB_INFO_START_ADDR);
-		printf ("serial : %s\n", s);
+		printf ("serial : %s\n", buf);
 		printf ("ethaddr: %s\n", hw->ethaddr);
 		printf ("FLASH	: %x nr:%d\n", hw->flash, hw->flash_nr);
 		printf ("RAM	: %x cs:%d\n", hw->ram, hw->ram_cs);

+ 11 - 8
board/tqc/tqm85xx/tqm85xx.c

@@ -227,17 +227,19 @@ static const int casl_table[] = { 20, 25, 30 };
 
 int cas_latency (void)
 {
-	char *s = getenv ("serial#");
+	char buf[128];
 	int casl;
 	int val;
 	int i;
 
 	casl = CONFIG_DDR_DEFAULT_CL;
 
-	if (s != NULL) {
-		if (strncmp(s + strlen (s) - strlen (CASL_STRING1),
+	i = getenv_f("serial#", buf, sizeof(buf));
+
+	if (i >0) {
+		if (strncmp(buf + strlen (buf) - strlen (CASL_STRING1),
 			    CASL_STRING2, strlen (CASL_STRING2)) == 0) {
-			val = simple_strtoul (s + strlen (s) - 2, NULL, 10);
+			val = simple_strtoul (buf + strlen (buf) - 2, NULL, 10);
 
 			for (i = 0; i < N_CASL; ++i) {
 				if (val == casl_table[i]) {
@@ -252,12 +254,13 @@ int cas_latency (void)
 
 int checkboard (void)
 {
-	char *s = getenv ("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	printf ("Board: %s", CONFIG_BOARDNAME);
-	if (s != NULL) {
-		puts (", serial# ");
-		puts (s);
+	if (i > 0) {
+		puts(", serial# ");
+		puts(buf);
 	}
 	putc ('\n');
 

+ 10 - 8
board/tqc/tqm8xx/tqm8xx.c

@@ -106,31 +106,33 @@ const uint sdram_table[] =
 
 int checkboard (void)
 {
-	char *s = getenv ("serial#");
+	char buf[64];
+	int i;
+	int l = getenv_f("serial#", buf, sizeof(buf));
 
 	puts ("Board: ");
 
-	if (!s || strncmp (s, "TQM8", 4)) {
+	if (l < 0 || strncmp(buf, "TQM8", 4)) {
 		puts ("### No HW ID - assuming TQM8xxL\n");
 		return (0);
 	}
 
-	if ((*(s + 6) == 'L')) {	/* a TQM8xxL type */
+	if ((buf[6] == 'L')) {	/* a TQM8xxL type */
 		gd->board_type = 'L';
 	}
 
-	if ((*(s + 6) == 'M')) {	/* a TQM8xxM type */
+	if ((buf[6] == 'M')) {	/* a TQM8xxM type */
 		gd->board_type = 'M';
 	}
 
-	if ((*(s + 6) == 'D')) {	/* a TQM885D type */
+	if ((buf[6] == 'D')) {	/* a TQM885D type */
 		gd->board_type = 'D';
 	}
 
-	for (; *s; ++s) {
-		if (*s == ' ')
+	for (i = 0; i < l; ++i) {
+		if (buf[i] == ' ')
 			break;
-		putc (*s);
+		putc (buf[i]);
 	}
 #ifdef CONFIG_VIRTLAB2
 	puts (" (Virtlab2)");

+ 11 - 6
board/xes/common/board.c

@@ -13,7 +13,9 @@
 int checkboard(void)
 {
 	char name[] = CONFIG_SYS_BOARD_NAME;
+	char buf[64];
 	char *s;
+	int i;
 
 #ifdef CONFIG_SYS_FORM_CUSTOM
 	s = "Custom";
@@ -52,12 +54,15 @@ int checkboard(void)
 
 	/* Display board specific information */
 	puts("       ");
-	if ((s = getenv("board_rev")))
-		printf("Rev %s, ", s);
-	if ((s = getenv("serial#")))
-		printf("Serial# %s, ", s);
-	if ((s = getenv("board_cfg")))
-		printf("Cfg %s", s);
+	i = getenv_f("board_rev", buf, sizeof(buf));
+	if (i > 0)
+		printf("Rev %s, ", buf);
+	i = getenv_f("serial#", buf, sizeof(buf));
+	if (i > 0)
+		printf("Serial# %s, ", buf);
+	i = getenv_f("board_cfg", buf, sizeof(buf));
+	if (i > 0)
+		printf("Cfg %s", buf);
 	puts("\n");
 
 	return 0;

+ 11 - 10
board/xes/xpedite1000/xpedite1000.c

@@ -112,19 +112,20 @@ int board_early_init_f(void)
 
 int checkboard(void)
 {
-	char *s;
+	char buf[64];
+	int i;
 
 	printf("Board: X-ES %s PMC SBC\n", CONFIG_SYS_BOARD_NAME);
 	printf("       ");
-	s = getenv("board_rev");
-	if (s)
-		printf("Rev %s, ", s);
-	s = getenv("serial#");
-	if (s)
-		printf("Serial# %s, ", s);
-	s = getenv("board_cfg");
-	if (s)
-		printf("Cfg %s", s);
+	i = getenv_f("board_rev", buf, sizeof(buf));
+	if (i > 0)
+		printf("Rev %s, ", buf);
+	i = getenv_f("serial#", buf, sizeof(buf));
+	if (i > 0)
+		printf("Serial# %s, ", buf);
+	i = getenv_f("board_cfg", buf, sizeof(buf));
+	if (i > 0)
+		printf("Cfg %s", buf);
 	printf("\n");
 
 	return 0;

+ 4 - 3
board/zeus/zeus.c

@@ -161,7 +161,8 @@ int misc_init_r(void)
  */
 int checkboard(void)
 {
-	char *s = getenv("serial#");
+	char buf[64];
+	int i = getenv_f("serial#", buf, sizeof(buf));
 
 	puts("Board: Zeus-");
 
@@ -172,9 +173,9 @@ int checkboard(void)
 
 	puts(" of BulletEndPoint");
 
-	if (s != NULL) {
+	if (i > 0) {
 		puts(", serial# ");
-		puts(s);
+		puts(buf);
 	}
 	putc('\n');