浏览代码

uml: update to linux 4.14

Signed-off-by: Felix Fietkau <[email protected]>
Felix Fietkau 7 年之前
父节点
当前提交
6bf3a86ed6

+ 1 - 1
target/linux/uml/Makefile

@@ -22,7 +22,7 @@ BOARDNAME:=User Mode Linux
 FEATURES:=squashfs ext4 audio source-only
 FEATURES:=squashfs ext4 audio source-only
 MAINTAINER:=Florian Fainelli <[email protected]>
 MAINTAINER:=Florian Fainelli <[email protected]>
 
 
-KERNEL_PATCHVER:=4.9
+KERNEL_PATCHVER:=4.14
 
 
 include $(INCLUDE_DIR)/target.mk
 include $(INCLUDE_DIR)/target.mk
 
 

+ 15 - 7
target/linux/uml/config/i386

@@ -2,14 +2,21 @@
 # CONFIG_64BIT is not set
 # CONFIG_64BIT is not set
 CONFIG_ARCH_DEFCONFIG="arch/um/configs/i386_defconfig"
 CONFIG_ARCH_DEFCONFIG="arch/um/configs/i386_defconfig"
 # CONFIG_ARCH_HAS_GCOV_PROFILE_ALL is not set
 # CONFIG_ARCH_HAS_GCOV_PROFILE_ALL is not set
+CONFIG_ARCH_HAS_KCOV=y
 CONFIG_ARCH_HAS_SC_SIGNALS=y
 CONFIG_ARCH_HAS_SC_SIGNALS=y
 # CONFIG_ARCH_HAS_SG_CHAIN is not set
 # CONFIG_ARCH_HAS_SG_CHAIN is not set
+# CONFIG_ARCH_HAS_STRICT_KERNEL_RWX is not set
+# CONFIG_ARCH_HAS_STRICT_MODULE_RWX is not set
+# CONFIG_ARCH_OPTIONAL_KERNEL_RWX is not set
+# CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT is not set
 CONFIG_ARCH_REUSE_HOST_VSYSCALL_AREA=y
 CONFIG_ARCH_REUSE_HOST_VSYSCALL_AREA=y
 CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
 CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
 CONFIG_BLK_DEV_COW_COMMON=y
 CONFIG_BLK_DEV_COW_COMMON=y
 CONFIG_BLK_DEV_LOOP=y
 CONFIG_BLK_DEV_LOOP=y
 CONFIG_BLK_DEV_UBD=y
 CONFIG_BLK_DEV_UBD=y
 CONFIG_BLK_DEV_UBD_SYNC=y
 CONFIG_BLK_DEV_UBD_SYNC=y
+CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 CONFIG_CLONE_BACKWARDS=y
 CONFIG_CLONE_BACKWARDS=y
 CONFIG_CON_CHAN="xterm"
 CONFIG_CON_CHAN="xterm"
 CONFIG_CON_ZERO_CHAN="fd:0,fd:1"
 CONFIG_CON_ZERO_CHAN="fd:0,fd:1"
@@ -21,12 +28,12 @@ CONFIG_CPU_SUP_TRANSMETA_32=y
 CONFIG_CPU_SUP_UMC_32=y
 CONFIG_CPU_SUP_UMC_32=y
 # CONFIG_CRASHLOG is not set
 # CONFIG_CRASHLOG is not set
 CONFIG_CRC16=y
 CONFIG_CRC16=y
+CONFIG_CRYPTO_CRC32=y
 CONFIG_CRYPTO_CRC32C=y
 CONFIG_CRYPTO_CRC32C=y
 CONFIG_CRYPTO_HASH=y
 CONFIG_CRYPTO_HASH=y
 CONFIG_CRYPTO_HASH2=y
 CONFIG_CRYPTO_HASH2=y
 CONFIG_CRYPTO_RNG2=y
 CONFIG_CRYPTO_RNG2=y
 CONFIG_CRYPTO_WORKQUEUE=y
 CONFIG_CRYPTO_WORKQUEUE=y
-CONFIG_DEBUG_BUGVERBOSE=y
 CONFIG_DEBUG_MEMORY_INIT=y
 CONFIG_DEBUG_MEMORY_INIT=y
 CONFIG_DECOMPRESS_BZIP2=y
 CONFIG_DECOMPRESS_BZIP2=y
 CONFIG_DECOMPRESS_GZIP=y
 CONFIG_DECOMPRESS_GZIP=y
@@ -43,17 +50,19 @@ CONFIG_F2FS_FS=y
 CONFIG_F2FS_FS_XATTR=y
 CONFIG_F2FS_FS_XATTR=y
 CONFIG_F2FS_STAT_FS=y
 CONFIG_F2FS_STAT_FS=y
 CONFIG_FS_MBCACHE=y
 CONFIG_FS_MBCACHE=y
-CONFIG_GENERIC_BUG=y
 CONFIG_GENERIC_CLOCKEVENTS=y
 CONFIG_GENERIC_CLOCKEVENTS=y
 CONFIG_GENERIC_CPU_DEVICES=y
 CONFIG_GENERIC_CPU_DEVICES=y
 CONFIG_GENERIC_FIND_FIRST_BIT=y
 CONFIG_GENERIC_FIND_FIRST_BIT=y
 CONFIG_GENERIC_IO=y
 CONFIG_GENERIC_IO=y
 CONFIG_GENERIC_IRQ_SHOW=y
 CONFIG_GENERIC_IRQ_SHOW=y
