소스 검색

fdt: remove unaligned access in fdt_fixup_ethernet()

Some ARM compilers may emit code that makes unaligned accesses when
faced with constructs such as:

char mac[16] = "ethaddr";

Replace this with a strcpy() call instead to avoid this. strcpy() is
used here, rather than replacing all usage of the mac variable with the
string itself, since the loop itself sprintf()s to the variable each
iteration, so strcpy() is doing basically the same thing.

Reported-by: Florian Meier
Signed-off-by: Stephen Warren <swarren@wwwdotorg.org>
Stephen Warren 12 년 전
부모
커밋
064d55f8bc
1개의 변경된 파일2개의 추가작업 그리고 1개의 파일을 삭제
  1. 2 1
      common/fdt_support.c

+ 2 - 1
common/fdt_support.c

@@ -458,7 +458,7 @@ void fdt_fixup_ethernet(void *fdt)
 {
 	int node, i, j;
 	char enet[16], *tmp, *end;
-	char mac[16] = "ethaddr";
+	char mac[16];
 	const char *path;
 	unsigned char mac_addr[6];
 
@@ -467,6 +467,7 @@ void fdt_fixup_ethernet(void *fdt)
 		return;
 
 	i = 0;
+	strcpy(mac, "ethaddr");
 	while ((tmp = getenv(mac)) != NULL) {
 		sprintf(enet, "ethernet%d", i);
 		path = fdt_getprop(fdt, node, enet, NULL);