diff options
Diffstat (limited to 'main/irqbalance/musl-fixes.patch')
-rw-r--r-- | main/irqbalance/musl-fixes.patch | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/main/irqbalance/musl-fixes.patch b/main/irqbalance/musl-fixes.patch new file mode 100644 index 0000000000..1d7508311a --- /dev/null +++ b/main/irqbalance/musl-fixes.patch @@ -0,0 +1,84 @@ +From af7523e4891d13c3c06fef056b243faa0547e406 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi> +Date: Tue, 10 Jan 2017 09:44:04 +0200 +Subject: [PATCH 1/3] Add missing #include <string.h> in user interface files + +Fixes several warnings when compiling under musl, e.g. + +ui/irqbalance-ui.c: In function 'create_credentials_msg': +ui/irqbalance-ui.c:32:2: warning: implicit declaration of function 'memset' [-Wimplicit-function-declaration] + memset(msg, 0, sizeof(struct msghdr)); + ^~~~~~ +ui/irqbalance-ui.c:32:2: warning: incompatible implicit declaration of built-in function 'memset' +ui/irqbalance-ui.c:32:2: note: include '<string.h>' or provide a declaration of 'memset' +ui/irqbalance-ui.c: In function 'init_connection': +ui/irqbalance-ui.c:49:2: warning: incompatible implicit declaration of built-in function 'memset' + memset(&addr, 0, sizeof(struct sockaddr_un)); + ^~~~~~ +--- + ui/irqbalance-ui.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/ui/irqbalance-ui.c b/ui/irqbalance-ui.c +index 74ba93c..75fc60f 100644 +--- a/ui/irqbalance-ui.c ++++ b/ui/irqbalance-ui.c +@@ -3,6 +3,7 @@ + #include <errno.h> + #include <netdb.h> + #include <stdio.h> ++#include <string.h> + #include <stdlib.h> + #include <sys/socket.h> + #include <sys/types.h> +-- +2.11.0 + + +From 59f2a0e9bfd5b98bd5671174eb7e32b4e0b3ba2c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi> +Date: Tue, 10 Jan 2017 09:46:17 +0200 +Subject: [PATCH 2/3] Fix struct msghdr initialization + +musl defines struct msghdr with padding fields to be strictly +POSIX compliant. The current code gives following warnings: + +irqbalance.c: In function 'sock_handle': +irqbalance.c:333:42: warning: initialization makes integer from pointer without a cast [-Wint-conversion] + struct msghdr msg = { NULL, 0, &iov, 1, NULL, 0, 0 }; + ^~~~ +irqbalance.c:333:42: note: (near initialization for 'msg.__pad1') +irqbalance.c:333:9: warning: missing initializer for field '__pad2' of 'struct msghdr' [-Wmissing-field-initializers] + struct msghdr msg = { NULL, 0, &iov, 1, NULL, 0, 0 }; + ^~~~~~ +In file included from /usr/include/sys/socket.h:20:0, + from /usr/include/fortify/sys/socket.h:20, + from irqbalance.c:34: +/usr/include/bits/socket.h:7:28: note: '__pad2' declared here + socklen_t msg_controllen, __pad2; + ^~~~~~ + +Fix this by not relying on field ordering. Alternatively +designated initializers could be used, but as they are not +used elsewhere in the code, I used explicit assignments. +--- + irqbalance.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/irqbalance.c b/irqbalance.c +index 35ad4da..95bb80a 100644 +--- a/irqbalance.c ++++ b/irqbalance.c +@@ -330,7 +330,9 @@ gboolean sock_handle(gint fd, GIOCondition condition, gpointer user_data __attri + int valid_user = 0; + + struct iovec iov = { buff, 500 }; +- struct msghdr msg = { NULL, 0, &iov, 1, NULL, 0, 0 }; ++ struct msghdr msg = { 0 }; ++ msg.msg_iov = &iov; ++ msg.msg_iovlen = 1; + msg.msg_control = malloc(CMSG_SPACE(sizeof(struct ucred))); + msg.msg_controllen = CMSG_SPACE(sizeof(struct ucred)); + +-- +2.11.0 |