From 6124c37135b2766d785471fe9b3eba9c1a233c66 Mon Sep 17 00:00:00 2001
From: Denis Vlasenko <vda.linux@googlemail.com>
Date: Thu, 27 Sep 2007 11:15:42 +0000
Subject: zcip: fix unaligned trap on ARM

---
 networking/zcip.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/networking/zcip.c b/networking/zcip.c
index 63846ebef..62350c640 100644
--- a/networking/zcip.c
+++ b/networking/zcip.c
@@ -160,7 +160,8 @@ int zcip_main(int argc, char **argv);
 int zcip_main(int argc, char **argv)
 {
 	int state = PROBE;
-	struct ether_addr eth_addr;
+	/* Prevent unaligned traps for ARM (see srand() below) */
+	struct ether_addr eth_addr __attribute__(( aligned(sizeof(unsigned)) ));
 	const char *why;
 	int fd;
 	char *r_opt;
@@ -252,7 +253,7 @@ int zcip_main(int argc, char **argv)
 	// the hardware address or else the last address we used.
 	// NOTE: the sequence of addresses we try changes only
 	// depending on when we detect conflicts.
-	srand(*(unsigned*)&ifr.ifr_hwaddr.sa_data);
+	srand(*(unsigned*)&eth_addr);
 	if (ip.s_addr == 0)
 		pick(&ip);
 
-- 
cgit v1.2.3-55-g6feb