diff options
author | Yi Zhao <yi.zhao@windriver.com> | 2020-12-22 16:29:33 +0800 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2020-12-24 08:25:14 +0000 |
commit | 578818509d8ae3c1afad7e0f113699030253506d (patch) | |
tree | 141d038707499e5d4fd4282263da49e8d73a5d1f /meta/recipes-connectivity/dhcpcd | |
parent | 2848b3d949312681902a51938dae34f6389bd24d (diff) | |
download | poky-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')
-rw-r--r-- | meta/recipes-connectivity/dhcpcd/dhcpcd_9.3.4.bb | 1 | ||||
-rw-r--r-- | meta/recipes-connectivity/dhcpcd/files/0001-privsep-Fix-Linux-i386-for-SECCOMP-as-it-just-uses-s.patch | 57 |
2 files changed, 58 insertions, 0 deletions
diff --git a/meta/recipes-connectivity/dhcpcd/dhcpcd_9.3.4.bb b/meta/recipes-connectivity/dhcpcd/dhcpcd_9.3.4.bb index cd81f17773..69a07760b4 100644 --- a/meta/recipes-connectivity/dhcpcd/dhcpcd_9.3.4.bb +++ b/meta/recipes-connectivity/dhcpcd/dhcpcd_9.3.4.bb | |||
@@ -14,6 +14,7 @@ UPSTREAM_CHECK_URI = "https://roy.marples.name/downloads/dhcpcd/" | |||
14 | SRC_URI = "https://roy.marples.name/downloads/${BPN}/${BPN}-${PV}.tar.xz \ | 14 | SRC_URI = "https://roy.marples.name/downloads/${BPN}/${BPN}-${PV}.tar.xz \ |
15 | file://0001-remove-INCLUDEDIR-to-prevent-build-issues.patch \ | 15 | file://0001-remove-INCLUDEDIR-to-prevent-build-issues.patch \ |
16 | file://0001-Linux-Fix-privsep-build-by-including-sys-termios.h-f.patch \ | 16 | file://0001-Linux-Fix-privsep-build-by-including-sys-termios.h-f.patch \ |
17 | file://0001-privsep-Fix-Linux-i386-for-SECCOMP-as-it-just-uses-s.patch \ | ||
17 | file://dhcpcd.service \ | 18 | file://dhcpcd.service \ |
18 | file://dhcpcd@.service \ | 19 | file://dhcpcd@.service \ |
19 | " | 20 | " |
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 @@ | |||
1 | From 12cdb2be46e25e1ab99df18324b787ad8749dff7 Mon Sep 17 00:00:00 2001 | ||
2 | From: Roy Marples <roy@marples.name> | ||
3 | Date: Sat, 12 Dec 2020 22:12:54 +0000 | ||
4 | Subject: [PATCH] privsep: Fix Linux i386 for SECCOMP as it just uses | ||
5 | socketcall | ||
6 | |||
7 | Rather than accept(2), recv(2), etc..... which is horrible! | ||
8 | |||
9 | Thanks to Steve Hirsch <stevehirsch49@msn.com> for testing. | ||
10 | |||
11 | Upstream-Status: Backport | ||
12 | [https://roy.marples.name/cgit/dhcpcd.git/commit/?id=12cdb2be46e25e1ab99df18324b787ad8749dff7] | ||
13 | |||
14 | Signed-off-by: Yi Zhao <yi.zhao@windriver.com> | ||
15 | --- | ||
16 | src/privsep-linux.c | 18 ++++++++++++++++++ | ||
17 | 1 file changed, 18 insertions(+) | ||
18 | |||
19 | diff --git a/src/privsep-linux.c b/src/privsep-linux.c | ||
20 | index 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 | -- | ||
56 | 2.25.1 | ||
57 | |||