aboutsummaryrefslogtreecommitdiffstats
path: root/main/irqbalance/musl-fixes.patch
blob: 1d7508311a976e01fbff2eb94189b1724cb8adda (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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