aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLCPD Auto Merger2017-01-27 17:14:39 -0600
committerLCPD Auto Merger2017-01-27 17:14:39 -0600
commitd571c2af5b22ae1dd388f86706c222d7c9dfc3a4 (patch)
treebcc481cce84ec9e38af10e8c7ebba84678c5606e
parent209b3133d8b13a52f469ed9796a48edee31bbc8a (diff)
parentfb30973887f8d4a88cb975d3a215c2ac62856ff7 (diff)
downloadkernel-omap-d571c2af5b22ae1dd388f86706c222d7c9dfc3a4.tar.gz
kernel-omap-d571c2af5b22ae1dd388f86706c222d7c9dfc3a4.tar.xz
kernel-omap-d571c2af5b22ae1dd388f86706c222d7c9dfc3a4.zip
Merge branch 'ti-linux-4.4.y' of git.ti.com:ti-linux-kernel/ti-linux-kernel into ti-lsk-android-linux-4.4.y
TI-Feature: ti_linux_base_android TI-Tree: git@git.ti.com:ti-linux-kernel/ti-linux-kernel.git TI-Branch: ti-linux-4.4.y * 'ti-linux-4.4.y' of git.ti.com:ti-linux-kernel/ti-linux-kernel: (43 commits) Linux 4.4.45 arm64: avoid returning from bad_mode selftest/powerpc: Wrong PMC initialized in pmc56_overflow test dmaengine: pl330: Fix runtime PM support for terminated transfers ite-cir: initialize use_demodulator before using it blackfin: check devm_pinctrl_get() for errors ARM: 8613/1: Fix the uaccess crash on PB11MPCore ARM: ux500: fix prcmu_is_cpu_in_wfi() calculation ARM: dts: imx6qdl-nitrogen6_max: fix sgtl5000 pinctrl init arm64/ptrace: Reject attempts to set incomplete hardware breakpoint fields arm64/ptrace: Avoid uninitialised struct padding in fpr_set() arm64/ptrace: Preserve previous registers for short regset write - 3 arm64/ptrace: Preserve previous registers for short regset write - 2 arm64/ptrace: Preserve previous registers for short regset write ARM: dts: da850-evm: fix read access to SPI flash ceph: fix bad endianness handling in parse_reply_info_extra ARM: 8634/1: hw_breakpoint: blacklist Scorpion CPUs svcrdma: avoid duplicate dma unmapping during error recovery clocksource/exynos_mct: Clear interrupt when cpu is shut down ubifs: Fix journal replay wrt. xattr nodes ... Signed-off-by: LCPD Auto Merger <lcpd_integration@list.ti.com>
-rw-r--r--Documentation/devicetree/bindings/clock/imx31-clock.txt2
-rw-r--r--Makefile2
-rw-r--r--arch/arm/boot/dts/da850-evm.dts1
-rw-r--r--arch/arm/boot/dts/imx31.dtsi18
-rw-r--r--arch/arm/boot/dts/imx6qdl-nitrogen6_max.dtsi4
-rw-r--r--arch/arm/include/asm/cputype.h3
-rw-r--r--arch/arm/kernel/hw_breakpoint.c16
-rw-r--r--arch/arm/kernel/smp_tlb.c7
-rw-r--r--arch/arm/mach-ux500/pm.c4
-rw-r--r--arch/arm64/include/uapi/asm/ptrace.h1
-rw-r--r--arch/arm64/kernel/entry.S2
-rw-r--r--arch/arm64/kernel/ptrace.c16
-rw-r--r--arch/arm64/kernel/traps.c28
-rw-r--r--arch/x86/kernel/apic/io_apic.c2
-rw-r--r--arch/x86/kernel/mcount_64.S3
-rw-r--r--arch/x86/pci/acpi.c10
-rw-r--r--drivers/clocksource/exynos_mct.c1
-rw-r--r--drivers/dma/pl330.c11
-rw-r--r--drivers/hid/hid-corsair.c60
-rw-r--r--drivers/infiniband/hw/mlx4/ah.c6
-rw-r--r--drivers/infiniband/hw/mlx4/main.c29
-rw-r--r--drivers/infiniband/hw/mlx4/qp.c3
-rw-r--r--drivers/infiniband/hw/mlx5/mr.c28
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_cm.c2
-rw-r--r--drivers/media/platform/blackfin/ppi.c2
-rw-r--r--drivers/media/rc/ite-cir.c2
-rw-r--r--drivers/mmc/host/mxs-mmc.c6
-rw-r--r--drivers/mtd/nand/Kconfig2
-rw-r--r--drivers/net/ieee802154/atusb.c31
-rw-r--r--drivers/pci/probe.c12
-rw-r--r--drivers/scsi/qla2xxx/qla_os.c16
-rw-r--r--fs/ceph/mds_client.c9
-rw-r--r--fs/fuse/dev.c3
-rw-r--r--fs/posix_acl.c9
-rw-r--r--fs/ubifs/tnc.c25
-rw-r--r--net/sunrpc/auth_gss/svcauth_gss.c2
-rw-r--r--net/sunrpc/xprtrdma/svc_rdma_recvfrom.c2
-rw-r--r--tools/perf/util/trace-event-scripting.c6
-rw-r--r--tools/testing/selftests/powerpc/pmu/ebb/pmc56_overflow_test.c2
39 files changed, 297 insertions, 91 deletions
diff --git a/Documentation/devicetree/bindings/clock/imx31-clock.txt b/Documentation/devicetree/bindings/clock/imx31-clock.txt
index 19df842c694f..8163d565f697 100644
--- a/Documentation/devicetree/bindings/clock/imx31-clock.txt
+++ b/Documentation/devicetree/bindings/clock/imx31-clock.txt
@@ -77,7 +77,7 @@ Examples:
77clks: ccm@53f80000{ 77clks: ccm@53f80000{
78 compatible = "fsl,imx31-ccm"; 78 compatible = "fsl,imx31-ccm";
79 reg = <0x53f80000 0x4000>; 79 reg = <0x53f80000 0x4000>;
80 interrupts = <0 31 0x04 0 53 0x04>; 80 interrupts = <31>, <53>;
81 #clock-cells = <1>; 81 #clock-cells = <1>;
82}; 82};
83 83
diff --git a/Makefile b/Makefile
index d6a1de0e2bd7..a3dfc73da722 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
1VERSION = 4 1VERSION = 4
2PATCHLEVEL = 4 2PATCHLEVEL = 4
3SUBLEVEL = 44 3SUBLEVEL = 45
4EXTRAVERSION = 4EXTRAVERSION =
5NAME = Blurry Fish Butt 5NAME = Blurry Fish Butt
6 6
diff --git a/arch/arm/boot/dts/da850-evm.dts b/arch/arm/boot/dts/da850-evm.dts
index 4f935ad9f27b..6881757b03e8 100644
--- a/arch/arm/boot/dts/da850-evm.dts
+++ b/arch/arm/boot/dts/da850-evm.dts
@@ -85,6 +85,7 @@
85 #size-cells = <1>; 85 #size-cells = <1>;
86 compatible = "m25p64"; 86 compatible = "m25p64";
87 spi-max-frequency = <30000000>; 87 spi-max-frequency = <30000000>;
88 m25p,fast-read;
88 reg = <0>; 89 reg = <0>;
89 partition@0 { 90 partition@0 {
90 label = "U-Boot-SPL"; 91 label = "U-Boot-SPL";
diff --git a/arch/arm/boot/dts/imx31.dtsi b/arch/arm/boot/dts/imx31.dtsi
index 5fdb222636a7..cbe5fd5ed179 100644
--- a/arch/arm/boot/dts/imx31.dtsi
+++ b/arch/arm/boot/dts/imx31.dtsi
@@ -30,11 +30,11 @@
30 }; 30 };
31 }; 31 };
32 32
33 avic: avic-interrupt-controller@60000000 { 33 avic: interrupt-controller@68000000 {
34 compatible = "fsl,imx31-avic", "fsl,avic"; 34 compatible = "fsl,imx31-avic", "fsl,avic";
35 interrupt-controller; 35 interrupt-controller;
36 #interrupt-cells = <1>; 36 #interrupt-cells = <1>;
37 reg = <0x60000000 0x100000>; 37 reg = <0x68000000 0x100000>;
38 }; 38 };
39 39
40 soc { 40 soc {
@@ -110,13 +110,6 @@
110 interrupts = <19>; 110 interrupts = <19>;
111 clocks = <&clks 25>; 111 clocks = <&clks 25>;
112 }; 112 };
113
114 clks: ccm@53f80000{
115 compatible = "fsl,imx31-ccm";
116 reg = <0x53f80000 0x4000>;
117 interrupts = <0 31 0x04 0 53 0x04>;
118 #clock-cells = <1>;
119 };
120 }; 113 };
121 114
122 aips@53f00000 { /* AIPS2 */ 115 aips@53f00000 { /* AIPS2 */
@@ -126,6 +119,13 @@
126 reg = <0x53f00000 0x100000>; 119 reg = <0x53f00000 0x100000>;
127 ranges; 120 ranges;
128 121
122 clks: ccm@53f80000{
123 compatible = "fsl,imx31-ccm";
124 reg = <0x53f80000 0x4000>;
125 interrupts = <31>, <53>;
126 #clock-cells = <1>;
127 };
128
129 gpt: timer@53f90000 { 129 gpt: timer@53f90000 {
130 compatible = "fsl,imx31-gpt"; 130 compatible = "fsl,imx31-gpt";
131 reg = <0x53f90000 0x4000>; 131 reg = <0x53f90000 0x4000>;
diff --git a/arch/arm/boot/dts/imx6qdl-nitrogen6_max.dtsi b/arch/arm/boot/dts/imx6qdl-nitrogen6_max.dtsi
index a35d54fd9cd3..ddfdb75a6e90 100644
--- a/arch/arm/boot/dts/imx6qdl-nitrogen6_max.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-nitrogen6_max.dtsi
@@ -319,8 +319,6 @@
319 compatible = "fsl,imx6q-nitrogen6_max-sgtl5000", 319 compatible = "fsl,imx6q-nitrogen6_max-sgtl5000",
320 "fsl,imx-audio-sgtl5000"; 320 "fsl,imx-audio-sgtl5000";
321 model = "imx6q-nitrogen6_max-sgtl5000"; 321 model = "imx6q-nitrogen6_max-sgtl5000";
322 pinctrl-names = "default";
323 pinctrl-0 = <&pinctrl_sgtl5000>;
324 ssi-controller = <&ssi1>; 322 ssi-controller = <&ssi1>;
325 audio-codec = <&codec>; 323 audio-codec = <&codec>;
326 audio-routing = 324 audio-routing =
@@ -401,6 +399,8 @@
401 399
402 codec: sgtl5000@0a { 400 codec: sgtl5000@0a {
403 compatible = "fsl,sgtl5000"; 401 compatible = "fsl,sgtl5000";
402 pinctrl-names = "default";
403 pinctrl-0 = <&pinctrl_sgtl5000>;
404 reg = <0x0a>; 404 reg = <0x0a>;
405 clocks = <&clks 201>; 405 clocks = <&clks 201>;
406 VDDA-supply = <&reg_2p5v>; 406 VDDA-supply = <&reg_2p5v>;
diff --git a/arch/arm/include/asm/cputype.h b/arch/arm/include/asm/cputype.h
index 85e374f873ac..e9d04f475929 100644
--- a/arch/arm/include/asm/cputype.h
+++ b/arch/arm/include/asm/cputype.h
@@ -81,6 +81,9 @@
81#define ARM_CPU_XSCALE_ARCH_V2 0x4000 81#define ARM_CPU_XSCALE_ARCH_V2 0x4000
82#define ARM_CPU_XSCALE_ARCH_V3 0x6000 82#define ARM_CPU_XSCALE_ARCH_V3 0x6000
83 83
84/* Qualcomm implemented cores */
85#define ARM_CPU_PART_SCORPION 0x510002d0
86
84extern unsigned int processor_id; 87extern unsigned int processor_id;
85 88
86#ifdef CONFIG_CPU_CP15 89#ifdef CONFIG_CPU_CP15
diff --git a/arch/arm/kernel/hw_breakpoint.c b/arch/arm/kernel/hw_breakpoint.c
index 6284779d64ee..abcbea1ae30b 100644
--- a/arch/arm/kernel/hw_breakpoint.c
+++ b/arch/arm/kernel/hw_breakpoint.c
@@ -1066,6 +1066,22 @@ static int __init arch_hw_breakpoint_init(void)
1066 return 0; 1066 return 0;
1067 } 1067 }
1068 1068
1069 /*
1070 * Scorpion CPUs (at least those in APQ8060) seem to set DBGPRSR.SPD
1071 * whenever a WFI is issued, even if the core is not powered down, in
1072 * violation of the architecture. When DBGPRSR.SPD is set, accesses to
1073 * breakpoint and watchpoint registers are treated as undefined, so
1074 * this results in boot time and runtime failures when these are
1075 * accessed and we unexpectedly take a trap.
1076 *
1077 * It's not clear if/how this can be worked around, so we blacklist
1078 * Scorpion CPUs to avoid these issues.
1079 */
1080 if (read_cpuid_part() == ARM_CPU_PART_SCORPION) {
1081 pr_info("Scorpion CPU detected. Hardware breakpoints and watchpoints disabled\n");
1082 return 0;
1083 }
1084
1069 has_ossr = core_has_os_save_restore(); 1085 has_ossr = core_has_os_save_restore();
1070 1086
1071 /* Determine how many BRPs/WRPs are available. */ 1087 /* Determine how many BRPs/WRPs are available. */
diff --git a/arch/arm/kernel/smp_tlb.c b/arch/arm/kernel/smp_tlb.c
index 2e72be4f623e..7cb079e74010 100644
--- a/arch/arm/kernel/smp_tlb.c
+++ b/arch/arm/kernel/smp_tlb.c
@@ -9,6 +9,7 @@
9 */ 9 */
10#include <linux/preempt.h> 10#include <linux/preempt.h>
11#include <linux/smp.h> 11#include <linux/smp.h>
12#include <linux/uaccess.h>
12 13
13#include <asm/smp_plat.h> 14#include <asm/smp_plat.h>
14#include <asm/tlbflush.h> 15#include <asm/tlbflush.h>
@@ -40,8 +41,11 @@ static inline void ipi_flush_tlb_mm(void *arg)
40static inline void ipi_flush_tlb_page(void *arg) 41static inline void ipi_flush_tlb_page(void *arg)
41{ 42{
42 struct tlb_args *ta = (struct tlb_args *)arg; 43 struct tlb_args *ta = (struct tlb_args *)arg;
44 unsigned int __ua_flags = uaccess_save_and_enable();
43 45
44 local_flush_tlb_page(ta->ta_vma, ta->ta_start); 46 local_flush_tlb_page(ta->ta_vma, ta->ta_start);
47
48 uaccess_restore(__ua_flags);
45} 49}
46 50
47static inline void ipi_flush_tlb_kernel_page(void *arg) 51static inline void ipi_flush_tlb_kernel_page(void *arg)
@@ -54,8 +58,11 @@ static inline void ipi_flush_tlb_kernel_page(void *arg)
54static inline void ipi_flush_tlb_range(void *arg) 58static inline void ipi_flush_tlb_range(void *arg)
55{ 59{
56 struct tlb_args *ta = (struct tlb_args *)arg; 60 struct tlb_args *ta = (struct tlb_args *)arg;
61 unsigned int __ua_flags = uaccess_save_and_enable();
57 62
58 local_flush_tlb_range(ta->ta_vma, ta->ta_start, ta->ta_end); 63 local_flush_tlb_range(ta->ta_vma, ta->ta_start, ta->ta_end);
64
65 uaccess_restore(__ua_flags);
59} 66}
60 67
61static inline void ipi_flush_tlb_kernel_range(void *arg) 68static inline void ipi_flush_tlb_kernel_range(void *arg)
diff --git a/arch/arm/mach-ux500/pm.c b/arch/arm/mach-ux500/pm.c
index 8538910db202..a970e7fcba9e 100644
--- a/arch/arm/mach-ux500/pm.c
+++ b/arch/arm/mach-ux500/pm.c
@@ -134,8 +134,8 @@ bool prcmu_pending_irq(void)
134 */ 134 */
135bool prcmu_is_cpu_in_wfi(int cpu) 135bool prcmu_is_cpu_in_wfi(int cpu)
136{ 136{
137 return readl(PRCM_ARM_WFI_STANDBY) & cpu ? PRCM_ARM_WFI_STANDBY_WFI1 : 137 return readl(PRCM_ARM_WFI_STANDBY) &
138 PRCM_ARM_WFI_STANDBY_WFI0; 138 (cpu ? PRCM_ARM_WFI_STANDBY_WFI1 : PRCM_ARM_WFI_STANDBY_WFI0);
139} 139}
140 140
141/* 141/*
diff --git a/arch/arm64/include/uapi/asm/ptrace.h b/arch/arm64/include/uapi/asm/ptrace.h
index b5c3933ed441..d1ff83dfe5de 100644
--- a/arch/arm64/include/uapi/asm/ptrace.h
+++ b/arch/arm64/include/uapi/asm/ptrace.h
@@ -77,6 +77,7 @@ struct user_fpsimd_state {
77 __uint128_t vregs[32]; 77 __uint128_t vregs[32];
78 __u32 fpsr; 78 __u32 fpsr;
79 __u32 fpcr; 79 __u32 fpcr;
80 __u32 __reserved[2];
80}; 81};
81 82
82struct user_hwdebug_state { 83struct user_hwdebug_state {
diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S
index 8606895240ba..db8a09331f2b 100644
--- a/arch/arm64/kernel/entry.S
+++ b/arch/arm64/kernel/entry.S
@@ -681,7 +681,7 @@ el0_inv:
681 mov x0, sp 681 mov x0, sp
682 mov x1, #BAD_SYNC 682 mov x1, #BAD_SYNC
683 mov x2, x25 683 mov x2, x25
684 bl bad_mode 684 bl bad_el0_sync
685 b ret_to_user 685 b ret_to_user
686ENDPROC(el0_sync) 686ENDPROC(el0_sync)
687 687
diff --git a/arch/arm64/kernel/ptrace.c b/arch/arm64/kernel/ptrace.c
index df4707380e66..c5ef05959813 100644
--- a/arch/arm64/kernel/ptrace.c
+++ b/arch/arm64/kernel/ptrace.c
@@ -550,6 +550,8 @@ static int hw_break_set(struct task_struct *target,
550 /* (address, ctrl) registers */ 550 /* (address, ctrl) registers */
551 limit = regset->n * regset->size; 551 limit = regset->n * regset->size;
552 while (count && offset < limit) { 552 while (count && offset < limit) {
553 if (count < PTRACE_HBP_ADDR_SZ)
554 return -EINVAL;
553 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &addr, 555 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &addr,
554 offset, offset + PTRACE_HBP_ADDR_SZ); 556 offset, offset + PTRACE_HBP_ADDR_SZ);
555 if (ret) 557 if (ret)
@@ -559,6 +561,8 @@ static int hw_break_set(struct task_struct *target,
559 return ret; 561 return ret;
560 offset += PTRACE_HBP_ADDR_SZ; 562 offset += PTRACE_HBP_ADDR_SZ;
561 563
564 if (!count)
565 break;
562 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &ctrl, 566 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &ctrl,
563 offset, offset + PTRACE_HBP_CTRL_SZ); 567 offset, offset + PTRACE_HBP_CTRL_SZ);
564 if (ret) 568 if (ret)
@@ -595,7 +599,7 @@ static int gpr_set(struct task_struct *target, const struct user_regset *regset,
595 const void *kbuf, const void __user *ubuf) 599 const void *kbuf, const void __user *ubuf)
596{ 600{
597 int ret; 601 int ret;
598 struct user_pt_regs newregs; 602 struct user_pt_regs newregs = task_pt_regs(target)->user_regs;
599 603
600 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &newregs, 0, -1); 604 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &newregs, 0, -1);
601 if (ret) 605 if (ret)
@@ -625,7 +629,8 @@ static int fpr_set(struct task_struct *target, const struct user_regset *regset,
625 const void *kbuf, const void __user *ubuf) 629 const void *kbuf, const void __user *ubuf)
626{ 630{
627 int ret; 631 int ret;
628 struct user_fpsimd_state newstate; 632 struct user_fpsimd_state newstate =
633 target->thread.fpsimd_state.user_fpsimd;
629 634
630 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &newstate, 0, -1); 635 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &newstate, 0, -1);
631 if (ret) 636 if (ret)
@@ -649,7 +654,7 @@ static int tls_set(struct task_struct *target, const struct user_regset *regset,
649 const void *kbuf, const void __user *ubuf) 654 const void *kbuf, const void __user *ubuf)
650{ 655{
651 int ret; 656 int ret;
652 unsigned long tls; 657 unsigned long tls = target->thread.tp_value;
653 658
654 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &tls, 0, -1); 659 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &tls, 0, -1);
655 if (ret) 660 if (ret)
@@ -675,7 +680,8 @@ static int system_call_set(struct task_struct *target,
675 unsigned int pos, unsigned int count, 680 unsigned int pos, unsigned int count,
676 const void *kbuf, const void __user *ubuf) 681 const void *kbuf, const void __user *ubuf)
677{ 682{
678 int syscallno, ret; 683 int syscallno = task_pt_regs(target)->syscallno;
684 int ret;
679 685
680 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &syscallno, 0, -1); 686 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &syscallno, 0, -1);
681 if (ret) 687 if (ret)
@@ -947,7 +953,7 @@ static int compat_tls_set(struct task_struct *target,
947 const void __user *ubuf) 953 const void __user *ubuf)
948{ 954{
949 int ret; 955 int ret;
950 compat_ulong_t tls; 956 compat_ulong_t tls = target->thread.tp_value;
951 957
952 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &tls, 0, -1); 958 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &tls, 0, -1);
953 if (ret) 959 if (ret)
diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c
index 29d7b68f63f0..f5c82c76cf7c 100644
--- a/arch/arm64/kernel/traps.c
+++ b/arch/arm64/kernel/traps.c
@@ -469,16 +469,33 @@ const char *esr_get_class_string(u32 esr)
469} 469}
470 470
471/* 471/*
472 * bad_mode handles the impossible case in the exception vector. 472 * bad_mode handles the impossible case in the exception vector. This is always
473 * fatal.
473 */ 474 */
474asmlinkage void bad_mode(struct pt_regs *regs, int reason, unsigned int esr) 475asmlinkage void bad_mode(struct pt_regs *regs, int reason, unsigned int esr)
475{ 476{
476 siginfo_t info;
477 void __user *pc = (void __user *)instruction_pointer(regs);
478 console_verbose(); 477 console_verbose();
479 478
480 pr_crit("Bad mode in %s handler detected, code 0x%08x -- %s\n", 479 pr_crit("Bad mode in %s handler detected, code 0x%08x -- %s\n",
481 handler[reason], esr, esr_get_class_string(esr)); 480 handler[reason], esr, esr_get_class_string(esr));
481
482 die("Oops - bad mode", regs, 0);
483 local_irq_disable();
484 panic("bad mode");
485}
486
487/*
488 * bad_el0_sync handles unexpected, but potentially recoverable synchronous
489 * exceptions taken from EL0. Unlike bad_mode, this returns.
490 */
491asmlinkage void bad_el0_sync(struct pt_regs *regs, int reason, unsigned int esr)
492{
493 siginfo_t info;
494 void __user *pc = (void __user *)instruction_pointer(regs);
495 console_verbose();
496
497 pr_crit("Bad EL0 synchronous exception detected on CPU%d, code 0x%08x -- %s\n",
498 smp_processor_id(), esr, esr_get_class_string(esr));
482 __show_regs(regs); 499 __show_regs(regs);
483 500
484 info.si_signo = SIGILL; 501 info.si_signo = SIGILL;
@@ -486,7 +503,10 @@ asmlinkage void bad_mode(struct pt_regs *regs, int reason, unsigned int esr)
486 info.si_code = ILL_ILLOPC; 503 info.si_code = ILL_ILLOPC;
487 info.si_addr = pc; 504 info.si_addr = pc;
488 505
489 arm64_notify_die("Oops - bad mode", regs, &info, 0); 506 current->thread.fault_address = 0;
507 current->thread.fault_code = 0;
508
509 force_sig_info(info.si_signo, &info, current);
490} 510}
491 511
492void __pte_error(const char *file, int line, unsigned long val) 512void __pte_error(const char *file, int line, unsigned long val)
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
index fdb0fbfb1197..aaacbd667212 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -1875,6 +1875,7 @@ static struct irq_chip ioapic_chip __read_mostly = {
1875 .irq_ack = irq_chip_ack_parent, 1875 .irq_ack = irq_chip_ack_parent,
1876 .irq_eoi = ioapic_ack_level, 1876 .irq_eoi = ioapic_ack_level,
1877 .irq_set_affinity = ioapic_set_affinity, 1877 .irq_set_affinity = ioapic_set_affinity,
1878 .irq_retrigger = irq_chip_retrigger_hierarchy,
1878 .flags = IRQCHIP_SKIP_SET_WAKE, 1879 .flags = IRQCHIP_SKIP_SET_WAKE,
1879}; 1880};
1880 1881
@@ -1886,6 +1887,7 @@ static struct irq_chip ioapic_ir_chip __read_mostly = {
1886 .irq_ack = irq_chip_ack_parent, 1887 .irq_ack = irq_chip_ack_parent,
1887 .irq_eoi = ioapic_ir_ack_level, 1888 .irq_eoi = ioapic_ir_ack_level,
1888 .irq_set_affinity = ioapic_set_affinity, 1889 .irq_set_affinity = ioapic_set_affinity,
1890 .irq_retrigger = irq_chip_retrigger_hierarchy,
1889 .flags = IRQCHIP_SKIP_SET_WAKE, 1891 .flags = IRQCHIP_SKIP_SET_WAKE,
1890}; 1892};
1891 1893
diff --git a/arch/x86/kernel/mcount_64.S b/arch/x86/kernel/mcount_64.S
index 87e1762e2bca..5d9afbcb6074 100644
--- a/arch/x86/kernel/mcount_64.S
+++ b/arch/x86/kernel/mcount_64.S
@@ -180,7 +180,8 @@ GLOBAL(ftrace_graph_call)
180 jmp ftrace_stub 180 jmp ftrace_stub
181#endif 181#endif
182 182
183GLOBAL(ftrace_stub) 183/* This is weak to keep gas from relaxing the jumps */
184WEAK(ftrace_stub)
184 retq 185 retq
185END(ftrace_caller) 186END(ftrace_caller)
186 187
diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c
index 3cd69832d7f4..3961103e9176 100644
--- a/arch/x86/pci/acpi.c
+++ b/arch/x86/pci/acpi.c
@@ -114,6 +114,16 @@ static const struct dmi_system_id pci_crs_quirks[] __initconst = {
114 DMI_MATCH(DMI_BIOS_VERSION, "6JET85WW (1.43 )"), 114 DMI_MATCH(DMI_BIOS_VERSION, "6JET85WW (1.43 )"),
115 }, 115 },
116 }, 116 },
117 /* https://bugzilla.kernel.org/show_bug.cgi?id=42606 */
118 {
119 .callback = set_nouse_crs,
120 .ident = "Supermicro X8DTH",
121 .matches = {
122 DMI_MATCH(DMI_SYS_VENDOR, "Supermicro"),
123 DMI_MATCH(DMI_PRODUCT_NAME, "X8DTH-i/6/iF/6F"),
124 DMI_MATCH(DMI_BIOS_VERSION, "2.0a"),
125 },
126 },
117 127
118 /* https://bugzilla.kernel.org/show_bug.cgi?id=15362 */ 128 /* https://bugzilla.kernel.org/show_bug.cgi?id=15362 */
119 { 129 {
diff --git a/drivers/clocksource/exynos_mct.c b/drivers/clocksource/exynos_mct.c
index ff44082a0827..47f8aafe3344 100644
--- a/drivers/clocksource/exynos_mct.c
+++ b/drivers/clocksource/exynos_mct.c
@@ -482,6 +482,7 @@ static void exynos4_local_timer_stop(struct mct_clock_event_device *mevt)
482 if (mct_int_type == MCT_INT_SPI) { 482 if (mct_int_type == MCT_INT_SPI) {
483 if (evt->irq != -1) 483 if (evt->irq != -1)
484 disable_irq_nosync(evt->irq); 484 disable_irq_nosync(evt->irq);
485 exynos4_mct_write(0x1, mevt->base + MCT_L_INT_CSTAT_OFFSET);
485 } else { 486 } else {
486 disable_percpu_irq(mct_irqs[MCT_L0_IRQ]); 487 disable_percpu_irq(mct_irqs[MCT_L0_IRQ]);
487 } 488 }
diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c
index 17ee758b419f..8250950aab8b 100644
--- a/drivers/dma/pl330.c
+++ b/drivers/dma/pl330.c
@@ -445,6 +445,9 @@ struct dma_pl330_chan {
445 445
446 /* for cyclic capability */ 446 /* for cyclic capability */
447 bool cyclic; 447 bool cyclic;
448
449 /* for runtime pm tracking */
450 bool active;
448}; 451};
449 452
450struct pl330_dmac { 453struct pl330_dmac {
@@ -1994,6 +1997,7 @@ static void pl330_tasklet(unsigned long data)
1994 _stop(pch->thread); 1997 _stop(pch->thread);
1995 spin_unlock(&pch->thread->dmac->lock); 1998 spin_unlock(&pch->thread->dmac->lock);
1996 power_down = true; 1999 power_down = true;
2000 pch->active = false;
1997 } else { 2001 } else {
1998 /* Make sure the PL330 Channel thread is active */ 2002 /* Make sure the PL330 Channel thread is active */
1999 spin_lock(&pch->thread->dmac->lock); 2003 spin_lock(&pch->thread->dmac->lock);
@@ -2015,6 +2019,7 @@ static void pl330_tasklet(unsigned long data)
2015 desc->status = PREP; 2019 desc->status = PREP;
2016 list_move_tail(&desc->node, &pch->work_list); 2020 list_move_tail(&desc->node, &pch->work_list);
2017 if (power_down) { 2021 if (power_down) {
2022 pch->active = true;
2018 spin_lock(&pch->thread->dmac->lock); 2023 spin_lock(&pch->thread->dmac->lock);
2019 _start(pch->thread); 2024 _start(pch->thread);
2020 spin_unlock(&pch->thread->dmac->lock); 2025 spin_unlock(&pch->thread->dmac->lock);
@@ -2129,6 +2134,7 @@ static int pl330_terminate_all(struct dma_chan *chan)
2129 unsigned long flags; 2134 unsigned long flags;
2130 struct pl330_dmac *pl330 = pch->dmac; 2135 struct pl330_dmac *pl330 = pch->dmac;
2131 LIST_HEAD(list); 2136 LIST_HEAD(list);
2137 bool power_down = false;
2132 2138
2133 pm_runtime_get_sync(pl330->ddma.dev); 2139 pm_runtime_get_sync(pl330->ddma.dev);
2134 spin_lock_irqsave(&pch->lock, flags); 2140 spin_lock_irqsave(&pch->lock, flags);
@@ -2139,6 +2145,8 @@ static int pl330_terminate_all(struct dma_chan *chan)
2139 pch->thread->req[0].desc = NULL; 2145 pch->thread->req[0].desc = NULL;
2140 pch->thread->req[1].desc = NULL; 2146 pch->thread->req[1].desc = NULL;
2141 pch->thread->req_running = -1; 2147 pch->thread->req_running = -1;
2148 power_down = pch->active;
2149 pch->active = false;
2142 2150
2143 /* Mark all desc done */ 2151 /* Mark all desc done */
2144 list_for_each_entry(desc, &pch->submitted_list, node) { 2152 list_for_each_entry(desc, &pch->submitted_list, node) {
@@ -2156,6 +2164,8 @@ static int pl330_terminate_all(struct dma_chan *chan)
2156 list_splice_tail_init(&pch->completed_list, &pl330->desc_pool); 2164 list_splice_tail_init(&pch->completed_list, &pl330->desc_pool);
2157 spin_unlock_irqrestore(&pch->lock, flags); 2165 spin_unlock_irqrestore(&pch->lock, flags);
2158 pm_runtime_mark_last_busy(pl330->ddma.dev); 2166 pm_runtime_mark_last_busy(pl330->ddma.dev);
2167 if (power_down)
2168 pm_runtime_put_autosuspend(pl330->ddma.dev);
2159 pm_runtime_put_autosuspend(pl330->ddma.dev); 2169 pm_runtime_put_autosuspend(pl330->ddma.dev);
2160 2170
2161 return 0; 2171 return 0;
@@ -2302,6 +2312,7 @@ static void pl330_issue_pending(struct dma_chan *chan)
2302 * updated on work_list emptiness status. 2312 * updated on work_list emptiness status.
2303 */ 2313 */
2304 WARN_ON(list_empty(&pch->submitted_list)); 2314 WARN_ON(list_empty(&pch->submitted_list));
2315 pch->active = true;
2305 pm_runtime_get_sync(pch->dmac->ddma.dev); 2316 pm_runtime_get_sync(pch->dmac->ddma.dev);
2306 } 2317 }
2307 list_splice_tail_init(&pch->submitted_list, &pch->work_list); 2318 list_splice_tail_init(&pch->submitted_list, &pch->work_list);
diff --git a/drivers/hid/hid-corsair.c b/drivers/hid/hid-corsair.c
index bcefb9ebb026..88be56321610 100644
--- a/drivers/hid/hid-corsair.c
+++ b/drivers/hid/hid-corsair.c
@@ -148,26 +148,36 @@ static enum led_brightness k90_backlight_get(struct led_classdev *led_cdev)
148 struct usb_interface *usbif = to_usb_interface(dev->parent); 148 struct usb_interface *usbif = to_usb_interface(dev->parent);
149 struct usb_device *usbdev = interface_to_usbdev(usbif); 149 struct usb_device *usbdev = interface_to_usbdev(usbif);
150 int brightness; 150 int brightness;
151 char data[8]; 151 char *data;
152
153 data = kmalloc(8, GFP_KERNEL);
154 if (!data)
155 return -ENOMEM;
152 156
153 ret = usb_control_msg(usbdev, usb_rcvctrlpipe(usbdev, 0), 157 ret = usb_control_msg(usbdev, usb_rcvctrlpipe(usbdev, 0),
154 K90_REQUEST_STATUS, 158 K90_REQUEST_STATUS,
155 USB_DIR_IN | USB_TYPE_VENDOR | 159 USB_DIR_IN | USB_TYPE_VENDOR |
156 USB_RECIP_DEVICE, 0, 0, data, 8, 160 USB_RECIP_DEVICE, 0, 0, data, 8,
157 USB_CTRL_SET_TIMEOUT); 161 USB_CTRL_SET_TIMEOUT);
158 if (ret < 0) { 162 if (ret < 5) {
159 dev_warn(dev, "Failed to get K90 initial state (error %d).\n", 163 dev_warn(dev, "Failed to get K90 initial state (error %d).\n",
160 ret); 164 ret);
161 return -EIO; 165 ret = -EIO;
166 goto out;
162 } 167 }
163 brightness = data[4]; 168 brightness = data[4];
164 if (brightness < 0 || brightness > 3) { 169 if (brightness < 0 || brightness > 3) {
165 dev_warn(dev, 170 dev_warn(dev,
166 "Read invalid backlight brightness: %02hhx.\n", 171 "Read invalid backlight brightness: %02hhx.\n",
167 data[4]); 172 data[4]);
168 return -EIO; 173 ret = -EIO;
174 goto out;
169 } 175 }
170 return brightness; 176 ret = brightness;
177out:
178 kfree(data);
179
180 return ret;
171} 181}
172 182
173static enum led_brightness k90_record_led_get(struct led_classdev *led_cdev) 183static enum led_brightness k90_record_led_get(struct led_classdev *led_cdev)
@@ -253,17 +263,22 @@ static ssize_t k90_show_macro_mode(struct device *dev,
253 struct usb_interface *usbif = to_usb_interface(dev->parent); 263 struct usb_interface *usbif = to_usb_interface(dev->parent);
254 struct usb_device *usbdev = interface_to_usbdev(usbif); 264 struct usb_device *usbdev = interface_to_usbdev(usbif);
255 const char *macro_mode; 265 const char *macro_mode;
256 char data[8]; 266 char *data;
267
268 data = kmalloc(2, GFP_KERNEL);
269 if (!data)
270 return -ENOMEM;
257 271
258 ret = usb_control_msg(usbdev, usb_rcvctrlpipe(usbdev, 0), 272 ret = usb_control_msg(usbdev, usb_rcvctrlpipe(usbdev, 0),
259 K90_REQUEST_GET_MODE, 273 K90_REQUEST_GET_MODE,
260 USB_DIR_IN | USB_TYPE_VENDOR | 274 USB_DIR_IN | USB_TYPE_VENDOR |
261 USB_RECIP_DEVICE, 0, 0, data, 2, 275 USB_RECIP_DEVICE, 0, 0, data, 2,
262 USB_CTRL_SET_TIMEOUT); 276 USB_CTRL_SET_TIMEOUT);
263 if (ret < 0) { 277 if (ret < 1) {
264 dev_warn(dev, "Failed to get K90 initial mode (error %d).\n", 278 dev_warn(dev, "Failed to get K90 initial mode (error %d).\n",
265 ret); 279 ret);
266 return -EIO; 280 ret = -EIO;
281 goto out;
267 } 282 }
268 283
269 switch (data[0]) { 284 switch (data[0]) {
@@ -277,10 +292,15 @@ static ssize_t k90_show_macro_mode(struct device *dev,
277 default: 292 default:
278 dev_warn(dev, "K90 in unknown mode: %02hhx.\n", 293 dev_warn(dev, "K90 in unknown mode: %02hhx.\n",
279 data[0]); 294 data[0]);
280 return -EIO; 295 ret = -EIO;
296 goto out;
281 } 297 }
282 298
283 return snprintf(buf, PAGE_SIZE, "%s\n", macro_mode); 299 ret = snprintf(buf, PAGE_SIZE, "%s\n", macro_mode);
300out:
301 kfree(data);
302
303 return ret;
284} 304}
285 305
286static ssize_t k90_store_macro_mode(struct device *dev, 306static ssize_t k90_store_macro_mode(struct device *dev,
@@ -320,26 +340,36 @@ static ssize_t k90_show_current_profile(struct device *dev,
320 struct usb_interface *usbif = to_usb_interface(dev->parent); 340 struct usb_interface *usbif = to_usb_interface(dev->parent);
321 struct usb_device *usbdev = interface_to_usbdev(usbif); 341 struct usb_device *usbdev = interface_to_usbdev(usbif);
322 int current_profile; 342 int current_profile;
323 char data[8]; 343 char *data;
344
345 data = kmalloc(8, GFP_KERNEL);
346 if (!data)
347 return -ENOMEM;
324 348
325 ret = usb_control_msg(usbdev, usb_rcvctrlpipe(usbdev, 0), 349 ret = usb_control_msg(usbdev, usb_rcvctrlpipe(usbdev, 0),
326 K90_REQUEST_STATUS, 350 K90_REQUEST_STATUS,
327 USB_DIR_IN | USB_TYPE_VENDOR | 351 USB_DIR_IN | USB_TYPE_VENDOR |
328 USB_RECIP_DEVICE, 0, 0, data, 8, 352 USB_RECIP_DEVICE, 0, 0, data, 8,
329 USB_CTRL_SET_TIMEOUT); 353 USB_CTRL_SET_TIMEOUT);
330 if (ret < 0) { 354 if (ret < 8) {
331 dev_warn(dev, "Failed to get K90 initial state (error %d).\n", 355 dev_warn(dev, "Failed to get K90 initial state (error %d).\n",
332 ret); 356 ret);
333 return -EIO; 357 ret = -EIO;
358 goto out;
334 } 359 }
335 current_profile = data[7]; 360 current_profile = data[7];
336 if (current_profile < 1 || current_profile > 3) { 361 if (current_profile < 1 || current_profile > 3) {
337 dev_warn(dev, "Read invalid current profile: %02hhx.\n", 362 dev_warn(dev, "Read invalid current profile: %02hhx.\n",
338 data[7]); 363 data[7]);
339 return -EIO; 364 ret = -EIO;
365 goto out;
340 } 366 }
341 367
342 return snprintf(buf, PAGE_SIZE, "%d\n", current_profile); 368 ret = snprintf(buf, PAGE_SIZE, "%d\n", current_profile);
369out:
370 kfree(data);
371
372 return ret;
343} 373}
344 374
345static ssize_t k90_store_current_profile(struct device *dev, 375static ssize_t k90_store_current_profile(struct device *dev,
diff --git a/drivers/infiniband/hw/mlx4/ah.c b/drivers/infiniband/hw/mlx4/ah.c
index c007c766c61e..fc21bdbb8b32 100644
--- a/drivers/infiniband/hw/mlx4/ah.c
+++ b/drivers/infiniband/hw/mlx4/ah.c
@@ -113,7 +113,9 @@ static struct ib_ah *create_iboe_ah(struct ib_pd *pd, struct ib_ah_attr *ah_attr
113 !(1 << ah->av.eth.stat_rate & dev->caps.stat_rate_support)) 113 !(1 << ah->av.eth.stat_rate & dev->caps.stat_rate_support))
114 --ah->av.eth.stat_rate; 114 --ah->av.eth.stat_rate;
115 } 115 }
116 116 ah->av.eth.sl_tclass_flowlabel |=
117 cpu_to_be32((ah_attr->grh.traffic_class << 20) |
118 ah_attr->grh.flow_label);
117 /* 119 /*
118 * HW requires multicast LID so we just choose one. 120 * HW requires multicast LID so we just choose one.
119 */ 121 */
@@ -121,7 +123,7 @@ static struct ib_ah *create_iboe_ah(struct ib_pd *pd, struct ib_ah_attr *ah_attr
121 ah->av.ib.dlid = cpu_to_be16(0xc000); 123 ah->av.ib.dlid = cpu_to_be16(0xc000);
122 124
123 memcpy(ah->av.eth.dgid, ah_attr->grh.dgid.raw, 16); 125 memcpy(ah->av.eth.dgid, ah_attr->grh.dgid.raw, 16);
124 ah->av.eth.sl_tclass_flowlabel = cpu_to_be32(ah_attr->sl << 29); 126 ah->av.eth.sl_tclass_flowlabel |= cpu_to_be32(ah_attr->sl << 29);
125 127
126 return &ah->ibah; 128 return &ah->ibah;
127} 129}
diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4/main.c
index 97d6878f9938..77ddf2fa8625 100644
--- a/drivers/infiniband/hw/mlx4/main.c
+++ b/drivers/infiniband/hw/mlx4/main.c
@@ -630,9 +630,11 @@ static int eth_link_query_port(struct ib_device *ibdev, u8 port,
630 if (err) 630 if (err)
631 goto out; 631 goto out;
632 632
633 props->active_width = (((u8 *)mailbox->buf)[5] == 0x40) ? 633 props->active_width = (((u8 *)mailbox->buf)[5] == 0x40) ||
634 IB_WIDTH_4X : IB_WIDTH_1X; 634 (((u8 *)mailbox->buf)[5] == 0x20 /*56Gb*/) ?
635 props->active_speed = IB_SPEED_QDR; 635 IB_WIDTH_4X : IB_WIDTH_1X;
636 props->active_speed = (((u8 *)mailbox->buf)[5] == 0x20 /*56Gb*/) ?
637 IB_SPEED_FDR : IB_SPEED_QDR;
636 props->port_cap_flags = IB_PORT_CM_SUP | IB_PORT_IP_BASED_GIDS; 638 props->port_cap_flags = IB_PORT_CM_SUP | IB_PORT_IP_BASED_GIDS;
637 props->gid_tbl_len = mdev->dev->caps.gid_table_len[port]; 639 props->gid_tbl_len = mdev->dev->caps.gid_table_len[port];
638 props->max_msg_sz = mdev->dev->caps.max_msg_sz; 640 props->max_msg_sz = mdev->dev->caps.max_msg_sz;
@@ -2401,14 +2403,19 @@ static void *mlx4_ib_add(struct mlx4_dev *dev)
2401 goto err_steer_qp_release; 2403 goto err_steer_qp_release;
2402 } 2404 }
2403 2405
2404 bitmap_zero(ibdev->ib_uc_qpns_bitmap, ibdev->steer_qpn_count); 2406 if (dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_DMFS_IPOIB) {
2405 2407 bitmap_zero(ibdev->ib_uc_qpns_bitmap,
2406 err = mlx4_FLOW_STEERING_IB_UC_QP_RANGE( 2408 ibdev->steer_qpn_count);
2407 dev, ibdev->steer_qpn_base, 2409 err = mlx4_FLOW_STEERING_IB_UC_QP_RANGE(
2408 ibdev->steer_qpn_base + 2410 dev, ibdev->steer_qpn_base,
2409 ibdev->steer_qpn_count - 1); 2411 ibdev->steer_qpn_base +
2410 if (err) 2412 ibdev->steer_qpn_count - 1);
2411 goto err_steer_free_bitmap; 2413 if (err)
2414 goto err_steer_free_bitmap;
2415 } else {
2416 bitmap_fill(ibdev->ib_uc_qpns_bitmap,
2417 ibdev->steer_qpn_count);
2418 }
2412 } 2419 }
2413 2420
2414 for (j = 1; j <= ibdev->dev->caps.num_ports; j++) 2421 for (j = 1; j <= ibdev->dev->caps.num_ports; j++)
diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
index f350f2d61c15..1c8b7c22c822 100644
--- a/drivers/infiniband/hw/mlx4/qp.c
+++ b/drivers/infiniband/hw/mlx4/qp.c
@@ -1207,7 +1207,8 @@ int mlx4_ib_destroy_qp(struct ib_qp *qp)
1207 if (is_qp0(dev, mqp)) 1207 if (is_qp0(dev, mqp))
1208 mlx4_CLOSE_PORT(dev->dev, mqp->port); 1208 mlx4_CLOSE_PORT(dev->dev, mqp->port);
1209 1209
1210 if (dev->qp1_proxy[mqp->port - 1] == mqp) { 1210 if (mqp->mlx4_ib_qp_type == MLX4_IB_QPT_PROXY_GSI &&
1211 dev->qp1_proxy[mqp->port - 1] == mqp) {
1211 mutex_lock(&dev->qp1_proxy_lock[mqp->port - 1]); 1212 mutex_lock(&dev->qp1_proxy_lock[mqp->port - 1]);
1212 dev->qp1_proxy[mqp->port - 1] = NULL; 1213 dev->qp1_proxy[mqp->port - 1] = NULL;
1213 mutex_unlock(&dev->qp1_proxy_lock[mqp->port - 1]); 1214 mutex_unlock(&dev->qp1_proxy_lock[mqp->port - 1]);
diff --git a/drivers/infiniband/hw/mlx5/mr.c b/drivers/infiniband/hw/mlx5/mr.c
index 6000f7aeede9..3399271c235b 100644
--- a/drivers/infiniband/hw/mlx5/mr.c
+++ b/drivers/infiniband/hw/mlx5/mr.c
@@ -614,6 +614,33 @@ int mlx5_mr_cache_init(struct mlx5_ib_dev *dev)
614 return 0; 614 return 0;
615} 615}
616 616
617static void wait_for_async_commands(struct mlx5_ib_dev *dev)
618{
619 struct mlx5_mr_cache *cache = &dev->cache;
620 struct mlx5_cache_ent *ent;
621 int total = 0;
622 int i;
623 int j;
624
625 for (i = 0; i < MAX_MR_CACHE_ENTRIES; i++) {
626 ent = &cache->ent[i];
627 for (j = 0 ; j < 1000; j++) {
628 if (!ent->pending)
629 break;
630 msleep(50);
631 }
632 }
633 for (i = 0; i < MAX_MR_CACHE_ENTRIES; i++) {
634 ent = &cache->ent[i];
635 total += ent->pending;
636 }
637
638 if (total)
639 mlx5_ib_warn(dev, "aborted while there are %d pending mr requests\n", total);
640 else
641 mlx5_ib_warn(dev, "done with all pending requests\n");
642}
643
617int mlx5_mr_cache_cleanup(struct mlx5_ib_dev *dev) 644int mlx5_mr_cache_cleanup(struct mlx5_ib_dev *dev)
618{ 645{
619 int i; 646 int i;
@@ -627,6 +654,7 @@ int mlx5_mr_cache_cleanup(struct mlx5_ib_dev *dev)
627 clean_keys(dev, i); 654 clean_keys(dev, i);
628 655
629 destroy_workqueue(dev->cache.wq); 656 destroy_workqueue(dev->cache.wq);
657 wait_for_async_commands(dev);
630 del_timer_sync(&dev->delay_timer); 658 del_timer_sync(&dev->delay_timer);
631 659
632 return 0; 660 return 0;
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
index 8ca75af0e6d1..de5e2b01ab05 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
@@ -1035,8 +1035,6 @@ static struct ib_qp *ipoib_cm_create_tx_qp(struct net_device *dev, struct ipoib_
1035 1035
1036 tx_qp = ib_create_qp(priv->pd, &attr); 1036 tx_qp = ib_create_qp(priv->pd, &attr);
1037 if (PTR_ERR(tx_qp) == -EINVAL) { 1037 if (PTR_ERR(tx_qp) == -EINVAL) {
1038 ipoib_warn(priv, "can't use GFP_NOIO for QPs on device %s, using GFP_KERNEL\n",
1039 priv->ca->name);
1040 attr.create_flags &= ~IB_QP_CREATE_USE_GFP_NOIO; 1038 attr.create_flags &= ~IB_QP_CREATE_USE_GFP_NOIO;
1041 tx_qp = ib_create_qp(priv->pd, &attr); 1039 tx_qp = ib_create_qp(priv->pd, &attr);
1042 } 1040 }
diff --git a/drivers/media/platform/blackfin/ppi.c b/drivers/media/platform/blackfin/ppi.c
index cff63e511e6d..b8f3d9fa66e9 100644
--- a/drivers/media/platform/blackfin/ppi.c
+++ b/drivers/media/platform/blackfin/ppi.c
@@ -214,6 +214,8 @@ static int ppi_set_params(struct ppi_if *ppi, struct ppi_params *params)
214 if (params->dlen > 24 || params->dlen <= 0) 214 if (params->dlen > 24 || params->dlen <= 0)
215 return -EINVAL; 215 return -EINVAL;
216 pctrl = devm_pinctrl_get(ppi->dev); 216 pctrl = devm_pinctrl_get(ppi->dev);
217 if (IS_ERR(pctrl))
218 return PTR_ERR(pctrl);
217 pstate = pinctrl_lookup_state(pctrl, 219 pstate = pinctrl_lookup_state(pctrl,
218 pin_state[(params->dlen + 7) / 8 - 1]); 220 pin_state[(params->dlen + 7) / 8 - 1]);
219 if (pinctrl_select_state(pctrl, pstate)) 221 if (pinctrl_select_state(pctrl, pstate))
diff --git a/drivers/media/rc/ite-cir.c b/drivers/media/rc/ite-cir.c
index 0f301903aa6f..63165d324fff 100644
--- a/drivers/media/rc/ite-cir.c
+++ b/drivers/media/rc/ite-cir.c
@@ -263,6 +263,8 @@ static void ite_set_carrier_params(struct ite_dev *dev)
263 263
264 if (allowance > ITE_RXDCR_MAX) 264 if (allowance > ITE_RXDCR_MAX)
265 allowance = ITE_RXDCR_MAX; 265 allowance = ITE_RXDCR_MAX;
266
267 use_demodulator = true;
266 } 268 }
267 } 269 }
268 270
diff --git a/drivers/mmc/host/mxs-mmc.c b/drivers/mmc/host/mxs-mmc.c
index 44ecebd1ea8c..c8b8ac66ff7e 100644
--- a/drivers/mmc/host/mxs-mmc.c
+++ b/drivers/mmc/host/mxs-mmc.c
@@ -309,6 +309,9 @@ static void mxs_mmc_ac(struct mxs_mmc_host *host)
309 cmd0 = BF_SSP(cmd->opcode, CMD0_CMD); 309 cmd0 = BF_SSP(cmd->opcode, CMD0_CMD);
310 cmd1 = cmd->arg; 310 cmd1 = cmd->arg;
311 311
312 if (cmd->opcode == MMC_STOP_TRANSMISSION)
313 cmd0 |= BM_SSP_CMD0_APPEND_8CYC;
314
312 if (host->sdio_irq_en) { 315 if (host->sdio_irq_en) {
313 ctrl0 |= BM_SSP_CTRL0_SDIO_IRQ_CHECK; 316 ctrl0 |= BM_SSP_CTRL0_SDIO_IRQ_CHECK;
314 cmd0 |= BM_SSP_CMD0_CONT_CLKING_EN | BM_SSP_CMD0_SLOW_CLKING_EN; 317 cmd0 |= BM_SSP_CMD0_CONT_CLKING_EN | BM_SSP_CMD0_SLOW_CLKING_EN;
@@ -417,8 +420,7 @@ static void mxs_mmc_adtc(struct mxs_mmc_host *host)
417 ssp->base + HW_SSP_BLOCK_SIZE); 420 ssp->base + HW_SSP_BLOCK_SIZE);
418 } 421 }
419 422
420 if ((cmd->opcode == MMC_STOP_TRANSMISSION) || 423 if (cmd->opcode == SD_IO_RW_EXTENDED)
421 (cmd->opcode == SD_IO_RW_EXTENDED))
422 cmd0 |= BM_SSP_CMD0_APPEND_8CYC; 424 cmd0 |= BM_SSP_CMD0_APPEND_8CYC;
423 425
424 cmd1 = cmd->arg; 426 cmd1 = cmd->arg;
diff --git a/drivers/mtd/nand/Kconfig b/drivers/mtd/nand/Kconfig
index 157ec6ab69da..38d1fbc8d9d5 100644
--- a/drivers/mtd/nand/Kconfig
+++ b/drivers/mtd/nand/Kconfig
@@ -531,7 +531,7 @@ config MTD_NAND_FSMC
531 Flexible Static Memory Controller (FSMC) 531 Flexible Static Memory Controller (FSMC)
532 532
533config MTD_NAND_XWAY 533config MTD_NAND_XWAY
534 tristate "Support for NAND on Lantiq XWAY SoC" 534 bool "Support for NAND on Lantiq XWAY SoC"
535 depends on LANTIQ && SOC_TYPE_XWAY 535 depends on LANTIQ && SOC_TYPE_XWAY
536 select MTD_NAND_PLATFORM 536 select MTD_NAND_PLATFORM
537 help 537 help
diff --git a/drivers/net/ieee802154/atusb.c b/drivers/net/ieee802154/atusb.c
index 199a94a9c8bc..3a429f1a8002 100644
--- a/drivers/net/ieee802154/atusb.c
+++ b/drivers/net/ieee802154/atusb.c
@@ -110,13 +110,26 @@ static int atusb_read_reg(struct atusb *atusb, uint8_t reg)
110{ 110{
111 struct usb_device *usb_dev = atusb->usb_dev; 111 struct usb_device *usb_dev = atusb->usb_dev;
112 int ret; 112 int ret;
113 uint8_t *buffer;
113 uint8_t value; 114 uint8_t value;
114 115
116 buffer = kmalloc(1, GFP_KERNEL);
117 if (!buffer)
118 return -ENOMEM;
119
115 dev_dbg(&usb_dev->dev, "atusb: reg = 0x%x\n", reg); 120 dev_dbg(&usb_dev->dev, "atusb: reg = 0x%x\n", reg);
116 ret = atusb_control_msg(atusb, usb_rcvctrlpipe(usb_dev, 0), 121 ret = atusb_control_msg(atusb, usb_rcvctrlpipe(usb_dev, 0),
117 ATUSB_REG_READ, ATUSB_REQ_FROM_DEV, 122 ATUSB_REG_READ, ATUSB_REQ_FROM_DEV,
118 0, reg, &value, 1, 1000); 123 0, reg, buffer, 1, 1000);
119 return ret >= 0 ? value : ret; 124
125 if (ret >= 0) {
126 value = buffer[0];
127 kfree(buffer);
128 return value;
129 } else {
130 kfree(buffer);
131 return ret;
132 }
120} 133}
121 134
122static int atusb_write_subreg(struct atusb *atusb, uint8_t reg, uint8_t mask, 135static int atusb_write_subreg(struct atusb *atusb, uint8_t reg, uint8_t mask,
@@ -517,9 +530,13 @@ static struct ieee802154_ops atusb_ops = {
517static int atusb_get_and_show_revision(struct atusb *atusb) 530static int atusb_get_and_show_revision(struct atusb *atusb)
518{ 531{
519 struct usb_device *usb_dev = atusb->usb_dev; 532 struct usb_device *usb_dev = atusb->usb_dev;
520 unsigned char buffer[3]; 533 unsigned char *buffer;
521 int ret; 534 int ret;
522 535
536 buffer = kmalloc(3, GFP_KERNEL);
537 if (!buffer)
538 return -ENOMEM;
539
523 /* Get a couple of the ATMega Firmware values */ 540 /* Get a couple of the ATMega Firmware values */
524 ret = atusb_control_msg(atusb, usb_rcvctrlpipe(usb_dev, 0), 541 ret = atusb_control_msg(atusb, usb_rcvctrlpipe(usb_dev, 0),
525 ATUSB_ID, ATUSB_REQ_FROM_DEV, 0, 0, 542 ATUSB_ID, ATUSB_REQ_FROM_DEV, 0, 0,
@@ -535,15 +552,20 @@ static int atusb_get_and_show_revision(struct atusb *atusb)
535 dev_info(&usb_dev->dev, "Please update to version 0.2 or newer"); 552 dev_info(&usb_dev->dev, "Please update to version 0.2 or newer");
536 } 553 }
537 554
555 kfree(buffer);
538 return ret; 556 return ret;
539} 557}
540 558
541static int atusb_get_and_show_build(struct atusb *atusb) 559static int atusb_get_and_show_build(struct atusb *atusb)
542{ 560{
543 struct usb_device *usb_dev = atusb->usb_dev; 561 struct usb_device *usb_dev = atusb->usb_dev;
544 char build[ATUSB_BUILD_SIZE + 1]; 562 char *build;
545 int ret; 563 int ret;
546 564
565 build = kmalloc(ATUSB_BUILD_SIZE + 1, GFP_KERNEL);
566 if (!build)
567 return -ENOMEM;
568
547 ret = atusb_control_msg(atusb, usb_rcvctrlpipe(usb_dev, 0), 569 ret = atusb_control_msg(atusb, usb_rcvctrlpipe(usb_dev, 0),
548 ATUSB_BUILD, ATUSB_REQ_FROM_DEV, 0, 0, 570 ATUSB_BUILD, ATUSB_REQ_FROM_DEV, 0, 0,
549 build, ATUSB_BUILD_SIZE, 1000); 571 build, ATUSB_BUILD_SIZE, 1000);
@@ -552,6 +574,7 @@ static int atusb_get_and_show_build(struct atusb *atusb)
552 dev_info(&usb_dev->dev, "Firmware: build %s\n", build); 574 dev_info(&usb_dev->dev, "Firmware: build %s\n", build);
553 } 575 }
554 576
577 kfree(build);
555 return ret; 578 return ret;
556} 579}
557 580
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index b5843c255263..71d9a6d1bd56 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -1019,6 +1019,7 @@ void set_pcie_port_type(struct pci_dev *pdev)
1019 pos = pci_find_capability(pdev, PCI_CAP_ID_EXP); 1019 pos = pci_find_capability(pdev, PCI_CAP_ID_EXP);
1020 if (!pos) 1020 if (!pos)
1021 return; 1021 return;
1022
1022 pdev->pcie_cap = pos; 1023 pdev->pcie_cap = pos;
1023 pci_read_config_word(pdev, pos + PCI_EXP_FLAGS, &reg16); 1024 pci_read_config_word(pdev, pos + PCI_EXP_FLAGS, &reg16);
1024 pdev->pcie_flags_reg = reg16; 1025 pdev->pcie_flags_reg = reg16;
@@ -1026,13 +1027,14 @@ void set_pcie_port_type(struct pci_dev *pdev)
1026 pdev->pcie_mpss = reg16 & PCI_EXP_DEVCAP_PAYLOAD; 1027 pdev->pcie_mpss = reg16 & PCI_EXP_DEVCAP_PAYLOAD;
1027 1028
1028 /* 1029 /*
1029 * A Root Port is always the upstream end of a Link. No PCIe 1030 * A Root Port or a PCI-to-PCIe bridge is always the upstream end
1030 * component has two Links. Two Links are connected by a Switch 1031 * of a Link. No PCIe component has two Links. Two Links are
1031 * that has a Port on each Link and internal logic to connect the 1032 * connected by a Switch that has a Port on each Link and internal
1032 * two Ports. 1033 * logic to connect the two Ports.
1033 */ 1034 */
1034 type = pci_pcie_type(pdev); 1035 type = pci_pcie_type(pdev);
1035 if (type == PCI_EXP_TYPE_ROOT_PORT) 1036 if (type == PCI_EXP_TYPE_ROOT_PORT ||
1037 type == PCI_EXP_TYPE_PCIE_BRIDGE)
1036 pdev->has_secondary_link = 1; 1038 pdev->has_secondary_link = 1;
1037 else if (type == PCI_EXP_TYPE_UPSTREAM || 1039 else if (type == PCI_EXP_TYPE_UPSTREAM ||
1038 type == PCI_EXP_TYPE_DOWNSTREAM) { 1040 type == PCI_EXP_TYPE_DOWNSTREAM) {
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index c44cbf46221c..3588a56aabb4 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -3365,7 +3365,7 @@ qla2x00_mem_alloc(struct qla_hw_data *ha, uint16_t req_len, uint16_t rsp_len,
3365 sizeof(struct ct6_dsd), 0, 3365 sizeof(struct ct6_dsd), 0,
3366 SLAB_HWCACHE_ALIGN, NULL); 3366 SLAB_HWCACHE_ALIGN, NULL);
3367 if (!ctx_cachep) 3367 if (!ctx_cachep)
3368 goto fail_free_gid_list; 3368 goto fail_free_srb_mempool;
3369 } 3369 }
3370 ha->ctx_mempool = mempool_create_slab_pool(SRB_MIN_REQ, 3370 ha->ctx_mempool = mempool_create_slab_pool(SRB_MIN_REQ,
3371 ctx_cachep); 3371 ctx_cachep);
@@ -3518,7 +3518,7 @@ qla2x00_mem_alloc(struct qla_hw_data *ha, uint16_t req_len, uint16_t rsp_len,
3518 ha->loop_id_map = kzalloc(BITS_TO_LONGS(LOOPID_MAP_SIZE) * sizeof(long), 3518 ha->loop_id_map = kzalloc(BITS_TO_LONGS(LOOPID_MAP_SIZE) * sizeof(long),
3519 GFP_KERNEL); 3519 GFP_KERNEL);
3520 if (!ha->loop_id_map) 3520 if (!ha->loop_id_map)
3521 goto fail_async_pd; 3521 goto fail_loop_id_map;
3522 else { 3522 else {
3523 qla2x00_set_reserved_loop_ids(ha); 3523 qla2x00_set_reserved_loop_ids(ha);
3524 ql_dbg_pci(ql_dbg_init, ha->pdev, 0x0123, 3524 ql_dbg_pci(ql_dbg_init, ha->pdev, 0x0123,
@@ -3527,6 +3527,8 @@ qla2x00_mem_alloc(struct qla_hw_data *ha, uint16_t req_len, uint16_t rsp_len,
3527 3527
3528 return 0; 3528 return 0;
3529 3529
3530fail_loop_id_map:
3531 dma_pool_free(ha->s_dma_pool, ha->async_pd, ha->async_pd_dma);
3530fail_async_pd: 3532fail_async_pd:
3531 dma_pool_free(ha->s_dma_pool, ha->ex_init_cb, ha->ex_init_cb_dma); 3533 dma_pool_free(ha->s_dma_pool, ha->ex_init_cb, ha->ex_init_cb_dma);
3532fail_ex_init_cb: 3534fail_ex_init_cb:
@@ -3554,6 +3556,10 @@ fail_free_ms_iocb:
3554 dma_pool_free(ha->s_dma_pool, ha->ms_iocb, ha->ms_iocb_dma); 3556 dma_pool_free(ha->s_dma_pool, ha->ms_iocb, ha->ms_iocb_dma);
3555 ha->ms_iocb = NULL; 3557 ha->ms_iocb = NULL;
3556 ha->ms_iocb_dma = 0; 3558 ha->ms_iocb_dma = 0;
3559
3560 if (ha->sns_cmd)
3561 dma_free_coherent(&ha->pdev->dev, sizeof(struct sns_cmd_pkt),
3562 ha->sns_cmd, ha->sns_cmd_dma);
3557fail_dma_pool: 3563fail_dma_pool:
3558 if (IS_QLA82XX(ha) || ql2xenabledif) { 3564 if (IS_QLA82XX(ha) || ql2xenabledif) {
3559 dma_pool_destroy(ha->fcp_cmnd_dma_pool); 3565 dma_pool_destroy(ha->fcp_cmnd_dma_pool);
@@ -3571,10 +3577,12 @@ fail_free_nvram:
3571 kfree(ha->nvram); 3577 kfree(ha->nvram);
3572 ha->nvram = NULL; 3578 ha->nvram = NULL;
3573fail_free_ctx_mempool: 3579fail_free_ctx_mempool:
3574 mempool_destroy(ha->ctx_mempool); 3580 if (ha->ctx_mempool)
3581 mempool_destroy(ha->ctx_mempool);
3575 ha->ctx_mempool = NULL; 3582 ha->ctx_mempool = NULL;
3576fail_free_srb_mempool: 3583fail_free_srb_mempool:
3577 mempool_destroy(ha->srb_mempool); 3584 if (ha->srb_mempool)
3585 mempool_destroy(ha->srb_mempool);
3578 ha->srb_mempool = NULL; 3586 ha->srb_mempool = NULL;
3579fail_free_gid_list: 3587fail_free_gid_list:
3580 dma_free_coherent(&ha->pdev->dev, qla2x00_gid_list_size(ha), 3588 dma_free_coherent(&ha->pdev->dev, qla2x00_gid_list_size(ha),
diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c
index e7b130a637f9..239bc9cba28c 100644
--- a/fs/ceph/mds_client.c
+++ b/fs/ceph/mds_client.c
@@ -274,12 +274,13 @@ static int parse_reply_info_extra(void **p, void *end,
274 struct ceph_mds_reply_info_parsed *info, 274 struct ceph_mds_reply_info_parsed *info,
275 u64 features) 275 u64 features)
276{ 276{
277 if (info->head->op == CEPH_MDS_OP_GETFILELOCK) 277 u32 op = le32_to_cpu(info->head->op);
278
279 if (op == CEPH_MDS_OP_GETFILELOCK)
278 return parse_reply_info_filelock(p, end, info, features); 280 return parse_reply_info_filelock(p, end, info, features);
279 else if (info->head->op == CEPH_MDS_OP_READDIR || 281 else if (op == CEPH_MDS_OP_READDIR || op == CEPH_MDS_OP_LSSNAP)
280 info->head->op == CEPH_MDS_OP_LSSNAP)
281 return parse_reply_info_dir(p, end, info, features); 282 return parse_reply_info_dir(p, end, info, features);
282 else if (info->head->op == CEPH_MDS_OP_CREATE) 283 else if (op == CEPH_MDS_OP_CREATE)
283 return parse_reply_info_create(p, end, info, features); 284 return parse_reply_info_create(p, end, info, features);
284 else 285 else
285 return -EIO; 286 return -EIO;
diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
index 8932c06e40c1..7f18063f1655 100644
--- a/fs/fuse/dev.c
+++ b/fs/fuse/dev.c
@@ -2091,7 +2091,6 @@ static void end_requests(struct fuse_conn *fc, struct list_head *head)
2091 struct fuse_req *req; 2091 struct fuse_req *req;
2092 req = list_entry(head->next, struct fuse_req, list); 2092 req = list_entry(head->next, struct fuse_req, list);
2093 req->out.h.error = -ECONNABORTED; 2093 req->out.h.error = -ECONNABORTED;
2094 clear_bit(FR_PENDING, &req->flags);
2095 clear_bit(FR_SENT, &req->flags); 2094 clear_bit(FR_SENT, &req->flags);
2096 list_del_init(&req->list); 2095 list_del_init(&req->list);
2097 request_end(fc, req); 2096 request_end(fc, req);
@@ -2169,6 +2168,8 @@ void fuse_abort_conn(struct fuse_conn *fc)
2169 spin_lock(&fiq->waitq.lock); 2168 spin_lock(&fiq->waitq.lock);
2170 fiq->connected = 0; 2169 fiq->connected = 0;
2171 list_splice_init(&fiq->pending, &to_end2); 2170 list_splice_init(&fiq->pending, &to_end2);
2171 list_for_each_entry(req, &to_end2, list)
2172 clear_bit(FR_PENDING, &req->flags);
2172 while (forget_pending(fiq)) 2173 while (forget_pending(fiq))
2173 kfree(dequeue_forget(fiq, 1, NULL)); 2174 kfree(dequeue_forget(fiq, 1, NULL));
2174 wake_up_all_locked(&fiq->waitq); 2175 wake_up_all_locked(&fiq->waitq);
diff --git a/fs/posix_acl.c b/fs/posix_acl.c
index a60d3cc5b55d..993bb3b5f4d5 100644
--- a/fs/posix_acl.c
+++ b/fs/posix_acl.c
@@ -903,11 +903,10 @@ int simple_set_acl(struct inode *inode, struct posix_acl *acl, int type)
903 int error; 903 int error;
904 904
905 if (type == ACL_TYPE_ACCESS) { 905 if (type == ACL_TYPE_ACCESS) {
906 error = posix_acl_equiv_mode(acl, &inode->i_mode); 906 error = posix_acl_update_mode(inode,
907 if (error < 0) 907 &inode->i_mode, &acl);
908 return 0; 908 if (error)
909 if (error == 0) 909 return error;
910 acl = NULL;
911 } 910 }
912 911
913 inode->i_ctime = CURRENT_TIME; 912 inode->i_ctime = CURRENT_TIME;
diff --git a/fs/ubifs/tnc.c b/fs/ubifs/tnc.c
index fa9a20cc60d6..fe5e8d4970ae 100644
--- a/fs/ubifs/tnc.c
+++ b/fs/ubifs/tnc.c
@@ -34,6 +34,11 @@
34#include <linux/slab.h> 34#include <linux/slab.h>
35#include "ubifs.h" 35#include "ubifs.h"
36 36
37static int try_read_node(const struct ubifs_info *c, void *buf, int type,
38 int len, int lnum, int offs);
39static int fallible_read_node(struct ubifs_info *c, const union ubifs_key *key,
40 struct ubifs_zbranch *zbr, void *node);
41
37/* 42/*
38 * Returned codes of 'matches_name()' and 'fallible_matches_name()' functions. 43 * Returned codes of 'matches_name()' and 'fallible_matches_name()' functions.
39 * @NAME_LESS: name corresponding to the first argument is less than second 44 * @NAME_LESS: name corresponding to the first argument is less than second
@@ -402,7 +407,19 @@ static int tnc_read_node_nm(struct ubifs_info *c, struct ubifs_zbranch *zbr,
402 return 0; 407 return 0;
403 } 408 }
404 409
405 err = ubifs_tnc_read_node(c, zbr, node); 410 if (c->replaying) {
411 err = fallible_read_node(c, &zbr->key, zbr, node);
412 /*
413 * When the node was not found, return -ENOENT, 0 otherwise.
414 * Negative return codes stay as-is.
415 */
416 if (err == 0)
417 err = -ENOENT;
418 else if (err == 1)
419 err = 0;
420 } else {
421 err = ubifs_tnc_read_node(c, zbr, node);
422 }
406 if (err) 423 if (err)
407 return err; 424 return err;
408 425
@@ -2766,7 +2783,11 @@ struct ubifs_dent_node *ubifs_tnc_next_ent(struct ubifs_info *c,
2766 if (nm->name) { 2783 if (nm->name) {
2767 if (err) { 2784 if (err) {
2768 /* Handle collisions */ 2785 /* Handle collisions */
2769 err = resolve_collision(c, key, &znode, &n, nm); 2786 if (c->replaying)
2787 err = fallible_resolve_collision(c, key, &znode, &n,
2788 nm, 0);
2789 else
2790 err = resolve_collision(c, key, &znode, &n, nm);
2770 dbg_tnc("rc returned %d, znode %p, n %d", 2791 dbg_tnc("rc returned %d, znode %p, n %d",
2771 err, znode, n); 2792 err, znode, n);
2772 if (unlikely(err < 0)) 2793 if (unlikely(err < 0))
diff --git a/net/sunrpc/auth_gss/svcauth_gss.c b/net/sunrpc/auth_gss/svcauth_gss.c
index 4605dc73def6..033fec307528 100644
--- a/net/sunrpc/auth_gss/svcauth_gss.c
+++ b/net/sunrpc/auth_gss/svcauth_gss.c
@@ -1481,7 +1481,7 @@ svcauth_gss_accept(struct svc_rqst *rqstp, __be32 *authp)
1481 case RPC_GSS_PROC_DESTROY: 1481 case RPC_GSS_PROC_DESTROY:
1482 if (gss_write_verf(rqstp, rsci->mechctx, gc->gc_seq)) 1482 if (gss_write_verf(rqstp, rsci->mechctx, gc->gc_seq))
1483 goto auth_err; 1483 goto auth_err;
1484 rsci->h.expiry_time = get_seconds(); 1484 rsci->h.expiry_time = seconds_since_boot();
1485 set_bit(CACHE_NEGATIVE, &rsci->h.flags); 1485 set_bit(CACHE_NEGATIVE, &rsci->h.flags);
1486 if (resv->iov_len + 4 > PAGE_SIZE) 1486 if (resv->iov_len + 4 > PAGE_SIZE)
1487 goto drop; 1487 goto drop;
diff --git a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
index ff4f01e527ec..d4e0d648bcea 100644
--- a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
+++ b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
@@ -346,8 +346,6 @@ int rdma_read_chunk_frmr(struct svcxprt_rdma *xprt,
346 atomic_inc(&rdma_stat_read); 346 atomic_inc(&rdma_stat_read);
347 return ret; 347 return ret;
348 err: 348 err:
349 ib_dma_unmap_sg(xprt->sc_cm_id->device,
350 frmr->sg, frmr->sg_nents, frmr->direction);
351 svc_rdma_put_context(ctxt, 0); 349 svc_rdma_put_context(ctxt, 0);
352 svc_rdma_put_frmr(xprt, frmr); 350 svc_rdma_put_frmr(xprt, frmr);
353 return ret; 351 return ret;
diff --git a/tools/perf/util/trace-event-scripting.c b/tools/perf/util/trace-event-scripting.c
index 9df61059a85d..a2fd6e79d5a5 100644
--- a/tools/perf/util/trace-event-scripting.c
+++ b/tools/perf/util/trace-event-scripting.c
@@ -95,7 +95,8 @@ static void register_python_scripting(struct scripting_ops *scripting_ops)
95 if (err) 95 if (err)
96 die("error registering py script extension"); 96 die("error registering py script extension");
97 97
98 scripting_context = malloc(sizeof(struct scripting_context)); 98 if (scripting_context == NULL)
99 scripting_context = malloc(sizeof(*scripting_context));
99} 100}
100 101
101#ifdef NO_LIBPYTHON 102#ifdef NO_LIBPYTHON
@@ -159,7 +160,8 @@ static void register_perl_scripting(struct scripting_ops *scripting_ops)
159 if (err) 160 if (err)
160 die("error registering pl script extension"); 161 die("error registering pl script extension");
161 162
162 scripting_context = malloc(sizeof(struct scripting_context)); 163 if (scripting_context == NULL)
164 scripting_context = malloc(sizeof(*scripting_context));
163} 165}
164 166
165#ifdef NO_LIBPERL 167#ifdef NO_LIBPERL
diff --git a/tools/testing/selftests/powerpc/pmu/ebb/pmc56_overflow_test.c b/tools/testing/selftests/powerpc/pmu/ebb/pmc56_overflow_test.c
index c22860ab9733..30e1ac62e8cb 100644
--- a/tools/testing/selftests/powerpc/pmu/ebb/pmc56_overflow_test.c
+++ b/tools/testing/selftests/powerpc/pmu/ebb/pmc56_overflow_test.c
@@ -66,7 +66,7 @@ int pmc56_overflow(void)
66 66
67 FAIL_IF(ebb_event_enable(&event)); 67 FAIL_IF(ebb_event_enable(&event));
68 68
69 mtspr(SPRN_PMC1, pmc_sample_period(sample_period)); 69 mtspr(SPRN_PMC2, pmc_sample_period(sample_period));
70 mtspr(SPRN_PMC5, 0); 70 mtspr(SPRN_PMC5, 0);
71 mtspr(SPRN_PMC6, 0); 71 mtspr(SPRN_PMC6, 0);
72 72