summaryrefslogtreecommitdiffstats
path: root/meta/recipes-connectivity/dhcpcd/files
diff options
context:
space:
mode:
authorYi Zhao <yi.zhao@windriver.com>2020-12-22 16:29:33 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2020-12-24 08:25:14 +0000
commit578818509d8ae3c1afad7e0f113699030253506d (patch)
tree141d038707499e5d4fd4282263da49e8d73a5d1f /meta/recipes-connectivity/dhcpcd/files
parent2848b3d949312681902a51938dae34f6389bd24d (diff)
downloadpoky-578818509d8ae3c1afad7e0f113699030253506d.tar.gz
dhcpcd: fix SECCOMP for i386
The dhcpcd doesn't work on Intel 32bit platform. Backport a patch to fix the issue. (From OE-Core rev: e8b03a8e3a6748374340d45ce39e922eee6817e3) Signed-off-by: Yi Zhao <yi.zhao@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-connectivity/dhcpcd/files')
-rw-r--r--meta/recipes-connectivity/dhcpcd/files/0001-privsep-Fix-Linux-i386-for-SECCOMP-as-it-just-uses-s.patch57
1 files changed, 57 insertions, 0 deletions
diff --git a/meta/recipes-connectivity/dhcpcd/files/0001-privsep-Fix-Linux-i386-for-SECCOMP-as-it-just-uses-s.patch b/meta/recipes-connectivity/dhcpcd/files/0001-privsep-Fix-Linux-i386-for-SECCOMP-as-it-just-uses-s.patch
new file mode 100644
index 0000000000..b79d5f04ce
--- /dev/null
+++ b/meta/recipes-connectivity/dhcpcd/files/0001-privsep-Fix-Linux-i386-for-SECCOMP-as-it-just-uses-s.patch
@@ -0,0 +1,57 @@
1From 12cdb2be46e25e1ab99df18324b787ad8749dff7 Mon Sep 17 00:00:00 2001
2From: Roy Marples <roy@marples.name>
3Date: Sat, 12 Dec 2020 22:12:54 +0000
4Subject: [PATCH] privsep: Fix Linux i386 for SECCOMP as it just uses
5 socketcall
6
7Rather than accept(2), recv(2), etc..... which is horrible!
8
9Thanks to Steve Hirsch <stevehirsch49@msn.com> for testing.
10
11Upstream-Status: Backport
12[https://roy.marples.name/cgit/dhcpcd.git/commit/?id=12cdb2be46e25e1ab99df18324b787ad8749dff7]
13
14Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
15---
16 src/privsep-linux.c | 18 ++++++++++++++++++
17 1 file changed, 18 insertions(+)
18
19diff --git a/src/privsep-linux.c b/src/privsep-linux.c
20index 050a30cf..d31d720d 100644
21--- a/src/privsep-linux.c
22+++ b/src/privsep-linux.c
23@@ -34,6 +34,7 @@
24
25 #include <linux/audit.h>
26 #include <linux/filter.h>
27+#include <linux/net.h>
28 #include <linux/seccomp.h>
29 #include <linux/sockios.h>
30
31@@ -311,6 +312,23 @@ static struct sock_filter ps_seccomp_filter[] = {
32 #ifdef __NR_sendto
33 SECCOMP_ALLOW(__NR_sendto),
34 #endif
35+#ifdef __NR_socketcall
36+ /* i386 needs this and demonstrates why SECCOMP
37+ * is poor compared to OpenBSD pledge(2) and FreeBSD capsicum(4)
38+ * as this is soooo tied to the kernel API which changes per arch
39+ * and likely libc as well. */
40+ SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_ACCEPT),
41+ SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_ACCEPT4),
42+ SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_LISTEN),
43+ SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_GETSOCKOPT), /* overflow */
44+ SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_RECV),
45+ SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_RECVFROM),
46+ SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_RECVMSG),
47+ SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_SEND),
48+ SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_SENDMSG),
49+ SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_SENDTO),
50+ SECCOMP_ALLOW_ARG(__NR_socketcall, 0, SYS_SHUTDOWN),
51+#endif
52 #ifdef __NR_shutdown
53 SECCOMP_ALLOW(__NR_shutdown),
54 #endif
55--
562.25.1
57