+# CONFIG_GRO_CELLS is not set
 # CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
 # CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
 CONFIG_HAVE_AOUT=y
 CONFIG_HAVE_AOUT=y
 CONFIG_HAVE_ARCH_AUDITSYSCALL=y
 CONFIG_HAVE_ARCH_AUDITSYSCALL=y
 # CONFIG_HAVE_ARCH_BITREVERSE is not set
 # CONFIG_HAVE_ARCH_BITREVERSE is not set
+CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
 # CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
 # CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
 CONFIG_HAVE_FUTEX_CMPXCHG=y
 CONFIG_HAVE_FUTEX_CMPXCHG=y
 # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
 # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
 CONFIG_HAVE_NET_DSA=y
 CONFIG_HAVE_NET_DSA=y
@@ -67,7 +76,6 @@ CONFIG_IOSCHED_CFQ=y
 CONFIG_IRQ_WORK=y
 CONFIG_IRQ_WORK=y
 CONFIG_ISO9660_FS=y
 CONFIG_ISO9660_FS=y
 CONFIG_JBD2=y
 CONFIG_JBD2=y
-# CONFIG_JFFS2_CMODE_PRIORITY is not set
 # CONFIG_JFFS2_FS is not set
 # CONFIG_JFFS2_FS is not set
 CONFIG_KALLSYMS=y
 CONFIG_KALLSYMS=y
 CONFIG_KERNEL_STACK_ORDER=2
 CONFIG_KERNEL_STACK_ORDER=2
@@ -85,6 +93,7 @@ CONFIG_MCONSOLE=y
 # CONFIG_MCORE2 is not set
 # CONFIG_MCORE2 is not set
 # CONFIG_MCRUSOE is not set
 # CONFIG_MCRUSOE is not set
 # CONFIG_MCYRIXIII is not set
 # CONFIG_MCYRIXIII is not set
+# CONFIG_MDIO_BUS is not set
 # CONFIG_MEFFICEON is not set
 # CONFIG_MEFFICEON is not set
 # CONFIG_MELAN is not set
 # CONFIG_MELAN is not set
 # CONFIG_MGEODEGX1 is not set
 # CONFIG_MGEODEGX1 is not set
@@ -109,6 +118,7 @@ CONFIG_NLS=y
 # CONFIG_NOCONFIG_CHAN is not set
 # CONFIG_NOCONFIG_CHAN is not set
 CONFIG_NO_DMA=y
 CONFIG_NO_DMA=y
 CONFIG_NO_IOMEM=y
 CONFIG_NO_IOMEM=y
+CONFIG_NR_CPUS=1
 # CONFIG_NSC_GPIO is not set
 # CONFIG_NSC_GPIO is not set
 CONFIG_NULL_CHAN=y
 CONFIG_NULL_CHAN=y
 # CONFIG_OF is not set
 # CONFIG_OF is not set
@@ -118,10 +128,10 @@ CONFIG_PGTABLE_LEVELS=2
 CONFIG_PORT_CHAN=y
 CONFIG_PORT_CHAN=y
 CONFIG_POSIX_MQUEUE=y
 CONFIG_POSIX_MQUEUE=y
 CONFIG_POSIX_MQUEUE_SYSCTL=y
 CONFIG_POSIX_MQUEUE_SYSCTL=y
-CONFIG_PRINT_QUOTA_WARNING=y
 # CONFIG_PROCESSOR_SELECT is not set
 # CONFIG_PROCESSOR_SELECT is not set
 CONFIG_PROC_PAGE_MONITOR=y
 CONFIG_PROC_PAGE_MONITOR=y
 CONFIG_PTY_CHAN=y
 CONFIG_PTY_CHAN=y
+# CONFIG_RCU_NEED_SEGCBLIST is not set
 # CONFIG_RCU_STALL_COMMON is not set
 # CONFIG_RCU_STALL_COMMON is not set
 CONFIG_RD_BZIP2=y
 CONFIG_RD_BZIP2=y
 CONFIG_RD_GZIP=y
 CONFIG_RD_GZIP=y
@@ -134,7 +144,6 @@ CONFIG_SOFT_WATCHDOG=m
 CONFIG_SOUND=m
 CONFIG_SOUND=m
 CONFIG_SOUND_OSS_CORE=y
 CONFIG_SOUND_OSS_CORE=y
 CONFIG_SOUND_OSS_CORE_PRECLAIM=y
 CONFIG_SOUND_OSS_CORE_PRECLAIM=y
-CONFIG_SQUASHFS_EMBEDDED=y
 CONFIG_SRCU=y
 CONFIG_SRCU=y
 CONFIG_SSL=y
 CONFIG_SSL=y
 CONFIG_SSL_CHAN="pty"
 CONFIG_SSL_CHAN="pty"
@@ -142,7 +151,7 @@ CONFIG_STACKTRACE=y
 CONFIG_STATIC_LINK=y
 CONFIG_STATIC_LINK=y
 CONFIG_STDERR_CONSOLE=y
 CONFIG_STDERR_CONSOLE=y
 CONFIG_TICK_CPU_ACCOUNTING=y
 CONFIG_TICK_CPU_ACCOUNTING=y
-# CONFIG_TRACE_IRQFLAGS_SUPPORT is not set
+CONFIG_TINY_SRCU=y
 CONFIG_TTY_CHAN=y
 CONFIG_TTY_CHAN=y
 CONFIG_UML=y
 CONFIG_UML=y
 CONFIG_UML_NET=y
 CONFIG_UML_NET=y
