From: Émeric Maschino <emeric.maschino@xxxxxxxxx> commit 65cc21b4523e94d5640542a818748cd3be8cd6b4 upstream. While debugging udev > 170 failure on Debian Wheezy (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=648325), it appears that the issue was in fact due to missing accept4() in ia64. This patch simply adds accept4() to ia64. Signed-off-by: Émeric Maschino <emeric.maschino@xxxxxxxxx> Signed-off-by: Tony Luck <tony.luck@xxxxxxxxx> Signed-off-by: Jonathan Nieder <jrnieder@xxxxxxxxx> --- Hi Ben and Greg, Émeric Maschino wrote[1]: > Starting with udev 170 (well, IIRC!), console is flooded at startup with: > > udevd[XXX]: unable to receive ctrl connection: Function not implemented > > where XXX is a number (PID?). > > And system takes ~3 min. to get login prompt. Indeed, udev versions since 168 (2011-04-22) require the accept4() syscall. That syscall was added to the kernel in 2.6.28 (2008-11-19), but arches were slow to pick it up because checksyscalls.sh didn't catch it[2] (it was implemented on 32-bit x86 using sys_socketcall). Here is a list of when each arch added the syscall: x86 and arches using socketcall (2008-11-19) v2.6.28-rc6~45 sparc64 (2008-11-19) v2.6.28-rc6~44 MIPS (2009-08-03) v2.6.31-rc6~64^2 microblaze (2009-12-28) v2.6.33-rc5~19^2~3 sh64 (2010-01-19) v2.6.33-rc5~13^2 parisc (2009-12-26) v2.6.34-rc1~13^2~6 ARM (2010-08-15) v2.6.36-rc2~52^2~2 sh (2010-12-13) v2.6.37-rc6~10^2 alpha (2011-10-31) v3.2-rc1~108^2~58 ia64 (2012-01-09) v3.3-rc1~73^2 Lots of arches are not listed above because they use the multiplexed socketcall call and got support right away. (sh and sh64 provide both the direct syscall and socketcall.) This patch was merged upstream during the 3.3 merge window and has been in use in Debian's 3.2.y-based kernel since January. As long as libc was built to use the syscall, applying this patch makes udev work properly again on ia64. What do you think? Jonathan [1] http://bugs.debian.org/648325 [2] http://thread.gmane.org/gmane.linux.kernel.cross-arch/11888/focus=11907 arch/ia64/include/asm/unistd.h | 3 ++- arch/ia64/kernel/entry.S | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/arch/ia64/include/asm/unistd.h b/arch/ia64/include/asm/unistd.h index 7c928da35b17..d8de1825b736 100644 --- a/arch/ia64/include/asm/unistd.h +++ b/arch/ia64/include/asm/unistd.h @@ -321,11 +321,12 @@ #define __NR_syncfs 1329 #define __NR_setns 1330 #define __NR_sendmmsg 1331 +#define __NR_accept4 1334 #ifdef __KERNEL__ -#define NR_syscalls 308 /* length of syscall table */ +#define NR_syscalls 311 /* length of syscall table */ /* * The following defines stop scripts/checksyscalls.sh from complaining about diff --git a/arch/ia64/kernel/entry.S b/arch/ia64/kernel/entry.S index 97dd2abdeb1a..df477f8c9d82 100644 --- a/arch/ia64/kernel/entry.S +++ b/arch/ia64/kernel/entry.S @@ -1777,6 +1777,9 @@ sys_call_table: data8 sys_syncfs data8 sys_setns // 1330 data8 sys_sendmmsg + data8 sys_ni_syscall /* process_vm_readv */ + data8 sys_ni_syscall /* process_vm_writev */ + data8 sys_accept4 .org sys_call_table + 8*NR_syscalls // guard against failures to increase NR_syscalls #endif /* __IA64_ASM_PARAVIRTUALIZED_NATIVE */ -- 1.7.10.2 -- To unsubscribe from this list: send the line "unsubscribe linux-ia64" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html