From 8632170db8dddf735c5e1c80f6c8d48f75423c63 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Thu, 4 Aug 2016 11:04:46 +0200 Subject: [PATCH] eudev: add patch to fix getrandom() system call on ARM64 When the kernel headers in the toolchain don't provide __NR_getrandom, eudev has a predefined set of values. However, the provided value for ARM64 is incorrect, and causes a runtime problem on this architecture when old kernel headers (not providing __NR_getrandom) are used. This commit adds a patch to eudev to fix this issue. Signed-off-by: Thomas Petazzoni Tested-by: Kevin Hilman --- ...ng.h-fix-getrandom-system-call-numbe.patch | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 package/eudev/0002-src-shared-missing.h-fix-getrandom-system-call-numbe.patch diff --git a/package/eudev/0002-src-shared-missing.h-fix-getrandom-system-call-numbe.patch b/package/eudev/0002-src-shared-missing.h-fix-getrandom-system-call-numbe.patch new file mode 100644 index 0000000000..56379335f2 --- /dev/null +++ b/package/eudev/0002-src-shared-missing.h-fix-getrandom-system-call-numbe.patch @@ -0,0 +1,64 @@ +From f80fe0e68686060e861338cf7b3b32e0637b3e0b Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 4 Aug 2016 10:13:09 +0200 +Subject: [PATCH] src/shared/missing.h: fix getrandom system call number on + ARM64 + +The getrandom() system call number is indeed 384 on ARM, but it is not +the same on ARM64. ARM64 uses the asm-generic headers, including for +system call numbers, so the getrandom() system call number on ARM64 is +278. This fixes runtime issues of eudev on ARM64, such as: + +Populating /dev using udev: [ 6.186817] udevd[1204]: starting version 3.1.5 +[ 6.191662] udevd[1204]: syscall 384 +[ 6.195217] Code: aa0503e4 aa0603e5 aa0703e6 d4000001 (b13ffc1f) +[ 6.201291] CPU: 4 PID: 1204 Comm: udevd Not tainted 4.7.0+ #1 +[ 6.207079] Hardware name: ARM Juno development board (r2) (DT) +[ 6.212954] task: ffff800976421900 task.stack: ffff800975610000 +[ 6.218825] PC is at 0xffff97f12234 +[ 6.222281] LR is at 0x41b15c +[ 6.225214] pc : [<0000ffff97f12234>] lr : [<000000000041b15c>] pstate: 80000000 +[ 6.232544] sp : 0000ffffcf9b3870 +[ 6.235828] x29: 0000ffffcf9b3870 x28: 0000000000428218 +[ 6.241110] x27: 0000000000000000 x26: 000000000042a7e3 +[ 6.246395] x25: 0000ffffcf9b39c8 x24: 0000000000428000 +[ 6.251670] x23: 0000000000449000 x22: 0000000000449678 +[ 6.256946] x21: 0000000000000010 x20: 0000000000449000 +[ 6.262233] x19: 0000000000449678 x18: 0000000000000000 +[ 6.267507] x17: 0000ffff97f12210 x16: 0000000000449440 +[ 6.272779] x15: 0000ffff97e4f730 x14: 0000ffff98050cb8 +[ 6.278060] x13: 000000000000033c x12: 00000000000004b4 +[ 6.283331] x11: 0000000000000000 x10: 0101010101010101 +[ 6.288604] x9 : 0000000000001010 x8 : 0000000000000180 +[ 6.293882] x7 : ffffffffffffffff x6 : ffffffffffffffff +[ 6.299154] x5 : 00000000271e36c0 x4 : 0007061c00190d07 +[ 6.304426] x3 : 00000000271e36d0 x2 : 0000000000000001 +[ 6.309705] x1 : 0000000000000010 x0 : 0000000000449678 +[ 6.314976] +[ 6.398734] sky2 0000:08:00.0 enp8s0: renamed from eth0 + +Reported-by: Kevin Hilman +Signed-off-by: Thomas Petazzoni +--- + src/shared/missing.h | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/shared/missing.h b/src/shared/missing.h +index 9031119..5ad5997 100644 +--- a/src/shared/missing.h ++++ b/src/shared/missing.h +@@ -47,8 +47,10 @@ + # define __NR_getrandom 318 + # elif defined(__i386__) + # define __NR_getrandom 355 +-# elif defined(__arm__) || defined(__aarch64__) ++# elif defined(__arm__) + # define __NR_getrandom 384 ++# elif defined(__aarch64__) ++# define __NR_getrandom 278 + # elif defined(__ia64__) + # define __NR_getrandom 1339 + # elif defined(__m68k__) +-- +2.7.4 +