@@ -175,4 +184,3 @@ CONFIG_X86_TSC=y
 CONFIG_X86_USE_PPRO_CHECKSUM=y
 CONFIG_X86_USE_PPRO_CHECKSUM=y
 CONFIG_XTERM_CHAN=y
 CONFIG_XTERM_CHAN=y
 CONFIG_ZLIB_INFLATE=y
 CONFIG_ZLIB_INFLATE=y
-CONFIG_ZONE_DMA_FLAG=0

+ 15 - 6
target/linux/uml/config/x86_64

@@ -2,14 +2,21 @@ CONFIG_3_LEVEL_PGTABLES=y
 CONFIG_64BIT=y
 CONFIG_64BIT=y
 CONFIG_ARCH_DEFCONFIG="arch/um/configs/x86_64_defconfig"
 CONFIG_ARCH_DEFCONFIG="arch/um/configs/x86_64_defconfig"
 # CONFIG_ARCH_HAS_GCOV_PROFILE_ALL is not set
 # CONFIG_ARCH_HAS_GCOV_PROFILE_ALL is not set
+CONFIG_ARCH_HAS_KCOV=y
 # CONFIG_ARCH_HAS_SC_SIGNALS is not set
 # CONFIG_ARCH_HAS_SC_SIGNALS is not set
 # CONFIG_ARCH_HAS_SG_CHAIN is not set
 # CONFIG_ARCH_HAS_SG_CHAIN is not set
+# CONFIG_ARCH_HAS_STRICT_KERNEL_RWX is not set
+# CONFIG_ARCH_HAS_STRICT_MODULE_RWX is not set
+# CONFIG_ARCH_OPTIONAL_KERNEL_RWX is not set
+# CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT is not set
 # CONFIG_ARCH_REUSE_HOST_VSYSCALL_AREA is not set
 # CONFIG_ARCH_REUSE_HOST_VSYSCALL_AREA is not set
 CONFIG_BINFMT_MISC=m
 CONFIG_BINFMT_MISC=m
 CONFIG_BLK_DEV_COW_COMMON=y
 CONFIG_BLK_DEV_COW_COMMON=y
 CONFIG_BLK_DEV_LOOP=y
 CONFIG_BLK_DEV_LOOP=y
 CONFIG_BLK_DEV_UBD=y
 CONFIG_BLK_DEV_UBD=y
 CONFIG_BLK_DEV_UBD_SYNC=y
 CONFIG_BLK_DEV_UBD_SYNC=y
+CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 CONFIG_CON_CHAN="xterm"
 CONFIG_CON_CHAN="xterm"
 CONFIG_CON_ZERO_CHAN="fd:0,fd:1"
 CONFIG_CON_ZERO_CHAN="fd:0,fd:1"
 CONFIG_CPU_SUP_AMD=y
 CONFIG_CPU_SUP_AMD=y
@@ -18,16 +25,15 @@ CONFIG_CPU_SUP_INTEL=y
 # CONFIG_CRASHLOG is not set
 # CONFIG_CRASHLOG is not set
 CONFIG_CRC16=y
 CONFIG_CRC16=y
 # CONFIG_CRYPTO_AES_X86_64 is not set
 # CONFIG_CRYPTO_AES_X86_64 is not set
+CONFIG_CRYPTO_CRC32=y
 CONFIG_CRYPTO_CRC32C=y
 CONFIG_CRYPTO_CRC32C=y
 CONFIG_CRYPTO_HASH=y
 CONFIG_CRYPTO_HASH=y
 CONFIG_CRYPTO_HASH2=y
 CONFIG_CRYPTO_HASH2=y
 CONFIG_CRYPTO_RNG2=y
 CONFIG_CRYPTO_RNG2=y
-# CONFIG_CRYPTO_SALSA20_X86_64 is not set
 CONFIG_CRYPTO_SHA1=y
 CONFIG_CRYPTO_SHA1=y
 # CONFIG_CRYPTO_SKEIN is not set
 # CONFIG_CRYPTO_SKEIN is not set
 # CONFIG_CRYPTO_TWOFISH_X86_64 is not set
 # CONFIG_CRYPTO_TWOFISH_X86_64 is not set
 CONFIG_CRYPTO_WORKQUEUE=y
 CONFIG_CRYPTO_WORKQUEUE=y
-CONFIG_DEBUG_BUGVERBOSE=y
 CONFIG_DEBUG_MEMORY_INIT=y
 CONFIG_DEBUG_MEMORY_INIT=y
 CONFIG_DECOMPRESS_BZIP2=y
 CONFIG_DECOMPRESS_BZIP2=y
 CONFIG_DECOMPRESS_GZIP=y
 CONFIG_DECOMPRESS_GZIP=y
@@ -43,17 +49,19 @@ CONFIG_F2FS_FS=y
 CONFIG_F2FS_FS_XATTR=y
 CONFIG_F2FS_FS_XATTR=y
 CONFIG_F2FS_STAT_FS=y
 CONFIG_F2FS_STAT_FS=y
 CONFIG_FS_MBCACHE=y
 CONFIG_FS_MBCACHE=y
-CONFIG_GENERIC_BUG=y
 CONFIG_GENERIC_CLOCKEVENTS=y
 CONFIG_GENERIC_CLOCKEVENTS=y
 # CONFIG_GENERIC_CPU is not set
 # CONFIG_GENERIC_CPU is not set
 CONFIG_GENERIC_CPU_DEVICES=y
 CONFIG_GENERIC_CPU_DEVICES=y
 CONFIG_GENERIC_FIND_FIRST_BIT=y
 CONFIG_GENERIC_FIND_FIRST_BIT=y
 CONFIG_GENERIC_IO=y
 CONFIG_GENERIC_IO=y
 CONFIG_GENERIC_IRQ_SHOW=y
 CONFIG_GENERIC_IRQ_SHOW=y
