Re: Linux 3.18.50

2017-04-21 Thread Greg KH
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

2017-04-21 Thread Greg KH
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

2017-04-21 Thread Greg KH
   |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

2017-04-21 Thread Greg KH
   |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):