Re: Linux 3.18.50
diff --git a/Makefile b/Makefile index 252070fdf91c..8665178e2a36 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ VERSION = 3 PATCHLEVEL = 18 -SUBLEVEL = 49 +SUBLEVEL = 50 EXTRAVERSION = NAME = Diseased Newt diff --git a/arch/arm/include/asm/psci.h b/arch/arm/include/asm/psci.h index e3789fb02c9c..c25ef3ec6d1f 100644 --- a/arch/arm/include/asm/psci.h +++ b/arch/arm/include/asm/psci.h @@ -37,7 +37,7 @@ struct psci_operations { extern struct psci_operations psci_ops; extern struct smp_operations psci_smp_ops; -#if defined(CONFIG_SMP) && defined(CONFIG_ARM_PSCI) +#ifdef CONFIG_ARM_PSCI int psci_init(void); bool psci_smp_available(void); #else diff --git a/arch/arm/kvm/mmu.c b/arch/arm/kvm/mmu.c index feda3ff185e9..9fb14a37263b 100644 --- a/arch/arm/kvm/mmu.c +++ b/arch/arm/kvm/mmu.c @@ -1407,6 +1407,7 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm, (KVM_PHYS_SIZE >> PAGE_SHIFT)) return -EFAULT; + down_read(>mm->mmap_sem); /* * A memory region could potentially cover multiple VMAs, and any holes * between them, so iterate over all of them to find out if we can map @@ -1464,6 +1465,8 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm, else stage2_flush_memslot(kvm, memslot); spin_unlock(>mmu_lock); + + up_read(>mm->mmap_sem); return ret; } diff --git a/arch/c6x/kernel/ptrace.c b/arch/c6x/kernel/ptrace.c index 3c494e8d..a511ac16a8e3 100644 --- a/arch/c6x/kernel/ptrace.c +++ b/arch/c6x/kernel/ptrace.c @@ -69,46 +69,6 @@ static int gpr_get(struct task_struct *target, 0, sizeof(*regs)); } -static int gpr_set(struct task_struct *target, - const struct user_regset *regset, - unsigned int pos, unsigned int count, - const void *kbuf, const void __user *ubuf) -{ - int ret; - struct pt_regs *regs = task_pt_regs(target); - - /* Don't copyin TSR or CSR */ - ret = user_regset_copyin(, , , , -, -0, PT_TSR * sizeof(long)); - if (ret) - return ret; - - ret = user_regset_copyin_ignore(, , , , - PT_TSR * sizeof(long), - (PT_TSR + 1) * sizeof(long)); - if (ret) - return ret; - - ret = user_regset_copyin(, , , , -, -(PT_TSR + 1) * sizeof(long), -PT_CSR * sizeof(long)); - if (ret) - return ret; - - ret = user_regset_copyin_ignore(, , , , - PT_CSR * sizeof(long), - (PT_CSR + 1) * sizeof(long)); - if (ret) - return ret; - - ret = user_regset_copyin(, , , , -, -(PT_CSR + 1) * sizeof(long), -1); - return ret; -} - enum c6x_regset { REGSET_GPR, }; @@ -120,7 +80,6 @@ static const struct user_regset c6x_regsets[] = { .size = sizeof(u32), .align = sizeof(u32), .get = gpr_get, - .set = gpr_set }, }; diff --git a/arch/metag/include/asm/uaccess.h b/arch/metag/include/asm/uaccess.h index 7841f2290385..9d523375f68a 100644 --- a/arch/metag/include/asm/uaccess.h +++ b/arch/metag/include/asm/uaccess.h @@ -192,20 +192,21 @@ extern long __must_check strnlen_user(const char __user *src, long count); #define strlen_user(str) strnlen_user(str, 32767) -extern unsigned long __must_check __copy_user_zeroing(void *to, - const void __user *from, - unsigned long n); +extern unsigned long raw_copy_from_user(void *to, const void __user *from, + unsigned long n); static inline unsigned long copy_from_user(void *to, const void __user *from, unsigned long n) { + unsigned long res = n; if (likely(access_ok(VERIFY_READ, from, n))) - return __copy_user_zeroing(to, from, n); - memset(to, 0, n); - return n; + res = raw_copy_from_user(to, from, n); + if (unlikely(res)) + memset(to + (n - res), 0, res); + return res; } -#define __copy_from_user(to, from, n) __copy_user_zeroing(to, from, n) +#define __copy_from_user(to, from, n) raw_copy_from_user(to, from, n) #define __copy_from_user_inatomic __copy_from_user extern unsigned long __must_check __copy_user(void __user *to, diff --git a/arch/metag/kernel/ptrace.c b/arch/metag/kernel/ptrace.c index 7563628822bd..5e2dc7defd2c 100644 --- a/arch/metag/kernel/ptrace.c +++ b/arch/metag/kernel/ptrace.c @@ -24,6 +24,16 @@ * user_regset definitions. */ +static unsigned long
Re: Linux 3.18.50
diff --git a/Makefile b/Makefile index 252070fdf91c..8665178e2a36 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ VERSION = 3 PATCHLEVEL = 18 -SUBLEVEL = 49 +SUBLEVEL = 50 EXTRAVERSION = NAME = Diseased Newt diff --git a/arch/arm/include/asm/psci.h b/arch/arm/include/asm/psci.h index e3789fb02c9c..c25ef3ec6d1f 100644 --- a/arch/arm/include/asm/psci.h +++ b/arch/arm/include/asm/psci.h @@ -37,7 +37,7 @@ struct psci_operations { extern struct psci_operations psci_ops; extern struct smp_operations psci_smp_ops; -#if defined(CONFIG_SMP) && defined(CONFIG_ARM_PSCI) +#ifdef CONFIG_ARM_PSCI int psci_init(void); bool psci_smp_available(void); #else diff --git a/arch/arm/kvm/mmu.c b/arch/arm/kvm/mmu.c index feda3ff185e9..9fb14a37263b 100644 --- a/arch/arm/kvm/mmu.c +++ b/arch/arm/kvm/mmu.c @@ -1407,6 +1407,7 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm, (KVM_PHYS_SIZE >> PAGE_SHIFT)) return -EFAULT; + down_read(>mm->mmap_sem); /* * A memory region could potentially cover multiple VMAs, and any holes * between them, so iterate over all of them to find out if we can map @@ -1464,6 +1465,8 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm, else stage2_flush_memslot(kvm, memslot); spin_unlock(>mmu_lock); + + up_read(>mm->mmap_sem); return ret; } diff --git a/arch/c6x/kernel/ptrace.c b/arch/c6x/kernel/ptrace.c index 3c494e8d..a511ac16a8e3 100644 --- a/arch/c6x/kernel/ptrace.c +++ b/arch/c6x/kernel/ptrace.c @@ -69,46 +69,6 @@ static int gpr_get(struct task_struct *target, 0, sizeof(*regs)); } -static int gpr_set(struct task_struct *target, - const struct user_regset *regset, - unsigned int pos, unsigned int count, - const void *kbuf, const void __user *ubuf) -{ - int ret; - struct pt_regs *regs = task_pt_regs(target); - - /* Don't copyin TSR or CSR */ - ret = user_regset_copyin(, , , , -, -0, PT_TSR * sizeof(long)); - if (ret) - return ret; - - ret = user_regset_copyin_ignore(, , , , - PT_TSR * sizeof(long), - (PT_TSR + 1) * sizeof(long)); - if (ret) - return ret; - - ret = user_regset_copyin(, , , , -, -(PT_TSR + 1) * sizeof(long), -PT_CSR * sizeof(long)); - if (ret) - return ret; - - ret = user_regset_copyin_ignore(, , , , - PT_CSR * sizeof(long), - (PT_CSR + 1) * sizeof(long)); - if (ret) - return ret; - - ret = user_regset_copyin(, , , , -, -(PT_CSR + 1) * sizeof(long), -1); - return ret; -} - enum c6x_regset { REGSET_GPR, }; @@ -120,7 +80,6 @@ static const struct user_regset c6x_regsets[] = { .size = sizeof(u32), .align = sizeof(u32), .get = gpr_get, - .set = gpr_set }, }; diff --git a/arch/metag/include/asm/uaccess.h b/arch/metag/include/asm/uaccess.h index 7841f2290385..9d523375f68a 100644 --- a/arch/metag/include/asm/uaccess.h +++ b/arch/metag/include/asm/uaccess.h @@ -192,20 +192,21 @@ extern long __must_check strnlen_user(const char __user *src, long count); #define strlen_user(str) strnlen_user(str, 32767) -extern unsigned long __must_check __copy_user_zeroing(void *to, - const void __user *from, - unsigned long n); +extern unsigned long raw_copy_from_user(void *to, const void __user *from, + unsigned long n); static inline unsigned long copy_from_user(void *to, const void __user *from, unsigned long n) { + unsigned long res = n; if (likely(access_ok(VERIFY_READ, from, n))) - return __copy_user_zeroing(to, from, n); - memset(to, 0, n); - return n; + res = raw_copy_from_user(to, from, n); + if (unlikely(res)) + memset(to + (n - res), 0, res); + return res; } -#define __copy_from_user(to, from, n) __copy_user_zeroing(to, from, n) +#define __copy_from_user(to, from, n) raw_copy_from_user(to, from, n) #define __copy_from_user_inatomic __copy_from_user extern unsigned long __must_check __copy_user(void __user *to, diff --git a/arch/metag/kernel/ptrace.c b/arch/metag/kernel/ptrace.c index 7563628822bd..5e2dc7defd2c 100644 --- a/arch/metag/kernel/ptrace.c +++ b/arch/metag/kernel/ptrace.c @@ -24,6 +24,16 @@ * user_regset definitions. */ +static unsigned long
Linux 3.18.50
|3 drivers/uwb/i1480/dfu/usb.c|3 drivers/video/fbdev/xen-fbfront.c |4 drivers/virtio/virtio_balloon.c|2 drivers/xen/xen-acpi-processor.c | 34 ++ fs/cifs/file.c |6 fs/cifs/smb2pdu.c |4 fs/ext4/inline.c |5 fs/xfs/libxfs/xfs_inode_buf.c |8 fs/xfs/xfs_bmap_util.c |7 fs/xfs/xfs_buf.c |1 include/crypto/internal/hash.h | 10 include/drm/ttm/ttm_object.h |5 include/linux/kvm_host.h |4 include/linux/log2.h | 13 - include/scsi/libiscsi.h|1 kernel/events/core.c |5 kernel/ptrace.c| 14 - kernel/trace/ftrace.c | 20 + kernel/trace/ring_buffer.c |8 mm/hugetlb.c |6 mm/mempolicy.c | 20 - mm/percpu.c|5 net/core/sock.c| 16 - net/ipv4/fib_frontend.c|3 net/ipv4/tcp_input.c |2 net/ipv4/tcp_minisocks.c |1 net/ipv6/route.c |2 net/sched/act_api.c|5 net/sctp/socket.c |8 net/unix/garbage.c | 18 - sound/core/seq/seq_clientmgr.c |1 sound/core/seq/seq_fifo.c |7 sound/core/seq/seq_memory.c| 17 + sound/core/seq/seq_memory.h|1 virt/kvm/eventfd.c |3 virt/kvm/kvm_main.c| 40 ++- 116 files changed, 1271 insertions(+), 699 deletions(-) Adrian Hunter (1): mmc: sdhci: Do not disable interrupts while waiting for clock Amit Pundir (1): Revert "ARM: 8457/1: psci-smp is built only for SMP" Andrey Ulanov (1): net: unix: properly re-increment inflight counter of GC discarded candidates Ankur Arora (1): xen/acpi: upload PM state from init-domain to Xen Anton Blanchard (1): scsi: lpfc: Add shutdown method for kexec Arnd Bergmann (1): dvb-usb-v2: avoid use-after-free Ben Hutchings (4): pegasus: Use heap buffers for all register access rtl8150: Use heap buffers for all register access catc: Combine failure cleanup code in catc_probe() catc: Use heap buffer for memory size test Benjamin Herrenschmidt (1): powerpc: Disable HFSCR[TM] if TM is not supported Bjorn Andersson (1): pinctrl: qcom: Don't clear status bit on irq_unmask Cameron Gutman (1): Input: xpad - add support for Razer Wildcat gamepad Chris J Arges (1): igb: Workaround for igb i210 firmware issue Chris Leech (1): scsi: libiscsi: add lock around task lists to fix list corruption regression Chris Salls (1): mm/mempolicy.c: fix error handling in set_mempolicy and mbind. Daniel Borkmann (1): socket, bpf: fix sk_filter use after free in sk_clone_lock Darrick J. Wong (2): xfs: don't allow di_size with high bit set xfs: clear _XBF_PAGES from buffers when readahead page Dave Martin (6): c6x/ptrace: Remove useless PTRACE_SETREGSET implementation mips/ptrace: Preserve previous registers for short regset write sparc/ptrace: Preserve previous registers for short regset write metag/ptrace: Preserve previous registers for short regset write metag/ptrace: Provide default TXSTATUS for short NT_PRSTATUS metag/ptrace: Reject partial NT_METAG_RPIPE writes David Hildenbrand (1): KVM: kvm_io_bus_unregister_dev() should never fail Eric Biggers (1): ext4: mark inode dirty after converting inline directory Eric Dumazet (3): ipv4: provide stronger user input validation in nl_fib_input() net: properly release sk_frag.page tcp: initialize icsk_ack.lrcvtime at session start time Eric Sandeen (1): xfs: fix up xfs_swap_extent_forks inline extent handling Florian Fainelli (1): net: bcmgenet: Do not suspend PHY if Wake-on-LAN is enabled Frederic Barrat (1): powerpc/mm: Add missing global TLB invalidate if cxl is active Gabriel Krisman Bertazi (1): serial: 8250_pci: Detach low-level driver during PCI error recovery Geert Uytterhoeven (1): char: Drop bogus dependency of DEVPORT on !M68K Germano Percossi (1): CIFS: store results of cifs_reopen_file to avoid infinite wait Greg Kroah-Hartman (1): Linux 3.18.50 Heiko Carstens (1): s390/uaccess: get_user() should zero on failure (again) Henrik Ingo (1):
Linux 3.18.50
|3 drivers/uwb/i1480/dfu/usb.c|3 drivers/video/fbdev/xen-fbfront.c |4 drivers/virtio/virtio_balloon.c|2 drivers/xen/xen-acpi-processor.c | 34 ++ fs/cifs/file.c |6 fs/cifs/smb2pdu.c |4 fs/ext4/inline.c |5 fs/xfs/libxfs/xfs_inode_buf.c |8 fs/xfs/xfs_bmap_util.c |7 fs/xfs/xfs_buf.c |1 include/crypto/internal/hash.h | 10 include/drm/ttm/ttm_object.h |5 include/linux/kvm_host.h |4 include/linux/log2.h | 13 - include/scsi/libiscsi.h|1 kernel/events/core.c |5 kernel/ptrace.c| 14 - kernel/trace/ftrace.c | 20 + kernel/trace/ring_buffer.c |8 mm/hugetlb.c |6 mm/mempolicy.c | 20 - mm/percpu.c|5 net/core/sock.c| 16 - net/ipv4/fib_frontend.c|3 net/ipv4/tcp_input.c |2 net/ipv4/tcp_minisocks.c |1 net/ipv6/route.c |2 net/sched/act_api.c|5 net/sctp/socket.c |8 net/unix/garbage.c | 18 - sound/core/seq/seq_clientmgr.c |1 sound/core/seq/seq_fifo.c |7 sound/core/seq/seq_memory.c| 17 + sound/core/seq/seq_memory.h|1 virt/kvm/eventfd.c |3 virt/kvm/kvm_main.c| 40 ++- 116 files changed, 1271 insertions(+), 699 deletions(-) Adrian Hunter (1): mmc: sdhci: Do not disable interrupts while waiting for clock Amit Pundir (1): Revert "ARM: 8457/1: psci-smp is built only for SMP" Andrey Ulanov (1): net: unix: properly re-increment inflight counter of GC discarded candidates Ankur Arora (1): xen/acpi: upload PM state from init-domain to Xen Anton Blanchard (1): scsi: lpfc: Add shutdown method for kexec Arnd Bergmann (1): dvb-usb-v2: avoid use-after-free Ben Hutchings (4): pegasus: Use heap buffers for all register access rtl8150: Use heap buffers for all register access catc: Combine failure cleanup code in catc_probe() catc: Use heap buffer for memory size test Benjamin Herrenschmidt (1): powerpc: Disable HFSCR[TM] if TM is not supported Bjorn Andersson (1): pinctrl: qcom: Don't clear status bit on irq_unmask Cameron Gutman (1): Input: xpad - add support for Razer Wildcat gamepad Chris J Arges (1): igb: Workaround for igb i210 firmware issue Chris Leech (1): scsi: libiscsi: add lock around task lists to fix list corruption regression Chris Salls (1): mm/mempolicy.c: fix error handling in set_mempolicy and mbind. Daniel Borkmann (1): socket, bpf: fix sk_filter use after free in sk_clone_lock Darrick J. Wong (2): xfs: don't allow di_size with high bit set xfs: clear _XBF_PAGES from buffers when readahead page Dave Martin (6): c6x/ptrace: Remove useless PTRACE_SETREGSET implementation mips/ptrace: Preserve previous registers for short regset write sparc/ptrace: Preserve previous registers for short regset write metag/ptrace: Preserve previous registers for short regset write metag/ptrace: Provide default TXSTATUS for short NT_PRSTATUS metag/ptrace: Reject partial NT_METAG_RPIPE writes David Hildenbrand (1): KVM: kvm_io_bus_unregister_dev() should never fail Eric Biggers (1): ext4: mark inode dirty after converting inline directory Eric Dumazet (3): ipv4: provide stronger user input validation in nl_fib_input() net: properly release sk_frag.page tcp: initialize icsk_ack.lrcvtime at session start time Eric Sandeen (1): xfs: fix up xfs_swap_extent_forks inline extent handling Florian Fainelli (1): net: bcmgenet: Do not suspend PHY if Wake-on-LAN is enabled Frederic Barrat (1): powerpc/mm: Add missing global TLB invalidate if cxl is active Gabriel Krisman Bertazi (1): serial: 8250_pci: Detach low-level driver during PCI error recovery Geert Uytterhoeven (1): char: Drop bogus dependency of DEVPORT on !M68K Germano Percossi (1): CIFS: store results of cifs_reopen_file to avoid infinite wait Greg Kroah-Hartman (1): Linux 3.18.50 Heiko Carstens (1): s390/uaccess: get_user() should zero on failure (again) Henrik Ingo (1):