+# CONFIG_GRO_CELLS is not set
 CONFIG_HAVE_64BIT_ALIGNED_ACCESS=y
 CONFIG_HAVE_64BIT_ALIGNED_ACCESS=y
 CONFIG_HAVE_ARCH_AUDITSYSCALL=y
 CONFIG_HAVE_ARCH_AUDITSYSCALL=y
 # CONFIG_HAVE_ARCH_BITREVERSE is not set
 # CONFIG_HAVE_ARCH_BITREVERSE is not set
+CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
 # CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
 # CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
 CONFIG_HAVE_FUTEX_CMPXCHG=y
 CONFIG_HAVE_FUTEX_CMPXCHG=y
 # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
 # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
 CONFIG_HAVE_NET_DSA=y
 CONFIG_HAVE_NET_DSA=y
@@ -77,6 +85,7 @@ CONFIG_LEGACY_PTY_COUNT=256
 # CONFIG_MATOM is not set
 # CONFIG_MATOM is not set
 CONFIG_MCONSOLE=y
 CONFIG_MCONSOLE=y
 # CONFIG_MCORE2 is not set
 # CONFIG_MCORE2 is not set
+# CONFIG_MDIO_BUS is not set
 CONFIG_MK8=y
 CONFIG_MK8=y
 # CONFIG_MMAPPER is not set
 # CONFIG_MMAPPER is not set
 CONFIG_MODULES_USE_ELF_RELA=y
 CONFIG_MODULES_USE_ELF_RELA=y
@@ -88,6 +97,7 @@ CONFIG_NLS=y
 # CONFIG_NOCONFIG_CHAN is not set
 # CONFIG_NOCONFIG_CHAN is not set
 CONFIG_NO_DMA=y
 CONFIG_NO_DMA=y
 CONFIG_NO_IOMEM=y
 CONFIG_NO_IOMEM=y
+CONFIG_NR_CPUS=1
 CONFIG_NULL_CHAN=y
 CONFIG_NULL_CHAN=y
 # CONFIG_OF is not set
 # CONFIG_OF is not set
 CONFIG_PGTABLE_LEVELS=3
 CONFIG_PGTABLE_LEVELS=3
@@ -98,6 +108,7 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y
 # CONFIG_PROCESSOR_SELECT is not set
 # CONFIG_PROCESSOR_SELECT is not set
 CONFIG_PROC_PAGE_MONITOR=y
 CONFIG_PROC_PAGE_MONITOR=y
 CONFIG_PTY_CHAN=y
 CONFIG_PTY_CHAN=y
+# CONFIG_RCU_NEED_SEGCBLIST is not set
 # CONFIG_RCU_STALL_COMMON is not set
 # CONFIG_RCU_STALL_COMMON is not set
 CONFIG_RD_BZIP2=y
 CONFIG_RD_BZIP2=y
 CONFIG_RD_GZIP=y
 CONFIG_RD_GZIP=y
@@ -110,7 +121,6 @@ CONFIG_SOFT_WATCHDOG=m
 CONFIG_SOUND=m
 CONFIG_SOUND=m
 CONFIG_SOUND_OSS_CORE=y
 CONFIG_SOUND_OSS_CORE=y
 CONFIG_SOUND_OSS_CORE_PRECLAIM=y
 CONFIG_SOUND_OSS_CORE_PRECLAIM=y
-CONFIG_SQUASHFS_EMBEDDED=y
 CONFIG_SRCU=y
 CONFIG_SRCU=y
 CONFIG_SSL=y
 CONFIG_SSL=y
 CONFIG_SSL_CHAN="pty"
 CONFIG_SSL_CHAN="pty"
@@ -118,7 +128,7 @@ CONFIG_STACKTRACE=y
 CONFIG_STATIC_LINK=y
 CONFIG_STATIC_LINK=y
 CONFIG_STDERR_CONSOLE=y
 CONFIG_STDERR_CONSOLE=y
 CONFIG_TICK_CPU_ACCOUNTING=y
 CONFIG_TICK_CPU_ACCOUNTING=y
-# CONFIG_TRACE_IRQFLAGS_SUPPORT is not set
+CONFIG_TINY_SRCU=y
 CONFIG_TTY_CHAN=y
 CONFIG_TTY_CHAN=y
 CONFIG_UML=y
 CONFIG_UML=y
 CONFIG_UML_NET=y
 CONFIG_UML_NET=y
@@ -150,4 +160,3 @@ CONFIG_X86_TSC=y
 CONFIG_X86_USE_PPRO_CHECKSUM=y
 CONFIG_X86_USE_PPRO_CHECKSUM=y
 CONFIG_XTERM_CHAN=y
 CONFIG_XTERM_CHAN=y
 CONFIG_ZLIB_INFLATE=y
 CONFIG_ZLIB_INFLATE=y
-CONFIG_ZONE_DMA_FLAG=0

+ 34 - 32
target/linux/uml/patches-4.9/101-mconsole-exec.patch → target/linux/uml/patches-4.14/101-mconsole-exec.patch

@@ -31,19 +31,19 @@
   * Licensed under the GPL
   * Licensed under the GPL
   */
   */
  
  
-+#include "linux/kmod.h"
++#include <linux/kmod.h>
  #include <linux/console.h>
  #include <linux/console.h>
  #include <linux/ctype.h>
  #include <linux/ctype.h>
  #include <linux/string.h>
  #include <linux/string.h>
