summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>2011-12-07 16:24:51 +0059
committerBernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>2012-08-12 19:56:23 +0200
commitc037a21e720abc2d55e0bb0839ef46e64d3d82b2 (patch)
tree55b1c3c592ceeeedf82929803152ebe873d4fb75
parent48cf3947848cdf3a3c0cc637d9ee9fd347f076df (diff)
downloadlibhardware_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.c15
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;
}