diff options
author | Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org> | 2011-12-07 16:24:51 +0059 |
---|---|---|
committer | Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org> | 2012-08-12 19:56:23 +0200 |
commit | c037a21e720abc2d55e0bb0839ef46e64d3d82b2 (patch) | |
tree | 55b1c3c592ceeeedf82929803152ebe873d4fb75 | |
parent | 48cf3947848cdf3a3c0cc637d9ee9fd347f076df (diff) | |
download | libhardware_legacy-linaro_android_4.1.1.tar.gz |
ueventd: Fix aliasing violationslinaro_android_4.1.1
Fix aliasing violation, allowing us to enable the
-fstrict-aliasing optimization
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>
-rw-r--r-- | uevent/uevent.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/uevent/uevent.c b/uevent/uevent.c index ef8ce84..6b5ba3d 100644 --- a/uevent/uevent.c +++ b/uevent/uevent.c @@ -41,14 +41,17 @@ static int fd = -1; /* Returns 0 on failure, 1 on success */ int uevent_init() { - struct sockaddr_nl addr; + union { + struct sockaddr_nl nl; + struct sockaddr generic; + } addr; int sz = 64*1024; int s; - memset(&addr, 0, sizeof(addr)); - addr.nl_family = AF_NETLINK; - addr.nl_pid = getpid(); - addr.nl_groups = 0xffffffff; + memset(&addr.nl, 0, sizeof(addr.nl)); + addr.nl.nl_family = AF_NETLINK; + addr.nl.nl_pid = getpid(); + addr.nl.nl_groups = 0xffffffff; s = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT); if(s < 0) @@ -56,7 +59,7 @@ int uevent_init() setsockopt(s, SOL_SOCKET, SO_RCVBUFFORCE, &sz, sizeof(sz)); - if(bind(s, (struct sockaddr *) &addr, sizeof(addr)) < 0) { + if(bind(s, &addr.generic, sizeof(addr.nl)) < 0) { close(s); return 0; } |