-@@ -24,6 +25,7 @@
- #include <linux/fs.h>
+@@ -26,6 +27,7 @@
  #include <linux/mount.h>
  #include <linux/mount.h>
  #include <linux/file.h>
  #include <linux/file.h>
+ #include <linux/uaccess.h>
 +#include <linux/completion.h>
 +#include <linux/completion.h>
- #include <asm/uaccess.h>
  #include <asm/switch_to.h>
  #include <asm/switch_to.h>
  
  
-@@ -121,6 +123,59 @@ void mconsole_log(struct mc_request *req
+ #include <init.h>
+@@ -122,6 +124,59 @@ void mconsole_log(struct mc_request *req
  	mconsole_reply(req, "", 0, 0);
  	mconsole_reply(req, "", 0, 0);
  }
  }
  
  
@@ -103,7 +103,7 @@
  void mconsole_proc(struct mc_request *req)
  void mconsole_proc(struct mc_request *req)
  {
  {
  	struct vfsmount *mnt = task_active_pid_ns(current)->proc_mnt;
  	struct vfsmount *mnt = task_active_pid_ns(current)->proc_mnt;
-@@ -187,6 +242,7 @@ void mconsole_proc(struct mc_request *re
+@@ -183,6 +238,7 @@ void mconsole_proc(struct mc_request *re
      stop - pause the UML; it will do nothing until it receives a 'go' \n\
      stop - pause the UML; it will do nothing until it receives a 'go' \n\
      go - continue the UML after a 'stop' \n\
      go - continue the UML after a 'stop' \n\
      log <string> - make UML enter <string> into the kernel log\n\
      log <string> - make UML enter <string> into the kernel log\n\
@@ -134,32 +134,34 @@
  	err = bind(sock, (struct sockaddr *) &addr, sizeof(addr));
  	err = bind(sock, (struct sockaddr *) &addr, sizeof(addr));
 --- a/include/linux/kmod.h
 --- a/include/linux/kmod.h
 +++ b/include/linux/kmod.h
 +++ b/include/linux/kmod.h
-@@ -62,6 +62,7 @@ struct subprocess_info {
- 	int wait;
- 	int retval;
- 	int (*init)(struct subprocess_info *info, struct cred *new);
-+	struct file *stdout;
- 	void (*cleanup)(struct subprocess_info *info);
- 	void *data;
- };
-@@ -102,4 +103,6 @@ extern int usermodehelper_read_trylock(v
- extern long usermodehelper_read_lock_wait(long timeout);
- extern void usermodehelper_read_unlock(void);
+@@ -45,4 +45,6 @@ static inline int request_module_nowait(
+ #define try_then_request_module(x, mod...) (x)
+ #endif
  
  
 +int call_usermodehelper_stdoutpipe(struct subprocess_info *sub_info, struct file **filp);
 +int call_usermodehelper_stdoutpipe(struct subprocess_info *sub_info, struct file **filp);
 +
 +
  #endif /* __LINUX_KMOD_H__ */
  #endif /* __LINUX_KMOD_H__ */
---- a/kernel/kmod.c
-+++ b/kernel/kmod.c
-@@ -39,6 +39,7 @@
- #include <linux/rwsem.h>
+--- a/include/linux/umh.h
++++ b/include/linux/umh.h
+@@ -22,6 +22,7 @@ struct subprocess_info {
+ 	const char *path;
+ 	char **argv;
+ 	char **envp;
++	struct file *stdout;
+ 	int wait;
+ 	int retval;
+ 	int (*init)(struct subprocess_info *info, struct cred *new);
+--- a/kernel/umh.c
++++ b/kernel/umh.c
+@@ -25,6 +25,7 @@
  #include <linux/ptrace.h>
  #include <linux/ptrace.h>
  #include <linux/async.h>
  #include <linux/async.h>
+ #include <linux/uaccess.h>
 +#include <linux/pipe_fs_i.h>
 +#include <linux/pipe_fs_i.h>
- #include <asm/uaccess.h>
  
  
  #include <trace/events/module.h>
  #include <trace/events/module.h>
-@@ -222,6 +223,28 @@ static int call_usermodehelper_exec_asyn
+ 
+@@ -70,6 +71,28 @@ static int call_usermodehelper_exec_asyn
  	flush_signal_handlers(current, 1);
  	flush_signal_handlers(current, 1);
  	spin_unlock_irq(&current->sighand->siglock);
  	spin_unlock_irq(&current->sighand->siglock);
  
  
@@ -188,23 +190,23 @@
  	/*
  	/*
  	 * Our parent (unbound workqueue) runs with elevated scheduling
  	 * Our parent (unbound workqueue) runs with elevated scheduling
  	 * priority. Avoid propagating that into the userspace child.
  	 * priority. Avoid propagating that into the userspace child.
-@@ -540,6 +563,20 @@ struct subprocess_info *call_usermodehel
+@@ -393,6 +416,20 @@ struct subprocess_info *call_usermodehel
  }
  }
  EXPORT_SYMBOL(call_usermodehelper_setup);
  EXPORT_SYMBOL(call_usermodehelper_setup);
  
  
 +int call_usermodehelper_stdoutpipe(struct subprocess_info *sub_info,
 +int call_usermodehelper_stdoutpipe(struct subprocess_info *sub_info,
-+                                 struct file **filp)
++				   struct file **filp)
 +{
 +{
-+  struct file *f[2];
++	struct file *f[2];
++
++	if (create_pipe_files(f, 0) < 0)
++		return PTR_ERR(f);
 +
 +
-+  if (create_pipe_files(f, 0)<0)
-+    return PTR_ERR(f);
-+  sub_info->stdout = f[1];
-+  *filp = f[0];
-+  return 0;
++	sub_info->stdout = f[1];
++	*filp = f[0];
++	return 0;
 +}
 +}
 +EXPORT_SYMBOL(call_usermodehelper_stdoutpipe);
 +EXPORT_SYMBOL(call_usermodehelper_stdoutpipe);
-+
 +
 +
  /**
  /**
   * call_usermodehelper_exec - start a usermode application
   * call_usermodehelper_exec - start a usermode application

+ 3 - 3
target/linux/uml/patches-4.9/102-pseudo-random-mac.patch → target/linux/uml/patches-4.14/102-pseudo-random-mac.patch

@@ -11,7 +11,7 @@ Applies to vanilla kernel 3.9.4.
 ===============================================================================
 ===============================================================================
 --- a/arch/um/Kconfig.net
 --- a/arch/um/Kconfig.net
 +++ b/arch/um/Kconfig.net
 +++ b/arch/um/Kconfig.net
-@@ -21,6 +21,19 @@ config UML_NET
+@@ -22,6 +22,19 @@ config UML_NET
          enable at least one of the following transport options to actually
          enable at least one of the following transport options to actually
          make use of UML networking.
          make use of UML networking.
  
  
@@ -48,7 +48,7 @@ Applies to vanilla kernel 3.9.4.
  #define DRIVER_NAME "uml-netdev"
  #define DRIVER_NAME "uml-netdev"
  
  
  static DEFINE_SPINLOCK(opened_lock);
  static DEFINE_SPINLOCK(opened_lock);
-@@ -295,11 +303,53 @@ static void uml_net_user_timer_expire(un
+@@ -288,11 +296,53 @@ static void uml_net_user_timer_expire(un
  #endif
  #endif
  }
  }
  
  
@@ -102,7 +102,7 @@ Applies to vanilla kernel 3.9.4.
  
  
  	if (str == NULL)
  	if (str == NULL)
  		goto random;
  		goto random;
-@@ -340,9 +390,26 @@ static void setup_etheraddr(struct net_d
+@@ -333,9 +383,26 @@ static void setup_etheraddr(struct net_d
  	return;
  	return;
  
  
  random:
  random:

+ 0 - 130
target/linux/uml/patches-4.9/000-um-Avoid-longjmp-setjmp-symbol-clashes-with-libpthre.patch

@@ -1,130 +0,0 @@
-From f44f1e7da7c8e3f4575d5d61c4df978496903fcc Mon Sep 17 00:00:00 2001
-From: Florian Fainelli <[email protected]>
-Date: Tue, 23 May 2017 17:32:31 -0700
-Subject: [PATCH] um: Avoid longjmp/setjmp symbol clashes with libpthread.a
-
-[ Upstream commit f44f1e7da7c8e3f4575d5d61c4df978496903fcc ]
-
-Building a statically linked UML kernel on a Centos 6.9 host resulted in
-the following linking failure (GCC 4.4, glibc-2.12):
-
-/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../lib64/libpthread.a(libpthread.o):
-In function `siglongjmp':
-(.text+0x8490): multiple definition of `longjmp'
-arch/x86/um/built-in.o:/local/users/fainelli/openwrt/trunk/build_dir/target-x86_64_musl/linux-uml/linux-4.4.69/arch/x86/um/setjmp_64.S:44:
-first defined here
-/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../lib64/libpthread.a(libpthread.o):
-In function `sem_open':
-(.text+0x77cd): warning: the use of `mktemp' is dangerous, better use
-`mkstemp'
-collect2: ld returned 1 exit status
-make[4]: *** [vmlinux] Error 1
-
-Adopt a solution similar to the one done for vmap where we define
-longjmp/setjmp to be kernel_longjmp/setjmp. In the process, make sure we
-do rename the functions in arch/x86/um/setjmp_*.S accordingly.
-
-Fixes: a7df4716d195 ("um: link with -lpthread")
-Signed-off-by: Florian Fainelli <[email protected]>
-Signed-off-by: Richard Weinberger <[email protected]>
----
- arch/um/Makefile        |  4 ++++
- arch/x86/um/setjmp_32.S | 16 ++++++++--------
- arch/x86/um/setjmp_64.S | 16 ++++++++--------
- 3 files changed, 20 insertions(+), 16 deletions(-)
-
---- a/arch/um/Makefile
-+++ b/arch/um/Makefile
-@@ -59,10 +59,14 @@ KBUILD_CPPFLAGS += -I$(srctree)/$(HOST_D
- # Same things for in6addr_loopback and mktime - found in libc. For these two we
- # only get link-time error, luckily.
- #
-+# -Dlongjmp=kernel_longjmp prevents anything from referencing the libpthread.a
-+# embedded copy of longjmp, same thing for setjmp.
-+#
- # These apply to USER_CFLAGS to.
- 
- KBUILD_CFLAGS += $(CFLAGS) $(CFLAGS-y) -D__arch_um__ \
- 	$(ARCH_INCLUDE) $(MODE_INCLUDE) -Dvmap=kernel_vmap	\
-+	-Dlongjmp=kernel_longjmp -Dsetjmp=kernel_setjmp \
- 	-Din6addr_loopback=kernel_in6addr_loopback \
- 	-Din6addr_any=kernel_in6addr_any -Dstrrchr=kernel_strrchr
- 
---- a/arch/x86/um/setjmp_32.S
-+++ b/arch/x86/um/setjmp_32.S
-@@ -16,9 +16,9 @@
- 
- 	.text
- 	.align 4
--	.globl setjmp
--	.type setjmp, @function
--setjmp:
-+	.globl kernel_setjmp
-+	.type kernel_setjmp, @function
-+kernel_setjmp:
- #ifdef _REGPARM
- 	movl %eax,%edx
- #else
-@@ -35,13 +35,13 @@ setjmp:
- 	movl %ecx,20(%edx)		# Return address
- 	ret
- 
--	.size setjmp,.-setjmp
-+	.size kernel_setjmp,.-kernel_setjmp
- 
- 	.text
- 	.align 4
--	.globl longjmp
--	.type longjmp, @function
--longjmp:
-+	.globl kernel_longjmp
-+	.type kernel_longjmp, @function
-+kernel_longjmp:
- #ifdef _REGPARM
- 	xchgl %eax,%edx
- #else
-@@ -55,4 +55,4 @@ longjmp:
- 	movl 16(%edx),%edi
- 	jmp *20(%edx)
- 
--	.size longjmp,.-longjmp
-+	.size kernel_longjmp,.-kernel_longjmp
---- a/arch/x86/um/setjmp_64.S
-+++ b/arch/x86/um/setjmp_64.S
-@@ -18,9 +18,9 @@
- 
- 	.text
- 	.align 4
--	.globl setjmp
--	.type setjmp, @function
--setjmp:
-+	.globl kernel_setjmp
-+	.type kernel_setjmp, @function
-+kernel_setjmp:
- 	pop  %rsi			# Return address, and adjust the stack
- 	xorl %eax,%eax			# Return value
- 	movq %rbx,(%rdi)
-@@ -34,13 +34,13 @@ setjmp:
- 	movq %rsi,56(%rdi)		# Return address
- 	ret
- 
--	.size setjmp,.-setjmp
-+	.size kernel_setjmp,.-kernel_setjmp
- 
- 	.text
- 	.align 4
--	.globl longjmp
--	.type longjmp, @function
--longjmp:
-+	.globl kernel_longjmp
-+	.type kernel_longjmp, @function
-+kernel_longjmp:
- 	movl %esi,%eax			# Return value (int)
- 	movq (%rdi),%rbx
- 	movq 8(%rdi),%rsp
-@@ -51,4 +51,4 @@ longjmp:
- 	movq 48(%rdi),%r15
- 	jmp *56(%rdi)
- 
--	.size longjmp,.-longjmp
-+	.size kernel_longjmp,.-kernel_longjmp

+ 0 - 99
target/linux/uml/patches-4.9/001-um-Allow-building-and-running-on-older-hosts.patch

@@ -1,99 +0,0 @@
-From 0a987645672ebde7844a9c0732a5a25f3d4bb6c6 Mon Sep 17 00:00:00 2001
-From: Florian Fainelli <[email protected]>
-Date: Thu, 25 May 2017 11:36:26 -0700
-Subject: [PATCH] um: Allow building and running on older hosts
-
-[ Upstream commit 0a987645672ebde7844a9c0732a5a25f3d4bb6c6 ]
-
-Commit a78ff1112263 ("um: add extended processor state save/restore
-support") and b6024b21fec8 ("um: extend fpstate to _xstate to support
-YMM registers") forced the use of the x86 FP _xstate and
-PTRACE_GETREGSET/SETREGSET. On older hosts, we would neither be able to
-build UML nor run it anymore with these two commits applied because we
-don't have definitions for struct _xstate nor these two ptrace requests.
-
-We can determine at build time which fp context structure to check
-against, just like we can keep using the old i387 fp save/restore if
-PTRACE_GETRESET/SETREGSET are not defined.
-
-Fixes: a78ff1112263 ("um: add extended processor state save/restore support")
-Fixes: b6024b21fec8 ("um: extend fpstate to _xstate to support YMM registers")
-Signed-off-by: Florian Fainelli <[email protected]>
-Signed-off-by: Richard Weinberger <[email protected]>
----
- arch/x86/um/os-Linux/registers.c | 12 ++++++++----
- arch/x86/um/user-offsets.c       |  4 ++++
- 2 files changed, 12 insertions(+), 4 deletions(-)
-
---- a/arch/x86/um/os-Linux/registers.c
-+++ b/arch/x86/um/os-Linux/registers.c
-@@ -26,6 +26,7 @@ int save_i387_registers(int pid, unsigne
- 
- int save_fp_registers(int pid, unsigned long *fp_regs)
- {
-+#ifdef PTRACE_GETREGSET
- 	struct iovec iov;
- 
- 	if (have_xstate_support) {
-@@ -34,9 +35,9 @@ int save_fp_registers(int pid, unsigned
- 		if (ptrace(PTRACE_GETREGSET, pid, NT_X86_XSTATE, &iov) < 0)
- 			return -errno;
- 		return 0;
--	} else {
-+	} else
-+#endif
- 		return save_i387_registers(pid, fp_regs);
--	}
- }
- 
- int restore_i387_registers(int pid, unsigned long *fp_regs)
-@@ -48,6 +49,7 @@ int restore_i387_registers(int pid, unsi
- 
- int restore_fp_registers(int pid, unsigned long *fp_regs)
- {
-+#ifdef PTRACE_SETREGSET
- 	struct iovec iov;
- 
- 	if (have_xstate_support) {
-@@ -56,9 +58,9 @@ int restore_fp_registers(int pid, unsign
- 		if (ptrace(PTRACE_SETREGSET, pid, NT_X86_XSTATE, &iov) < 0)
- 			return -errno;
- 		return 0;
--	} else {
-+	} else
-+#endif
- 		return restore_i387_registers(pid, fp_regs);
--	}
- }
- 
- #ifdef __i386__
-@@ -122,6 +124,7 @@ int put_fp_registers(int pid, unsigned l
- 
- void arch_init_registers(int pid)
- {
-+#ifdef PTRACE_GETREGSET
- 	struct _xstate fp_regs;
- 	struct iovec iov;
- 
-@@ -129,6 +132,7 @@ void arch_init_registers(int pid)
- 	iov.iov_len = sizeof(struct _xstate);
- 	if (ptrace(PTRACE_GETREGSET, pid, NT_X86_XSTATE, &iov) == 0)
- 		have_xstate_support = 1;
-+#endif
- }
- #endif
- 
---- a/arch/x86/um/user-offsets.c
-+++ b/arch/x86/um/user-offsets.c
-@@ -50,7 +50,11 @@ void foo(void)
- 	DEFINE(HOST_GS, GS);
- 	DEFINE(HOST_ORIG_AX, ORIG_EAX);
- #else
-+#if defined(PTRACE_GETREGSET) && defined(PTRACE_SETREGSET)
- 	DEFINE(HOST_FP_SIZE, sizeof(struct _xstate) / sizeof(unsigned long));
-+#else
-+	DEFINE(HOST_FP_SIZE, sizeof(struct _fpstate) / sizeof(unsigned long));
-+#endif
- 	DEFINE_LONGS(HOST_BX, RBX);
- 	DEFINE_LONGS(HOST_CX, RCX);
- 	DEFINE_LONGS(HOST_DI, RDI);

+ 0 - 29
target/linux/uml/patches-4.9/002-um-Correctly-check-for-PTRACE_GETRESET-SETREGSET.patch

@@ -1,29 +0,0 @@
-From 61e8d462457f202bf0c6393133425ad387825e22 Mon Sep 17 00:00:00 2001
-From: Richard Weinberger <[email protected]>
-Date: Thu, 6 Jul 2017 09:35:27 +0200
-Subject: [PATCH] um: Correctly check for PTRACE_GETRESET/SETREGSET
-
-[ Upstream commit 61e8d462457f202bf0c6393133425ad387825e22 ]
-
-When checking for PTRACE_GETRESET/SETREGSET, make sure that
-the correct header file is included. We need linux/ptrace.h
-which contains all ptrace UAPI related defines.
-Otherwise #if defined(PTRACE_GETRESET) is always false.
-
-Cc: Florian Fainelli <[email protected]>
-Signed-off-by: Richard Weinberger <[email protected]>
----
- arch/x86/um/user-offsets.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/arch/x86/um/user-offsets.c
-+++ b/arch/x86/um/user-offsets.c
-@@ -5,7 +5,7 @@
- #include <sys/mman.h>
- #include <sys/user.h>
- #define __FRAME_OFFSETS
--#include <asm/ptrace.h>
-+#include <linux/ptrace.h>
- #include <asm/types.h>
- 
- #ifdef __i386__

+ 0 - 46
target/linux/uml/patches-4.9/003-um-Fix-check-for-_xstate-for-older-hosts.patch

@@ -1,46 +0,0 @@
-From 2fb44600fe784449404c6639de26af8361999ec7 Mon Sep 17 00:00:00 2001
-From: Florian Fainelli <[email protected]>
-Date: Tue, 18 Jul 2017 16:43:47 -0700
-Subject: [PATCH] um: Fix check for _xstate for older hosts
-
-Commit 0a987645672e ("um: Allow building and running on older
-hosts") attempted to check for PTRACE_{GET,SET}REGSET under the premise
-that these ptrace(2) parameters were directly linked with the presence
-of the _xstate structure.
-
-After Richard's commit 61e8d462457f ("um: Correctly check for
-PTRACE_GETRESET/SETREGSET") which properly included linux/ptrace.h
-instead of asm/ptrace.h, we could get into the original build failure
-that I reported:
-
-arch/x86/um/user-offsets.c: In function 'foo':
-arch/x86/um/user-offsets.c:54: error: invalid application of 'sizeof' to
-incomplete type 'struct _xstate'
-
-On this particular host, we do have PTRACE_GETREGSET and
-PTRACE_SETREGSET defined in linux/ptrace.h, but not the structure
-_xstate that should be pulled from the following include chain: signal.h
--> bits/sigcontext.h.
-
-Correctly fix this by checking for FP_XSTATE_MAGIC1 which is the correct
-way to see if struct _xstate is available or not on the host.
-
-Fixes: 61e8d462457f ("um: Correctly check for PTRACE_GETRESET/SETREGSET")
-Fixes: 0a987645672e ("um: Allow building and running on older hosts")
-Signed-off-by: Florian Fainelli <[email protected]>
-Signed-off-by: Richard Weinberger <[email protected]>
----
- arch/x86/um/user-offsets.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/arch/x86/um/user-offsets.c
-+++ b/arch/x86/um/user-offsets.c
-@@ -50,7 +50,7 @@ void foo(void)
- 	DEFINE(HOST_GS, GS);
- 	DEFINE(HOST_ORIG_AX, ORIG_EAX);
- #else
--#if defined(PTRACE_GETREGSET) && defined(PTRACE_SETREGSET)
-+#ifdef FP_XSTATE_MAGIC1
- 	DEFINE(HOST_FP_SIZE, sizeof(struct _xstate) / sizeof(unsigned long));
- #else
- 	DEFINE(HOST_FP_SIZE, sizeof(struct _fpstate) / sizeof(unsigned long));