Magellan Linux

Annotation of /trunk/kernel-alx-legacy/patches-4.9/0390-4.9.291-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3692 - (hide annotations) (download)
Mon Oct 24 14:08:06 2022 UTC (19 months, 3 weeks ago) by niro
File size: 213831 byte(s)
-linux-4.9.291
1 niro 3692 diff --git a/Documentation/devicetree/bindings/regulator/samsung,s5m8767.txt b/Documentation/devicetree/bindings/regulator/samsung,s5m8767.txt
2     index 093edda0c8dfc..6cd83d920155f 100644
3     --- a/Documentation/devicetree/bindings/regulator/samsung,s5m8767.txt
4     +++ b/Documentation/devicetree/bindings/regulator/samsung,s5m8767.txt
5     @@ -13,6 +13,14 @@ common regulator binding documented in:
6    
7    
8     Required properties of the main device node (the parent!):
9     + - s5m8767,pmic-buck-ds-gpios: GPIO specifiers for three host gpio's used
10     + for selecting GPIO DVS lines. It is one-to-one mapped to dvs gpio lines.
11     +
12     + [1] If either of the 's5m8767,pmic-buck[2/3/4]-uses-gpio-dvs' optional
13     + property is specified, then all the eight voltage values for the
14     + 's5m8767,pmic-buck[2/3/4]-dvs-voltage' should be specified.
15     +
16     +Optional properties of the main device node (the parent!):
17     - s5m8767,pmic-buck2-dvs-voltage: A set of 8 voltage values in micro-volt (uV)
18     units for buck2 when changing voltage using gpio dvs. Refer to [1] below
19     for additional information.
20     @@ -25,26 +33,13 @@ Required properties of the main device node (the parent!):
21     units for buck4 when changing voltage using gpio dvs. Refer to [1] below
22     for additional information.
23    
24     - - s5m8767,pmic-buck-ds-gpios: GPIO specifiers for three host gpio's used
25     - for selecting GPIO DVS lines. It is one-to-one mapped to dvs gpio lines.
26     -
27     - [1] If none of the 's5m8767,pmic-buck[2/3/4]-uses-gpio-dvs' optional
28     - property is specified, the 's5m8767,pmic-buck[2/3/4]-dvs-voltage'
29     - property should specify atleast one voltage level (which would be a
30     - safe operating voltage).
31     -
32     - If either of the 's5m8767,pmic-buck[2/3/4]-uses-gpio-dvs' optional
33     - property is specified, then all the eight voltage values for the
34     - 's5m8767,pmic-buck[2/3/4]-dvs-voltage' should be specified.
35     -
36     -Optional properties of the main device node (the parent!):
37     - s5m8767,pmic-buck2-uses-gpio-dvs: 'buck2' can be controlled by gpio dvs.
38     - s5m8767,pmic-buck3-uses-gpio-dvs: 'buck3' can be controlled by gpio dvs.
39     - s5m8767,pmic-buck4-uses-gpio-dvs: 'buck4' can be controlled by gpio dvs.
40    
41     Additional properties required if either of the optional properties are used:
42    
43     - - s5m8767,pmic-buck234-default-dvs-idx: Default voltage setting selected from
44     + - s5m8767,pmic-buck-default-dvs-idx: Default voltage setting selected from
45     the possible 8 options selectable by the dvs gpios. The value of this
46     property should be between 0 and 7. If not specified or if out of range, the
47     default value of this property is set to 0.
48     diff --git a/Makefile b/Makefile
49     index 9f1647076926d..fa41ff3c7cc38 100644
50     --- a/Makefile
51     +++ b/Makefile
52     @@ -1,6 +1,6 @@
53     VERSION = 4
54     PATCHLEVEL = 9
55     -SUBLEVEL = 290
56     +SUBLEVEL = 291
57     EXTRAVERSION =
58     NAME = Roaring Lionus
59    
60     diff --git a/arch/arm/Makefile b/arch/arm/Makefile
61     index d9a2fcd33bc60..1f9747cbc86c0 100644
62     --- a/arch/arm/Makefile
63     +++ b/arch/arm/Makefile
64     @@ -64,15 +64,15 @@ KBUILD_CFLAGS += $(call cc-option,-fno-ipa-sra)
65     # Note that GCC does not numerically define an architecture version
66     # macro, but instead defines a whole series of macros which makes
67     # testing for a specific architecture or later rather impossible.
68     -arch-$(CONFIG_CPU_32v7M) =-D__LINUX_ARM_ARCH__=7 -march=armv7-m -Wa,-march=armv7-m
69     -arch-$(CONFIG_CPU_32v7) =-D__LINUX_ARM_ARCH__=7 $(call cc-option,-march=armv7-a,-march=armv5t -Wa$(comma)-march=armv7-a)
70     -arch-$(CONFIG_CPU_32v6) =-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6,-march=armv5t -Wa$(comma)-march=armv6)
71     +arch-$(CONFIG_CPU_32v7M) =-D__LINUX_ARM_ARCH__=7 -march=armv7-m
72     +arch-$(CONFIG_CPU_32v7) =-D__LINUX_ARM_ARCH__=7 -march=armv7-a
73     +arch-$(CONFIG_CPU_32v6) =-D__LINUX_ARM_ARCH__=6 -march=armv6
74     # Only override the compiler option if ARMv6. The ARMv6K extensions are
75     # always available in ARMv7
76     ifeq ($(CONFIG_CPU_32v6),y)
77     -arch-$(CONFIG_CPU_32v6K) =-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6k,-march=armv5t -Wa$(comma)-march=armv6k)
78     +arch-$(CONFIG_CPU_32v6K) =-D__LINUX_ARM_ARCH__=6 -march=armv6k
79     endif
80     -arch-$(CONFIG_CPU_32v5) =-D__LINUX_ARM_ARCH__=5 $(call cc-option,-march=armv5te,-march=armv4t)
81     +arch-$(CONFIG_CPU_32v5) =-D__LINUX_ARM_ARCH__=5 -march=armv5te
82     arch-$(CONFIG_CPU_32v4T) =-D__LINUX_ARM_ARCH__=4 -march=armv4t
83     arch-$(CONFIG_CPU_32v4) =-D__LINUX_ARM_ARCH__=4 -march=armv4
84     arch-$(CONFIG_CPU_32v3) =-D__LINUX_ARM_ARCH__=3 -march=armv3
85     @@ -86,7 +86,7 @@ tune-$(CONFIG_CPU_ARM720T) =-mtune=arm7tdmi
86     tune-$(CONFIG_CPU_ARM740T) =-mtune=arm7tdmi
87     tune-$(CONFIG_CPU_ARM9TDMI) =-mtune=arm9tdmi
88     tune-$(CONFIG_CPU_ARM940T) =-mtune=arm9tdmi
89     -tune-$(CONFIG_CPU_ARM946E) =$(call cc-option,-mtune=arm9e,-mtune=arm9tdmi)
90     +tune-$(CONFIG_CPU_ARM946E) =-mtune=arm9e
91     tune-$(CONFIG_CPU_ARM920T) =-mtune=arm9tdmi
92     tune-$(CONFIG_CPU_ARM922T) =-mtune=arm9tdmi
93     tune-$(CONFIG_CPU_ARM925T) =-mtune=arm9tdmi
94     @@ -94,11 +94,11 @@ tune-$(CONFIG_CPU_ARM926T) =-mtune=arm9tdmi
95     tune-$(CONFIG_CPU_FA526) =-mtune=arm9tdmi
96     tune-$(CONFIG_CPU_SA110) =-mtune=strongarm110
97     tune-$(CONFIG_CPU_SA1100) =-mtune=strongarm1100
98     -tune-$(CONFIG_CPU_XSCALE) =$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale
99     -tune-$(CONFIG_CPU_XSC3) =$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale
100     -tune-$(CONFIG_CPU_FEROCEON) =$(call cc-option,-mtune=marvell-f,-mtune=xscale)
101     -tune-$(CONFIG_CPU_V6) =$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm)
102     -tune-$(CONFIG_CPU_V6K) =$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm)
103     +tune-$(CONFIG_CPU_XSCALE) =-mtune=xscale
104     +tune-$(CONFIG_CPU_XSC3) =-mtune=xscale
105     +tune-$(CONFIG_CPU_FEROCEON) =-mtune=xscale
106     +tune-$(CONFIG_CPU_V6) =-mtune=arm1136j-s
107     +tune-$(CONFIG_CPU_V6K) =-mtune=arm1136j-s
108    
109     # Evaluate tune cc-option calls now
110     tune-y := $(tune-y)
111     diff --git a/arch/arm/boot/dts/omap-gpmc-smsc9221.dtsi b/arch/arm/boot/dts/omap-gpmc-smsc9221.dtsi
112     index 73e272fadc202..58d288fddd9c2 100644
113     --- a/arch/arm/boot/dts/omap-gpmc-smsc9221.dtsi
114     +++ b/arch/arm/boot/dts/omap-gpmc-smsc9221.dtsi
115     @@ -28,7 +28,7 @@
116     compatible = "smsc,lan9221","smsc,lan9115";
117     bank-width = <2>;
118    
119     - gpmc,mux-add-data;
120     + gpmc,mux-add-data = <0>;
121     gpmc,cs-on-ns = <0>;
122     gpmc,cs-rd-off-ns = <42>;
123     gpmc,cs-wr-off-ns = <36>;
124     diff --git a/arch/arm/boot/dts/omap3-gta04.dtsi b/arch/arm/boot/dts/omap3-gta04.dtsi
125     index 7191506934494..338ee6bd0e0c0 100644
126     --- a/arch/arm/boot/dts/omap3-gta04.dtsi
127     +++ b/arch/arm/boot/dts/omap3-gta04.dtsi
128     @@ -352,7 +352,7 @@
129     compatible = "bosch,bma180";
130     reg = <0x41>;
131     pinctrl-names = "default";
132     - pintcrl-0 = <&bma180_pins>;
133     + pinctrl-0 = <&bma180_pins>;
134     interrupt-parent = <&gpio4>;
135     interrupts = <19 IRQ_TYPE_LEVEL_HIGH>; /* GPIO_115 */
136     };
137     diff --git a/arch/arm/boot/dts/omap3-overo-tobiduo-common.dtsi b/arch/arm/boot/dts/omap3-overo-tobiduo-common.dtsi
138     index 82e98ee3023ad..3dbeb7a6c569c 100644
139     --- a/arch/arm/boot/dts/omap3-overo-tobiduo-common.dtsi
140     +++ b/arch/arm/boot/dts/omap3-overo-tobiduo-common.dtsi
141     @@ -25,7 +25,7 @@
142     compatible = "smsc,lan9221","smsc,lan9115";
143     bank-width = <2>;
144    
145     - gpmc,mux-add-data;
146     + gpmc,mux-add-data = <0>;
147     gpmc,cs-on-ns = <0>;
148     gpmc,cs-rd-off-ns = <42>;
149     gpmc,cs-wr-off-ns = <36>;
150     diff --git a/arch/arm/kernel/stacktrace.c b/arch/arm/kernel/stacktrace.c
151     index 6e8a50de40e2b..c10c1de244eba 100644
152     --- a/arch/arm/kernel/stacktrace.c
153     +++ b/arch/arm/kernel/stacktrace.c
154     @@ -51,8 +51,7 @@ int notrace unwind_frame(struct stackframe *frame)
155    
156     frame->sp = frame->fp;
157     frame->fp = *(unsigned long *)(fp);
158     - frame->pc = frame->lr;
159     - frame->lr = *(unsigned long *)(fp + 4);
160     + frame->pc = *(unsigned long *)(fp + 4);
161     #else
162     /* check current frame pointer is within bounds */
163     if (fp < low + 12 || fp > high - 4)
164     diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig
165     index 7f3760fa9c154..93623627a0b68 100644
166     --- a/arch/arm/mm/Kconfig
167     +++ b/arch/arm/mm/Kconfig
168     @@ -731,7 +731,7 @@ config CPU_BIG_ENDIAN
169     config CPU_ENDIAN_BE8
170     bool
171     depends on CPU_BIG_ENDIAN
172     - default CPU_V6 || CPU_V6K || CPU_V7
173     + default CPU_V6 || CPU_V6K || CPU_V7 || CPU_V7M
174     help
175     Support for the BE-8 (big-endian) mode on ARMv6 and ARMv7 processors.
176    
177     diff --git a/arch/hexagon/lib/io.c b/arch/hexagon/lib/io.c
178     index 885c9626d5e08..e5dfed1cf151b 100644
179     --- a/arch/hexagon/lib/io.c
180     +++ b/arch/hexagon/lib/io.c
181     @@ -40,6 +40,7 @@ void __raw_readsw(const void __iomem *addr, void *data, int len)
182     *dst++ = *src;
183    
184     }
185     +EXPORT_SYMBOL(__raw_readsw);
186    
187     /*
188     * __raw_writesw - read words a short at a time
189     @@ -60,6 +61,7 @@ void __raw_writesw(void __iomem *addr, const void *data, int len)
190    
191    
192     }
193     +EXPORT_SYMBOL(__raw_writesw);
194    
195     /* Pretty sure len is pre-adjusted for the length of the access already */
196     void __raw_readsl(const void __iomem *addr, void *data, int len)
197     @@ -75,6 +77,7 @@ void __raw_readsl(const void __iomem *addr, void *data, int len)
198    
199    
200     }
201     +EXPORT_SYMBOL(__raw_readsl);
202    
203     void __raw_writesl(void __iomem *addr, const void *data, int len)
204     {
205     @@ -89,3 +92,4 @@ void __raw_writesl(void __iomem *addr, const void *data, int len)
206    
207    
208     }
209     +EXPORT_SYMBOL(__raw_writesl);
210     diff --git a/arch/ia64/Kconfig.debug b/arch/ia64/Kconfig.debug
211     index de9d507ba0fd4..ee6c7f75f479d 100644
212     --- a/arch/ia64/Kconfig.debug
213     +++ b/arch/ia64/Kconfig.debug
214     @@ -41,7 +41,7 @@ config DISABLE_VHPT
215    
216     config IA64_DEBUG_CMPXCHG
217     bool "Turn on compare-and-exchange bug checking (slow!)"
218     - depends on DEBUG_KERNEL
219     + depends on DEBUG_KERNEL && PRINTK
220     help
221     Selecting this option turns on bug checking for the IA-64
222     compare-and-exchange instructions. This is slow! Itaniums
223     diff --git a/arch/m68k/Kconfig.machine b/arch/m68k/Kconfig.machine
224     index 2a5c7abb2896e..f622c3ccafc31 100644
225     --- a/arch/m68k/Kconfig.machine
226     +++ b/arch/m68k/Kconfig.machine
227     @@ -184,6 +184,7 @@ config INIT_LCD
228     config MEMORY_RESERVE
229     int "Memory reservation (MiB)"
230     depends on (UCSIMM || UCDIMM)
231     + default 0
232     help
233     Reserve certain memory regions on 68x328 based boards.
234    
235     diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
236     index 24eb7fe7922e6..9708c319a7444 100644
237     --- a/arch/mips/Kconfig
238     +++ b/arch/mips/Kconfig
239     @@ -267,6 +267,9 @@ config BCM63XX
240     select SYS_SUPPORTS_32BIT_KERNEL
241     select SYS_SUPPORTS_BIG_ENDIAN
242     select SYS_HAS_EARLY_PRINTK
243     + select SYS_HAS_CPU_BMIPS32_3300
244     + select SYS_HAS_CPU_BMIPS4350
245     + select SYS_HAS_CPU_BMIPS4380
246     select SWAP_IO_SPACE
247     select GPIOLIB
248     select HAVE_CLK
249     @@ -1373,6 +1376,7 @@ config CPU_LOONGSON3
250     select WEAK_REORDERING_BEYOND_LLSC
251     select MIPS_PGD_C0_CONTEXT
252     select MIPS_L1_CACHE_SHIFT_6
253     + select MIPS_FP_SUPPORT
254     select GPIOLIB
255     help
256     The Loongson 3 processor implements the MIPS64R2 instruction
257     diff --git a/arch/mips/bcm63xx/clk.c b/arch/mips/bcm63xx/clk.c
258     index b49fc9cb9cad2..4f375050ab8e9 100644
259     --- a/arch/mips/bcm63xx/clk.c
260     +++ b/arch/mips/bcm63xx/clk.c
261     @@ -336,6 +336,12 @@ void clk_disable(struct clk *clk)
262    
263     EXPORT_SYMBOL(clk_disable);
264    
265     +struct clk *clk_get_parent(struct clk *clk)
266     +{
267     + return NULL;
268     +}
269     +EXPORT_SYMBOL(clk_get_parent);
270     +
271     unsigned long clk_get_rate(struct clk *clk)
272     {
273     return clk->rate;
274     diff --git a/arch/mips/kernel/r2300_fpu.S b/arch/mips/kernel/r2300_fpu.S
275     index 918f2f6d3861a..ca34767280791 100644
276     --- a/arch/mips/kernel/r2300_fpu.S
277     +++ b/arch/mips/kernel/r2300_fpu.S
278     @@ -27,8 +27,8 @@
279     #define EX2(a,b) \
280     9: a,##b; \
281     .section __ex_table,"a"; \
282     - PTR 9b,bad_stack; \
283     - PTR 9b+4,bad_stack; \
284     + PTR 9b,fault; \
285     + PTR 9b+4,fault; \
286     .previous
287    
288     .set noreorder
289     diff --git a/arch/mips/kernel/syscall.c b/arch/mips/kernel/syscall.c
290     index 4234b2d726c55..67d3cba60c9fa 100644
291     --- a/arch/mips/kernel/syscall.c
292     +++ b/arch/mips/kernel/syscall.c
293     @@ -244,12 +244,3 @@ SYSCALL_DEFINE3(cachectl, char *, addr, int, nbytes, int, op)
294     {
295     return -ENOSYS;
296     }
297     -
298     -/*
299     - * If we ever come here the user sp is bad. Zap the process right away.
300     - * Due to the bad stack signaling wouldn't work.
301     - */
302     -asmlinkage void bad_stack(void)
303     -{
304     - do_exit(SIGSEGV);
305     -}
306     diff --git a/arch/mips/lantiq/xway/dma.c b/arch/mips/lantiq/xway/dma.c
307     index cef811755123f..fc9eff29d8ff0 100644
308     --- a/arch/mips/lantiq/xway/dma.c
309     +++ b/arch/mips/lantiq/xway/dma.c
310     @@ -21,6 +21,7 @@
311     #include <linux/dma-mapping.h>
312     #include <linux/module.h>
313     #include <linux/clk.h>
314     +#include <linux/delay.h>
315     #include <linux/err.h>
316    
317     #include <lantiq_soc.h>
318     @@ -39,6 +40,7 @@
319     #define LTQ_DMA_PCTRL 0x44
320     #define LTQ_DMA_IRNEN 0xf4
321    
322     +#define DMA_ID_CHNR GENMASK(26, 20) /* channel number */
323     #define DMA_DESCPT BIT(3) /* descriptor complete irq */
324     #define DMA_TX BIT(8) /* TX channel direction */
325     #define DMA_CHAN_ON BIT(0) /* channel on / off bit */
326     @@ -49,7 +51,6 @@
327     #define DMA_POLL BIT(31) /* turn on channel polling */
328     #define DMA_CLK_DIV4 BIT(6) /* polling clock divider */
329     #define DMA_2W_BURST BIT(1) /* 2 word burst length */
330     -#define DMA_MAX_CHANNEL 20 /* the soc has 20 channels */
331     #define DMA_ETOP_ENDIANNESS (0xf << 8) /* endianness swap etop channels */
332     #define DMA_WEIGHT (BIT(17) | BIT(16)) /* default channel wheight */
333    
334     @@ -216,7 +217,7 @@ ltq_dma_init(struct platform_device *pdev)
335     {
336     struct clk *clk;
337     struct resource *res;
338     - unsigned id;
339     + unsigned int id, nchannels;
340     int i;
341    
342     res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
343     @@ -232,21 +233,24 @@ ltq_dma_init(struct platform_device *pdev)
344     clk_enable(clk);
345     ltq_dma_w32_mask(0, DMA_RESET, LTQ_DMA_CTRL);
346    
347     + usleep_range(1, 10);
348     +
349     /* disable all interrupts */
350     ltq_dma_w32(0, LTQ_DMA_IRNEN);
351    
352     /* reset/configure each channel */
353     - for (i = 0; i < DMA_MAX_CHANNEL; i++) {
354     + id = ltq_dma_r32(LTQ_DMA_ID);
355     + nchannels = ((id & DMA_ID_CHNR) >> 20);
356     + for (i = 0; i < nchannels; i++) {
357     ltq_dma_w32(i, LTQ_DMA_CS);
358     ltq_dma_w32(DMA_CHAN_RST, LTQ_DMA_CCTRL);
359     ltq_dma_w32(DMA_POLL | DMA_CLK_DIV4, LTQ_DMA_CPOLL);
360     ltq_dma_w32_mask(DMA_CHAN_ON, 0, LTQ_DMA_CCTRL);
361     }
362    
363     - id = ltq_dma_r32(LTQ_DMA_ID);
364     dev_info(&pdev->dev,
365     "Init done - hw rev: %X, ports: %d, channels: %d\n",
366     - id & 0x1f, (id >> 16) & 0xf, id >> 20);
367     + id & 0x1f, (id >> 16) & 0xf, nchannels);
368    
369     return 0;
370     }
371     diff --git a/arch/mips/sni/time.c b/arch/mips/sni/time.c
372     index 7ee14f41fc25d..1ea060f08ffea 100644
373     --- a/arch/mips/sni/time.c
374     +++ b/arch/mips/sni/time.c
375     @@ -17,14 +17,14 @@ static int a20r_set_periodic(struct clock_event_device *evt)
376     {
377     *(volatile u8 *)(A20R_PT_CLOCK_BASE + 12) = 0x34;
378     wmb();
379     - *(volatile u8 *)(A20R_PT_CLOCK_BASE + 0) = SNI_COUNTER0_DIV;
380     + *(volatile u8 *)(A20R_PT_CLOCK_BASE + 0) = SNI_COUNTER0_DIV & 0xff;
381     wmb();
382     *(volatile u8 *)(A20R_PT_CLOCK_BASE + 0) = SNI_COUNTER0_DIV >> 8;
383     wmb();
384    
385     *(volatile u8 *)(A20R_PT_CLOCK_BASE + 12) = 0xb4;
386     wmb();
387     - *(volatile u8 *)(A20R_PT_CLOCK_BASE + 8) = SNI_COUNTER2_DIV;
388     + *(volatile u8 *)(A20R_PT_CLOCK_BASE + 8) = SNI_COUNTER2_DIV & 0xff;
389     wmb();
390     *(volatile u8 *)(A20R_PT_CLOCK_BASE + 8) = SNI_COUNTER2_DIV >> 8;
391     wmb();
392     diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S
393     index 63b140bde2a3a..ad20414b7fb5d 100644
394     --- a/arch/parisc/kernel/entry.S
395     +++ b/arch/parisc/kernel/entry.S
396     @@ -1849,8 +1849,8 @@ syscall_restore:
397     LDREG TI_TASK-THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r1
398    
399     /* Are we being ptraced? */
400     - ldw TASK_FLAGS(%r1),%r19
401     - ldi _TIF_SYSCALL_TRACE_MASK,%r2
402     + LDREG TI_FLAGS-THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r19
403     + ldi _TIF_SINGLESTEP|_TIF_BLOCKSTEP,%r2
404     and,COND(=) %r19,%r2,%r0
405     b,n syscall_restore_rfi
406    
407     diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c
408     index 75dab2871346c..af966c1c922ff 100644
409     --- a/arch/parisc/kernel/smp.c
410     +++ b/arch/parisc/kernel/smp.c
411     @@ -32,6 +32,7 @@
412     #include <linux/bitops.h>
413     #include <linux/ftrace.h>
414     #include <linux/cpu.h>
415     +#include <linux/kgdb.h>
416    
417     #include <linux/atomic.h>
418     #include <asm/current.h>
419     @@ -74,7 +75,10 @@ enum ipi_message_type {
420     IPI_CALL_FUNC,
421     IPI_CPU_START,
422     IPI_CPU_STOP,
423     - IPI_CPU_TEST
424     + IPI_CPU_TEST,
425     +#ifdef CONFIG_KGDB
426     + IPI_ENTER_KGDB,
427     +#endif
428     };
429    
430    
431     @@ -170,7 +174,12 @@ ipi_interrupt(int irq, void *dev_id)
432     case IPI_CPU_TEST:
433     smp_debug(100, KERN_DEBUG "CPU%d is alive!\n", this_cpu);
434     break;
435     -
436     +#ifdef CONFIG_KGDB
437     + case IPI_ENTER_KGDB:
438     + smp_debug(100, KERN_DEBUG "CPU%d ENTER_KGDB\n", this_cpu);
439     + kgdb_nmicallback(raw_smp_processor_id(), get_irq_regs());
440     + break;
441     +#endif
442     default:
443     printk(KERN_CRIT "Unknown IPI num on CPU%d: %lu\n",
444     this_cpu, which);
445     @@ -226,6 +235,12 @@ send_IPI_allbutself(enum ipi_message_type op)
446     }
447     }
448    
449     +#ifdef CONFIG_KGDB
450     +void kgdb_roundup_cpus(void)
451     +{
452     + send_IPI_allbutself(IPI_ENTER_KGDB);
453     +}
454     +#endif
455    
456     inline void
457     smp_send_stop(void) { send_IPI_allbutself(IPI_CPU_STOP); }
458     diff --git a/arch/parisc/mm/init.c b/arch/parisc/mm/init.c
459     index dbbe3932f833c..7bdc449615e85 100644
460     --- a/arch/parisc/mm/init.c
461     +++ b/arch/parisc/mm/init.c
462     @@ -940,9 +940,9 @@ void flush_tlb_all(void)
463     {
464     int do_recycle;
465    
466     - __inc_irq_stat(irq_tlb_count);
467     do_recycle = 0;
468     spin_lock(&sid_lock);
469     + __inc_irq_stat(irq_tlb_count);
470     if (dirty_space_ids > RECYCLE_THRESHOLD) {
471     BUG_ON(recycle_inuse); /* FIXME: Use a semaphore/wait queue here */
472     get_dirty_sids(&recycle_ndirty,recycle_dirty_array);
473     @@ -961,8 +961,8 @@ void flush_tlb_all(void)
474     #else
475     void flush_tlb_all(void)
476     {
477     - __inc_irq_stat(irq_tlb_count);
478     spin_lock(&sid_lock);
479     + __inc_irq_stat(irq_tlb_count);
480     flush_tlb_all_local(NULL);
481     recycle_sids();
482     spin_unlock(&sid_lock);
483     diff --git a/arch/powerpc/boot/dts/charon.dts b/arch/powerpc/boot/dts/charon.dts
484     index 0e00e508eaa6a..1c8fe20752e6a 100644
485     --- a/arch/powerpc/boot/dts/charon.dts
486     +++ b/arch/powerpc/boot/dts/charon.dts
487     @@ -39,7 +39,7 @@
488     };
489     };
490    
491     - memory {
492     + memory@0 {
493     device_type = "memory";
494     reg = <0x00000000 0x08000000>; // 128MB
495     };
496     diff --git a/arch/powerpc/boot/dts/digsy_mtc.dts b/arch/powerpc/boot/dts/digsy_mtc.dts
497     index 955bff629df3c..bf511255f3ae8 100644
498     --- a/arch/powerpc/boot/dts/digsy_mtc.dts
499     +++ b/arch/powerpc/boot/dts/digsy_mtc.dts
500     @@ -20,7 +20,7 @@
501     model = "intercontrol,digsy-mtc";
502     compatible = "intercontrol,digsy-mtc";
503    
504     - memory {
505     + memory@0 {
506     reg = <0x00000000 0x02000000>; // 32MB
507     };
508    
509     diff --git a/arch/powerpc/boot/dts/lite5200.dts b/arch/powerpc/boot/dts/lite5200.dts
510     index 179a1785d6454..18d137a3393f0 100644
511     --- a/arch/powerpc/boot/dts/lite5200.dts
512     +++ b/arch/powerpc/boot/dts/lite5200.dts
513     @@ -36,7 +36,7 @@
514     };
515     };
516    
517     - memory {
518     + memory@0 {
519     device_type = "memory";
520     reg = <0x00000000 0x04000000>; // 64MB
521     };
522     diff --git a/arch/powerpc/boot/dts/lite5200b.dts b/arch/powerpc/boot/dts/lite5200b.dts
523     index 5abb46c5cc951..29419cf81e044 100644
524     --- a/arch/powerpc/boot/dts/lite5200b.dts
525     +++ b/arch/powerpc/boot/dts/lite5200b.dts
526     @@ -35,7 +35,7 @@
527     led4 { gpios = <&gpio_simple 2 1>; };
528     };
529    
530     - memory {
531     + memory@0 {
532     reg = <0x00000000 0x10000000>; // 256MB
533     };
534    
535     diff --git a/arch/powerpc/boot/dts/media5200.dts b/arch/powerpc/boot/dts/media5200.dts
536     index b5413cb85f134..3d57463bc49da 100644
537     --- a/arch/powerpc/boot/dts/media5200.dts
538     +++ b/arch/powerpc/boot/dts/media5200.dts
539     @@ -36,7 +36,7 @@
540     };
541     };
542    
543     - memory {
544     + memory@0 {
545     reg = <0x00000000 0x08000000>; // 128MB RAM
546     };
547    
548     diff --git a/arch/powerpc/boot/dts/mpc5200b.dtsi b/arch/powerpc/boot/dts/mpc5200b.dtsi
549     index 969b2200b2f97..ecfba675b5611 100644
550     --- a/arch/powerpc/boot/dts/mpc5200b.dtsi
551     +++ b/arch/powerpc/boot/dts/mpc5200b.dtsi
552     @@ -37,7 +37,7 @@
553     };
554     };
555    
556     - memory: memory {
557     + memory: memory@0 {
558     device_type = "memory";
559     reg = <0x00000000 0x04000000>; // 64MB
560     };
561     diff --git a/arch/powerpc/boot/dts/o2d.dts b/arch/powerpc/boot/dts/o2d.dts
562     index 9f6dd4d889b32..5a676e8141caf 100644
563     --- a/arch/powerpc/boot/dts/o2d.dts
564     +++ b/arch/powerpc/boot/dts/o2d.dts
565     @@ -16,7 +16,7 @@
566     model = "ifm,o2d";
567     compatible = "ifm,o2d";
568    
569     - memory {
570     + memory@0 {
571     reg = <0x00000000 0x08000000>; // 128MB
572     };
573    
574     diff --git a/arch/powerpc/boot/dts/o2d.dtsi b/arch/powerpc/boot/dts/o2d.dtsi
575     index cf073e693f24d..1b4df5f64b580 100644
576     --- a/arch/powerpc/boot/dts/o2d.dtsi
577     +++ b/arch/powerpc/boot/dts/o2d.dtsi
578     @@ -23,7 +23,7 @@
579     model = "ifm,o2d";
580     compatible = "ifm,o2d";
581    
582     - memory {
583     + memory@0 {
584     reg = <0x00000000 0x04000000>; // 64MB
585     };
586    
587     diff --git a/arch/powerpc/boot/dts/o2dnt2.dts b/arch/powerpc/boot/dts/o2dnt2.dts
588     index a0f5b97a4f06e..5184c461a205f 100644
589     --- a/arch/powerpc/boot/dts/o2dnt2.dts
590     +++ b/arch/powerpc/boot/dts/o2dnt2.dts
591     @@ -16,7 +16,7 @@
592     model = "ifm,o2dnt2";
593     compatible = "ifm,o2d";
594    
595     - memory {
596     + memory@0 {
597     reg = <0x00000000 0x08000000>; // 128MB
598     };
599    
600     diff --git a/arch/powerpc/boot/dts/o3dnt.dts b/arch/powerpc/boot/dts/o3dnt.dts
601     index acce49326491b..045b901719245 100644
602     --- a/arch/powerpc/boot/dts/o3dnt.dts
603     +++ b/arch/powerpc/boot/dts/o3dnt.dts
604     @@ -16,7 +16,7 @@
605     model = "ifm,o3dnt";
606     compatible = "ifm,o2d";
607    
608     - memory {
609     + memory@0 {
610     reg = <0x00000000 0x04000000>; // 64MB
611     };
612    
613     diff --git a/arch/powerpc/boot/dts/pcm032.dts b/arch/powerpc/boot/dts/pcm032.dts
614     index 96b139bf50e9c..ac3f53c1a1f5b 100644
615     --- a/arch/powerpc/boot/dts/pcm032.dts
616     +++ b/arch/powerpc/boot/dts/pcm032.dts
617     @@ -26,7 +26,7 @@
618     model = "phytec,pcm032";
619     compatible = "phytec,pcm032";
620    
621     - memory {
622     + memory@0 {
623     reg = <0x00000000 0x08000000>; // 128MB
624     };
625    
626     diff --git a/arch/powerpc/boot/dts/tqm5200.dts b/arch/powerpc/boot/dts/tqm5200.dts
627     index 1db07f6cf133c..68b9e8240fb5b 100644
628     --- a/arch/powerpc/boot/dts/tqm5200.dts
629     +++ b/arch/powerpc/boot/dts/tqm5200.dts
630     @@ -36,7 +36,7 @@
631     };
632     };
633    
634     - memory {
635     + memory@0 {
636     device_type = "memory";
637     reg = <0x00000000 0x04000000>; // 64MB
638     };
639     diff --git a/arch/powerpc/net/bpf_jit.h b/arch/powerpc/net/bpf_jit.h
640     index 83e5b255d1423..89e61b109c17f 100644
641     --- a/arch/powerpc/net/bpf_jit.h
642     +++ b/arch/powerpc/net/bpf_jit.h
643     @@ -177,13 +177,26 @@
644     #define PPC_NEG(d, a) EMIT(PPC_INST_NEG | ___PPC_RT(d) | ___PPC_RA(a))
645    
646     /* Long jump; (unconditional 'branch') */
647     -#define PPC_JMP(dest) EMIT(PPC_INST_BRANCH | \
648     - (((dest) - (ctx->idx * 4)) & 0x03fffffc))
649     +#define PPC_JMP(dest) \
650     + do { \
651     + long offset = (long)(dest) - (ctx->idx * 4); \
652     + if (offset < -0x2000000 || offset > 0x1fffffc || offset & 0x3) { \
653     + pr_err_ratelimited("Branch offset 0x%lx (@%u) out of range\n", offset, ctx->idx); \
654     + return -ERANGE; \
655     + } \
656     + EMIT(PPC_INST_BRANCH | (offset & 0x03fffffc)); \
657     + } while (0)
658     /* "cond" here covers BO:BI fields. */
659     -#define PPC_BCC_SHORT(cond, dest) EMIT(PPC_INST_BRANCH_COND | \
660     - (((cond) & 0x3ff) << 16) | \
661     - (((dest) - (ctx->idx * 4)) & \
662     - 0xfffc))
663     +#define PPC_BCC_SHORT(cond, dest) \
664     + do { \
665     + long offset = (long)(dest) - (ctx->idx * 4); \
666     + if (offset < -0x8000 || offset > 0x7fff || offset & 0x3) { \
667     + pr_err_ratelimited("Conditional branch offset 0x%lx (@%u) out of range\n", offset, ctx->idx); \
668     + return -ERANGE; \
669     + } \
670     + EMIT(PPC_INST_BRANCH_COND | (((cond) & 0x3ff) << 16) | (offset & 0xfffc)); \
671     + } while (0)
672     +
673     /* Sign-extended 32-bit immediate load */
674     #define PPC_LI32(d, i) do { \
675     if ((int)(uintptr_t)(i) >= -32768 && \
676     diff --git a/arch/powerpc/net/bpf_jit_comp64.c b/arch/powerpc/net/bpf_jit_comp64.c
677     index e08e55cd98e6f..5a834e34c5b4d 100644
678     --- a/arch/powerpc/net/bpf_jit_comp64.c
679     +++ b/arch/powerpc/net/bpf_jit_comp64.c
680     @@ -239,7 +239,7 @@ static void bpf_jit_emit_func_call(u32 *image, struct codegen_context *ctx, u64
681     PPC_BLRL();
682     }
683    
684     -static void bpf_jit_emit_tail_call(u32 *image, struct codegen_context *ctx, u32 out)
685     +static int bpf_jit_emit_tail_call(u32 *image, struct codegen_context *ctx, u32 out)
686     {
687     /*
688     * By now, the eBPF program has already setup parameters in r3, r4 and r5
689     @@ -300,7 +300,9 @@ static void bpf_jit_emit_tail_call(u32 *image, struct codegen_context *ctx, u32
690     bpf_jit_emit_common_epilogue(image, ctx);
691    
692     PPC_BCTR();
693     +
694     /* out: */
695     + return 0;
696     }
697    
698     /* Assemble the body code between the prologue & epilogue */
699     @@ -310,7 +312,7 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 *image,
700     {
701     const struct bpf_insn *insn = fp->insnsi;
702     int flen = fp->len;
703     - int i;
704     + int i, ret;
705    
706     /* Start of epilogue code - will only be valid 2nd pass onwards */
707     u32 exit_addr = addrs[flen];
708     @@ -361,18 +363,25 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 *image,
709     PPC_SUB(dst_reg, dst_reg, src_reg);
710     goto bpf_alu32_trunc;
711     case BPF_ALU | BPF_ADD | BPF_K: /* (u32) dst += (u32) imm */
712     - case BPF_ALU | BPF_SUB | BPF_K: /* (u32) dst -= (u32) imm */
713     case BPF_ALU64 | BPF_ADD | BPF_K: /* dst += imm */
714     + if (!imm) {
715     + goto bpf_alu32_trunc;
716     + } else if (imm >= -32768 && imm < 32768) {
717     + PPC_ADDI(dst_reg, dst_reg, IMM_L(imm));
718     + } else {
719     + PPC_LI32(b2p[TMP_REG_1], imm);
720     + PPC_ADD(dst_reg, dst_reg, b2p[TMP_REG_1]);
721     + }
722     + goto bpf_alu32_trunc;
723     + case BPF_ALU | BPF_SUB | BPF_K: /* (u32) dst -= (u32) imm */
724     case BPF_ALU64 | BPF_SUB | BPF_K: /* dst -= imm */
725     - if (BPF_OP(code) == BPF_SUB)
726     - imm = -imm;
727     - if (imm) {
728     - if (imm >= -32768 && imm < 32768)
729     - PPC_ADDI(dst_reg, dst_reg, IMM_L(imm));
730     - else {
731     - PPC_LI32(b2p[TMP_REG_1], imm);
732     - PPC_ADD(dst_reg, dst_reg, b2p[TMP_REG_1]);
733     - }
734     + if (!imm) {
735     + goto bpf_alu32_trunc;
736     + } else if (imm > -32768 && imm <= 32768) {
737     + PPC_ADDI(dst_reg, dst_reg, IMM_L(-imm));
738     + } else {
739     + PPC_LI32(b2p[TMP_REG_1], imm);
740     + PPC_SUB(dst_reg, dst_reg, b2p[TMP_REG_1]);
741     }
742     goto bpf_alu32_trunc;
743     case BPF_ALU | BPF_MUL | BPF_X: /* (u32) dst *= (u32) src */
744     @@ -938,7 +947,9 @@ common_load:
745     */
746     case BPF_JMP | BPF_CALL | BPF_X:
747     ctx->seen |= SEEN_TAILCALL;
748     - bpf_jit_emit_tail_call(image, ctx, addrs[i + 1]);
749     + ret = bpf_jit_emit_tail_call(image, ctx, addrs[i + 1]);
750     + if (ret < 0)
751     + return ret;
752     break;
753    
754     default:
755     diff --git a/arch/powerpc/platforms/85xx/mpc85xx_pm_ops.c b/arch/powerpc/platforms/85xx/mpc85xx_pm_ops.c
756     index f05325f0cc03b..ddd2953965aa1 100644
757     --- a/arch/powerpc/platforms/85xx/mpc85xx_pm_ops.c
758     +++ b/arch/powerpc/platforms/85xx/mpc85xx_pm_ops.c
759     @@ -98,9 +98,8 @@ int __init mpc85xx_setup_pmc(void)
760     pr_err("Could not map guts node address\n");
761     return -ENOMEM;
762     }
763     + qoriq_pm_ops = &mpc85xx_pm_ops;
764     }
765    
766     - qoriq_pm_ops = &mpc85xx_pm_ops;
767     -
768     return 0;
769     }
770     diff --git a/arch/powerpc/sysdev/dcr-low.S b/arch/powerpc/sysdev/dcr-low.S
771     index e687bb2003ff0..5589fbe48bbdc 100644
772     --- a/arch/powerpc/sysdev/dcr-low.S
773     +++ b/arch/powerpc/sysdev/dcr-low.S
774     @@ -15,7 +15,7 @@
775     #include <asm/export.h>
776    
777     #define DCR_ACCESS_PROLOG(table) \
778     - cmpli cr0,r3,1024; \
779     + cmplwi cr0,r3,1024; \
780     rlwinm r3,r3,4,18,27; \
781     lis r5,table@h; \
782     ori r5,r5,table@l; \
783     diff --git a/arch/s390/mm/gmap.c b/arch/s390/mm/gmap.c
784     index 0195c3983f540..65f802f705475 100644
785     --- a/arch/s390/mm/gmap.c
786     +++ b/arch/s390/mm/gmap.c
787     @@ -662,9 +662,10 @@ void __gmap_zap(struct gmap *gmap, unsigned long gaddr)
788     vmaddr |= gaddr & ~PMD_MASK;
789     /* Get pointer to the page table entry */
790     ptep = get_locked_pte(gmap->mm, vmaddr, &ptl);
791     - if (likely(ptep))
792     + if (likely(ptep)) {
793     ptep_zap_unused(gmap->mm, vmaddr, ptep, 0);
794     - pte_unmap_unlock(ptep, ptl);
795     + pte_unmap_unlock(ptep, ptl);
796     + }
797     }
798     }
799     EXPORT_SYMBOL_GPL(__gmap_zap);
800     diff --git a/arch/sh/Kconfig.debug b/arch/sh/Kconfig.debug
801     index 5f2bb4242c0f7..c50c397cbcf75 100644
802     --- a/arch/sh/Kconfig.debug
803     +++ b/arch/sh/Kconfig.debug
804     @@ -60,6 +60,7 @@ config DUMP_CODE
805    
806     config DWARF_UNWINDER
807     bool "Enable the DWARF unwinder for stacktraces"
808     + depends on DEBUG_KERNEL
809     select FRAME_POINTER
810     depends on SUPERH32
811     default n
812     diff --git a/arch/sh/include/asm/sfp-machine.h b/arch/sh/include/asm/sfp-machine.h
813     index d3c548443f2a6..dd195c6f3b9d8 100644
814     --- a/arch/sh/include/asm/sfp-machine.h
815     +++ b/arch/sh/include/asm/sfp-machine.h
816     @@ -25,6 +25,14 @@
817     #ifndef _SFP_MACHINE_H
818     #define _SFP_MACHINE_H
819    
820     +#ifdef __BIG_ENDIAN__
821     +#define __BYTE_ORDER __BIG_ENDIAN
822     +#define __LITTLE_ENDIAN 0
823     +#else
824     +#define __BYTE_ORDER __LITTLE_ENDIAN
825     +#define __BIG_ENDIAN 0
826     +#endif
827     +
828     #define _FP_W_TYPE_SIZE 32
829     #define _FP_W_TYPE unsigned long
830     #define _FP_WS_TYPE signed long
831     diff --git a/arch/sh/kernel/cpu/sh4a/smp-shx3.c b/arch/sh/kernel/cpu/sh4a/smp-shx3.c
832     index 0d3637c494bfe..c1f66c35e0c12 100644
833     --- a/arch/sh/kernel/cpu/sh4a/smp-shx3.c
834     +++ b/arch/sh/kernel/cpu/sh4a/smp-shx3.c
835     @@ -76,8 +76,9 @@ static void shx3_prepare_cpus(unsigned int max_cpus)
836     BUILD_BUG_ON(SMP_MSG_NR >= 8);
837    
838     for (i = 0; i < SMP_MSG_NR; i++)
839     - request_irq(104 + i, ipi_interrupt_handler,
840     - IRQF_PERCPU, "IPI", (void *)(long)i);
841     + if (request_irq(104 + i, ipi_interrupt_handler,
842     + IRQF_PERCPU, "IPI", (void *)(long)i))
843     + pr_err("Failed to request irq %d\n", i);
844    
845     for (i = 0; i < max_cpus; i++)
846     set_cpu_present(i, true);
847     diff --git a/arch/x86/events/intel/uncore_snbep.c b/arch/x86/events/intel/uncore_snbep.c
848     index 686dd4339370f..e94d547e9d248 100644
849     --- a/arch/x86/events/intel/uncore_snbep.c
850     +++ b/arch/x86/events/intel/uncore_snbep.c
851     @@ -3363,6 +3363,9 @@ static int skx_cha_hw_config(struct intel_uncore_box *box, struct perf_event *ev
852     struct hw_perf_event_extra *reg1 = &event->hw.extra_reg;
853     struct extra_reg *er;
854     int idx = 0;
855     + /* Any of the CHA events may be filtered by Thread/Core-ID.*/
856     + if (event->hw.config & SNBEP_CBO_PMON_CTL_TID_EN)
857     + idx = SKX_CHA_MSR_PMON_BOX_FILTER_TID;
858    
859     for (er = skx_uncore_cha_extra_regs; er->msr; er++) {
860     if (er->event != (event->hw.config & er->config_mask))
861     @@ -3430,6 +3433,7 @@ static struct event_constraint skx_uncore_iio_constraints[] = {
862     UNCORE_EVENT_CONSTRAINT(0xc0, 0xc),
863     UNCORE_EVENT_CONSTRAINT(0xc5, 0xc),
864     UNCORE_EVENT_CONSTRAINT(0xd4, 0xc),
865     + UNCORE_EVENT_CONSTRAINT(0xd5, 0xc),
866     EVENT_CONSTRAINT_END
867     };
868    
869     diff --git a/arch/x86/include/asm/page_64_types.h b/arch/x86/include/asm/page_64_types.h
870     index 390fdd39e0e21..5a69eee673536 100644
871     --- a/arch/x86/include/asm/page_64_types.h
872     +++ b/arch/x86/include/asm/page_64_types.h
873     @@ -19,7 +19,7 @@
874     #define THREAD_SIZE (PAGE_SIZE << THREAD_SIZE_ORDER)
875     #define CURRENT_MASK (~(THREAD_SIZE - 1))
876    
877     -#define EXCEPTION_STACK_ORDER (0 + KASAN_STACK_ORDER)
878     +#define EXCEPTION_STACK_ORDER (1 + KASAN_STACK_ORDER)
879     #define EXCEPTION_STKSZ (PAGE_SIZE << EXCEPTION_STACK_ORDER)
880    
881     #define DEBUG_STACK_ORDER (EXCEPTION_STACK_ORDER + 1)
882     diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c
883     index c6f0ef1d9ab78..a1aecdc305da3 100644
884     --- a/arch/x86/kernel/irq.c
885     +++ b/arch/x86/kernel/irq.c
886     @@ -284,8 +284,10 @@ void kvm_set_posted_intr_wakeup_handler(void (*handler)(void))
887     {
888     if (handler)
889     kvm_posted_intr_wakeup_handler = handler;
890     - else
891     + else {
892     kvm_posted_intr_wakeup_handler = dummy_handler;
893     + synchronize_rcu();
894     + }
895     }
896     EXPORT_SYMBOL_GPL(kvm_set_posted_intr_wakeup_handler);
897    
898     diff --git a/crypto/pcrypt.c b/crypto/pcrypt.c
899     index 85082574c5154..62e11835f220e 100644
900     --- a/crypto/pcrypt.c
901     +++ b/crypto/pcrypt.c
902     @@ -138,12 +138,14 @@ static void pcrypt_aead_enc(struct padata_priv *padata)
903     {
904     struct pcrypt_request *preq = pcrypt_padata_request(padata);
905     struct aead_request *req = pcrypt_request_ctx(preq);
906     + int ret;
907    
908     - padata->info = crypto_aead_encrypt(req);
909     + ret = crypto_aead_encrypt(req);
910    
911     - if (padata->info == -EINPROGRESS)
912     + if (ret == -EINPROGRESS)
913     return;
914    
915     + padata->info = ret;
916     padata_do_serial(padata);
917     }
918    
919     @@ -180,12 +182,14 @@ static void pcrypt_aead_dec(struct padata_priv *padata)
920     {
921     struct pcrypt_request *preq = pcrypt_padata_request(padata);
922     struct aead_request *req = pcrypt_request_ctx(preq);
923     + int ret;
924    
925     - padata->info = crypto_aead_decrypt(req);
926     + ret = crypto_aead_decrypt(req);
927    
928     - if (padata->info == -EINPROGRESS)
929     + if (ret == -EINPROGRESS)
930     return;
931    
932     + padata->info = ret;
933     padata_do_serial(padata);
934     }
935    
936     diff --git a/drivers/acpi/acpica/acglobal.h b/drivers/acpi/acpica/acglobal.h
937     index 750fa824d42c4..a04bb91d56ca6 100644
938     --- a/drivers/acpi/acpica/acglobal.h
939     +++ b/drivers/acpi/acpica/acglobal.h
940     @@ -259,6 +259,8 @@ extern struct acpi_bit_register_info
941    
942     ACPI_GLOBAL(u8, acpi_gbl_sleep_type_a);
943     ACPI_GLOBAL(u8, acpi_gbl_sleep_type_b);
944     +ACPI_GLOBAL(u8, acpi_gbl_sleep_type_a_s0);
945     +ACPI_GLOBAL(u8, acpi_gbl_sleep_type_b_s0);
946    
947     /*****************************************************************************
948     *
949     diff --git a/drivers/acpi/acpica/hwesleep.c b/drivers/acpi/acpica/hwesleep.c
950     index 3f2fb4b31fdc0..7e2f9b0e66eea 100644
951     --- a/drivers/acpi/acpica/hwesleep.c
952     +++ b/drivers/acpi/acpica/hwesleep.c
953     @@ -184,17 +184,13 @@ acpi_status acpi_hw_extended_sleep(u8 sleep_state)
954    
955     acpi_status acpi_hw_extended_wake_prep(u8 sleep_state)
956     {
957     - acpi_status status;
958     u8 sleep_type_value;
959    
960     ACPI_FUNCTION_TRACE(hw_extended_wake_prep);
961    
962     - status = acpi_get_sleep_type_data(ACPI_STATE_S0,
963     - &acpi_gbl_sleep_type_a,
964     - &acpi_gbl_sleep_type_b);
965     - if (ACPI_SUCCESS(status)) {
966     + if (acpi_gbl_sleep_type_a_s0 != ACPI_SLEEP_TYPE_INVALID) {
967     sleep_type_value =
968     - ((acpi_gbl_sleep_type_a << ACPI_X_SLEEP_TYPE_POSITION) &
969     + ((acpi_gbl_sleep_type_a_s0 << ACPI_X_SLEEP_TYPE_POSITION) &
970     ACPI_X_SLEEP_TYPE_MASK);
971    
972     (void)acpi_write((u64)(sleep_type_value | ACPI_X_SLEEP_ENABLE),
973     diff --git a/drivers/acpi/acpica/hwsleep.c b/drivers/acpi/acpica/hwsleep.c
974     index d00c9810845b2..ddf198de87295 100644
975     --- a/drivers/acpi/acpica/hwsleep.c
976     +++ b/drivers/acpi/acpica/hwsleep.c
977     @@ -217,7 +217,7 @@ acpi_status acpi_hw_legacy_sleep(u8 sleep_state)
978    
979     acpi_status acpi_hw_legacy_wake_prep(u8 sleep_state)
980     {
981     - acpi_status status;
982     + acpi_status status = AE_OK;
983     struct acpi_bit_register_info *sleep_type_reg_info;
984     struct acpi_bit_register_info *sleep_enable_reg_info;
985     u32 pm1a_control;
986     @@ -230,10 +230,7 @@ acpi_status acpi_hw_legacy_wake_prep(u8 sleep_state)
987     * This is unclear from the ACPI Spec, but it is required
988     * by some machines.
989     */
990     - status = acpi_get_sleep_type_data(ACPI_STATE_S0,
991     - &acpi_gbl_sleep_type_a,
992     - &acpi_gbl_sleep_type_b);
993     - if (ACPI_SUCCESS(status)) {
994     + if (acpi_gbl_sleep_type_a_s0 != ACPI_SLEEP_TYPE_INVALID) {
995     sleep_type_reg_info =
996     acpi_hw_get_bit_register_info(ACPI_BITREG_SLEEP_TYPE);
997     sleep_enable_reg_info =
998     @@ -254,9 +251,9 @@ acpi_status acpi_hw_legacy_wake_prep(u8 sleep_state)
999    
1000     /* Insert the SLP_TYP bits */
1001    
1002     - pm1a_control |= (acpi_gbl_sleep_type_a <<
1003     + pm1a_control |= (acpi_gbl_sleep_type_a_s0 <<
1004     sleep_type_reg_info->bit_position);
1005     - pm1b_control |= (acpi_gbl_sleep_type_b <<
1006     + pm1b_control |= (acpi_gbl_sleep_type_b_s0 <<
1007     sleep_type_reg_info->bit_position);
1008    
1009     /* Write the control registers and ignore any errors */
1010     diff --git a/drivers/acpi/acpica/hwxfsleep.c b/drivers/acpi/acpica/hwxfsleep.c
1011     index f76e0eab32b8e..53f9f4c359579 100644
1012     --- a/drivers/acpi/acpica/hwxfsleep.c
1013     +++ b/drivers/acpi/acpica/hwxfsleep.c
1014     @@ -315,6 +315,13 @@ acpi_status acpi_enter_sleep_state_prep(u8 sleep_state)
1015     return_ACPI_STATUS(status);
1016     }
1017    
1018     + status = acpi_get_sleep_type_data(ACPI_STATE_S0,
1019     + &acpi_gbl_sleep_type_a_s0,
1020     + &acpi_gbl_sleep_type_b_s0);
1021     + if (ACPI_FAILURE(status)) {
1022     + acpi_gbl_sleep_type_a_s0 = ACPI_SLEEP_TYPE_INVALID;
1023     + }
1024     +
1025     /* Execute the _PTS method (Prepare To Sleep) */
1026    
1027     arg_list.count = 1;
1028     diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c
1029     index 93ecae55fe6a0..69c6f02f16b5b 100644
1030     --- a/drivers/acpi/battery.c
1031     +++ b/drivers/acpi/battery.c
1032     @@ -187,7 +187,7 @@ static int acpi_battery_is_charged(struct acpi_battery *battery)
1033     return 1;
1034    
1035     /* fallback to using design values for broken batteries */
1036     - if (battery->design_capacity == battery->capacity_now)
1037     + if (battery->design_capacity <= battery->capacity_now)
1038     return 1;
1039    
1040     /* we don't do any sort of metric based on percentages */
1041     diff --git a/drivers/acpi/pmic/intel_pmic.c b/drivers/acpi/pmic/intel_pmic.c
1042     index ca18e0d23df97..db63d3463617a 100644
1043     --- a/drivers/acpi/pmic/intel_pmic.c
1044     +++ b/drivers/acpi/pmic/intel_pmic.c
1045     @@ -216,31 +216,36 @@ static acpi_status intel_pmic_regs_handler(u32 function,
1046     void *handler_context, void *region_context)
1047     {
1048     struct intel_pmic_opregion *opregion = region_context;
1049     - int result = 0;
1050     + int result = -EINVAL;
1051     +
1052     + if (function == ACPI_WRITE) {
1053     + switch (address) {
1054     + case 0:
1055     + return AE_OK;
1056     + case 1:
1057     + opregion->ctx.addr |= (*value64 & 0xff) << 8;
1058     + return AE_OK;
1059     + case 2:
1060     + opregion->ctx.addr |= *value64 & 0xff;
1061     + return AE_OK;
1062     + case 3:
1063     + opregion->ctx.val = *value64 & 0xff;
1064     + return AE_OK;
1065     + case 4:
1066     + if (*value64) {
1067     + result = regmap_write(opregion->regmap, opregion->ctx.addr,
1068     + opregion->ctx.val);
1069     + } else {
1070     + result = regmap_read(opregion->regmap, opregion->ctx.addr,
1071     + &opregion->ctx.val);
1072     + }
1073     + opregion->ctx.addr = 0;
1074     + }
1075     + }
1076    
1077     - switch (address) {
1078     - case 0:
1079     - return AE_OK;
1080     - case 1:
1081     - opregion->ctx.addr |= (*value64 & 0xff) << 8;
1082     + if (function == ACPI_READ && address == 3) {
1083     + *value64 = opregion->ctx.val;
1084     return AE_OK;
1085     - case 2:
1086     - opregion->ctx.addr |= *value64 & 0xff;
1087     - return AE_OK;
1088     - case 3:
1089     - opregion->ctx.val = *value64 & 0xff;
1090     - return AE_OK;
1091     - case 4:
1092     - if (*value64) {
1093     - result = regmap_write(opregion->regmap, opregion->ctx.addr,
1094     - opregion->ctx.val);
1095     - } else {
1096     - result = regmap_read(opregion->regmap, opregion->ctx.addr,
1097     - &opregion->ctx.val);
1098     - if (result == 0)
1099     - *value64 = opregion->ctx.val;
1100     - }
1101     - memset(&opregion->ctx, 0x00, sizeof(opregion->ctx));
1102     }
1103    
1104     if (result < 0) {
1105     diff --git a/drivers/android/binder.c b/drivers/android/binder.c
1106     index f4c0b62959450..f78f7d06ad9fc 100644
1107     --- a/drivers/android/binder.c
1108     +++ b/drivers/android/binder.c
1109     @@ -303,6 +303,7 @@ struct binder_proc {
1110     struct task_struct *tsk;
1111     struct files_struct *files;
1112     struct mutex files_lock;
1113     + const struct cred *cred;
1114     struct hlist_node deferred_work_node;
1115     int deferred_work;
1116     void *buffer;
1117     @@ -1431,8 +1432,8 @@ static void binder_transaction(struct binder_proc *proc,
1118     return_error = BR_FAILED_REPLY;
1119     goto err_invalid_target_handle;
1120     }
1121     - if (security_binder_transaction(proc->tsk,
1122     - target_proc->tsk) < 0) {
1123     + if (security_binder_transaction(proc->cred,
1124     + target_proc->cred) < 0) {
1125     return_error = BR_FAILED_REPLY;
1126     goto err_invalid_target_handle;
1127     }
1128     @@ -1505,7 +1506,7 @@ static void binder_transaction(struct binder_proc *proc,
1129     t->from = thread;
1130     else
1131     t->from = NULL;
1132     - t->sender_euid = task_euid(proc->tsk);
1133     + t->sender_euid = proc->cred->euid;
1134     t->to_proc = target_proc;
1135     t->to_thread = target_thread;
1136     t->code = tr->code;
1137     @@ -1593,8 +1594,8 @@ static void binder_transaction(struct binder_proc *proc,
1138     return_error = BR_FAILED_REPLY;
1139     goto err_binder_get_ref_for_node_failed;
1140     }
1141     - if (security_binder_transfer_binder(proc->tsk,
1142     - target_proc->tsk)) {
1143     + if (security_binder_transfer_binder(proc->cred,
1144     + target_proc->cred)) {
1145     return_error = BR_FAILED_REPLY;
1146     goto err_binder_get_ref_for_node_failed;
1147     }
1148     @@ -1633,8 +1634,8 @@ static void binder_transaction(struct binder_proc *proc,
1149     return_error = BR_FAILED_REPLY;
1150     goto err_binder_get_ref_failed;
1151     }
1152     - if (security_binder_transfer_binder(proc->tsk,
1153     - target_proc->tsk)) {
1154     + if (security_binder_transfer_binder(proc->cred,
1155     + target_proc->cred)) {
1156     return_error = BR_FAILED_REPLY;
1157     goto err_binder_get_ref_failed;
1158     }
1159     @@ -1697,8 +1698,8 @@ static void binder_transaction(struct binder_proc *proc,
1160     return_error = BR_FAILED_REPLY;
1161     goto err_fget_failed;
1162     }
1163     - if (security_binder_transfer_file(proc->tsk,
1164     - target_proc->tsk,
1165     + if (security_binder_transfer_file(proc->cred,
1166     + target_proc->cred,
1167     file) < 0) {
1168     fput(file);
1169     return_error = BR_FAILED_REPLY;
1170     @@ -2780,7 +2781,7 @@ static int binder_ioctl_set_ctx_mgr(struct file *filp)
1171     ret = -EBUSY;
1172     goto out;
1173     }
1174     - ret = security_binder_set_context_mgr(proc->tsk);
1175     + ret = security_binder_set_context_mgr(proc->cred);
1176     if (ret < 0)
1177     goto out;
1178     if (uid_valid(binder_context_mgr_uid)) {
1179     @@ -3036,6 +3037,7 @@ static int binder_open(struct inode *nodp, struct file *filp)
1180     get_task_struct(current->group_leader);
1181     proc->tsk = current->group_leader;
1182     mutex_init(&proc->files_lock);
1183     + proc->cred = get_cred(filp->f_cred);
1184     INIT_LIST_HEAD(&proc->todo);
1185     init_waitqueue_head(&proc->wait);
1186     proc->default_priority = task_nice(current);
1187     @@ -3241,6 +3243,7 @@ static void binder_deferred_release(struct binder_proc *proc)
1188     }
1189    
1190     put_task_struct(proc->tsk);
1191     + put_cred(proc->cred);
1192    
1193     binder_debug(BINDER_DEBUG_OPEN_CLOSE,
1194     "%s: %d threads %d, nodes %d (ref %d), refs %d, active transactions %d, buffers %d, pages %d\n",
1195     diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
1196     index 16f8fda899815..07f96a0321498 100644
1197     --- a/drivers/ata/libata-eh.c
1198     +++ b/drivers/ata/libata-eh.c
1199     @@ -114,6 +114,12 @@ static const unsigned long ata_eh_identify_timeouts[] = {
1200     ULONG_MAX,
1201     };
1202    
1203     +static const unsigned long ata_eh_revalidate_timeouts[] = {
1204     + 15000, /* Some drives are slow to read log pages when waking-up */
1205     + 15000, /* combined time till here is enough even for media access */
1206     + ULONG_MAX,
1207     +};
1208     +
1209     static const unsigned long ata_eh_flush_timeouts[] = {
1210     15000, /* be generous with flush */
1211     15000, /* ditto */
1212     @@ -150,6 +156,8 @@ static const struct ata_eh_cmd_timeout_ent
1213     ata_eh_cmd_timeout_table[ATA_EH_CMD_TIMEOUT_TABLE_SIZE] = {
1214     { .commands = CMDS(ATA_CMD_ID_ATA, ATA_CMD_ID_ATAPI),
1215     .timeouts = ata_eh_identify_timeouts, },
1216     + { .commands = CMDS(ATA_CMD_READ_LOG_EXT, ATA_CMD_READ_LOG_DMA_EXT),
1217     + .timeouts = ata_eh_revalidate_timeouts, },
1218     { .commands = CMDS(ATA_CMD_READ_NATIVE_MAX, ATA_CMD_READ_NATIVE_MAX_EXT),
1219     .timeouts = ata_eh_other_timeouts, },
1220     { .commands = CMDS(ATA_CMD_SET_MAX, ATA_CMD_SET_MAX_EXT),
1221     diff --git a/drivers/auxdisplay/img-ascii-lcd.c b/drivers/auxdisplay/img-ascii-lcd.c
1222     index 6e8eaa7fe7a6f..b5f849d2f7623 100644
1223     --- a/drivers/auxdisplay/img-ascii-lcd.c
1224     +++ b/drivers/auxdisplay/img-ascii-lcd.c
1225     @@ -283,6 +283,16 @@ static int img_ascii_lcd_display(struct img_ascii_lcd_ctx *ctx,
1226     if (msg[count - 1] == '\n')
1227     count--;
1228    
1229     + if (!count) {
1230     + /* clear the LCD */
1231     + devm_kfree(&ctx->pdev->dev, ctx->message);
1232     + ctx->message = NULL;
1233     + ctx->message_len = 0;
1234     + memset(ctx->curr, ' ', ctx->cfg->num_chars);
1235     + ctx->cfg->update(ctx);
1236     + return 0;
1237     + }
1238     +
1239     new_msg = devm_kmalloc(&ctx->pdev->dev, count + 1, GFP_KERNEL);
1240     if (!new_msg)
1241     return -ENOMEM;
1242     diff --git a/drivers/cpuidle/sysfs.c b/drivers/cpuidle/sysfs.c
1243     index e7e92ed34f0c6..34c4a61a954fc 100644
1244     --- a/drivers/cpuidle/sysfs.c
1245     +++ b/drivers/cpuidle/sysfs.c
1246     @@ -413,6 +413,7 @@ static int cpuidle_add_state_sysfs(struct cpuidle_device *device)
1247     &kdev->kobj, "state%d", i);
1248     if (ret) {
1249     kobject_put(&kobj->kobj);
1250     + kfree(kobj);
1251     goto error_state;
1252     }
1253     kobject_uevent(&kobj->kobj, KOBJ_ADD);
1254     @@ -543,6 +544,7 @@ static int cpuidle_add_driver_sysfs(struct cpuidle_device *dev)
1255     &kdev->kobj, "driver");
1256     if (ret) {
1257     kobject_put(&kdrv->kobj);
1258     + kfree(kdrv);
1259     return ret;
1260     }
1261    
1262     @@ -629,7 +631,6 @@ int cpuidle_add_sysfs(struct cpuidle_device *dev)
1263     if (!kdev)
1264     return -ENOMEM;
1265     kdev->dev = dev;
1266     - dev->kobj_dev = kdev;
1267    
1268     init_completion(&kdev->kobj_unregister);
1269    
1270     @@ -637,9 +638,11 @@ int cpuidle_add_sysfs(struct cpuidle_device *dev)
1271     "cpuidle");
1272     if (error) {
1273     kobject_put(&kdev->kobj);
1274     + kfree(kdev);
1275     return error;
1276     }
1277    
1278     + dev->kobj_dev = kdev;
1279     kobject_uevent(&kdev->kobj, KOBJ_ADD);
1280    
1281     return 0;
1282     diff --git a/drivers/crypto/qat/qat_common/adf_pf2vf_msg.c b/drivers/crypto/qat/qat_common/adf_pf2vf_msg.c
1283     index c64481160b711..180016e157771 100644
1284     --- a/drivers/crypto/qat/qat_common/adf_pf2vf_msg.c
1285     +++ b/drivers/crypto/qat/qat_common/adf_pf2vf_msg.c
1286     @@ -195,6 +195,13 @@ static int __adf_iov_putmsg(struct adf_accel_dev *accel_dev, u32 msg, u8 vf_nr)
1287     val = ADF_CSR_RD(pmisc_bar_addr, pf2vf_offset);
1288     } while ((val & int_bit) && (count++ < ADF_IOV_MSG_ACK_MAX_RETRY));
1289    
1290     + if (val != msg) {
1291     + dev_dbg(&GET_DEV(accel_dev),
1292     + "Collision - PFVF CSR overwritten by remote function\n");
1293     + ret = -EIO;
1294     + goto out;
1295     + }
1296     +
1297     if (val & int_bit) {
1298     dev_dbg(&GET_DEV(accel_dev), "ACK not received from remote\n");
1299     val &= ~int_bit;
1300     @@ -243,6 +250,11 @@ void adf_vf2pf_req_hndl(struct adf_accel_vf_info *vf_info)
1301    
1302     /* Read message from the VF */
1303     msg = ADF_CSR_RD(pmisc_addr, hw_data->get_pf2vf_offset(vf_nr));
1304     + if (!(msg & ADF_VF2PF_INT)) {
1305     + dev_info(&GET_DEV(accel_dev),
1306     + "Spurious VF2PF interrupt, msg %X. Ignored\n", msg);
1307     + goto out;
1308     + }
1309    
1310     /* To ACK, clear the VF2PFINT bit */
1311     msg &= ~ADF_VF2PF_INT;
1312     @@ -326,6 +338,7 @@ void adf_vf2pf_req_hndl(struct adf_accel_vf_info *vf_info)
1313     if (resp && adf_iov_putmsg(accel_dev, resp, vf_nr))
1314     dev_err(&GET_DEV(accel_dev), "Failed to send response to VF\n");
1315    
1316     +out:
1317     /* re-enable interrupt on PF from this VF */
1318     adf_enable_vf2pf_interrupts(accel_dev, (1 << vf_nr));
1319     return;
1320     diff --git a/drivers/crypto/qat/qat_common/adf_vf_isr.c b/drivers/crypto/qat/qat_common/adf_vf_isr.c
1321     index 36db3c443e7e4..6fa1447d05829 100644
1322     --- a/drivers/crypto/qat/qat_common/adf_vf_isr.c
1323     +++ b/drivers/crypto/qat/qat_common/adf_vf_isr.c
1324     @@ -123,6 +123,11 @@ static void adf_pf2vf_bh_handler(void *data)
1325    
1326     /* Read the message from PF */
1327     msg = ADF_CSR_RD(pmisc_bar_addr, hw_data->get_pf2vf_offset(0));
1328     + if (!(msg & ADF_PF2VF_INT)) {
1329     + dev_info(&GET_DEV(accel_dev),
1330     + "Spurious PF2VF interrupt, msg %X. Ignored\n", msg);
1331     + goto out;
1332     + }
1333    
1334     if (!(msg & ADF_PF2VF_MSGORIGIN_SYSTEM))
1335     /* Ignore legacy non-system (non-kernel) PF2VF messages */
1336     @@ -171,6 +176,7 @@ static void adf_pf2vf_bh_handler(void *data)
1337     msg &= ~BIT(0);
1338     ADF_CSR_WR(pmisc_bar_addr, hw_data->get_pf2vf_offset(0), msg);
1339    
1340     +out:
1341     /* Re-enable PF2VF interrupts */
1342     adf_enable_pf2vf_interrupts(accel_dev);
1343     return;
1344     diff --git a/drivers/dma/at_xdmac.c b/drivers/dma/at_xdmac.c
1345     index 12d9048293245..a505be9ef96da 100644
1346     --- a/drivers/dma/at_xdmac.c
1347     +++ b/drivers/dma/at_xdmac.c
1348     @@ -156,7 +156,7 @@
1349     #define AT_XDMAC_CC_WRIP (0x1 << 23) /* Write in Progress (read only) */
1350     #define AT_XDMAC_CC_WRIP_DONE (0x0 << 23)
1351     #define AT_XDMAC_CC_WRIP_IN_PROGRESS (0x1 << 23)
1352     -#define AT_XDMAC_CC_PERID(i) (0x7f & (i) << 24) /* Channel Peripheral Identifier */
1353     +#define AT_XDMAC_CC_PERID(i) ((0x7f & (i)) << 24) /* Channel Peripheral Identifier */
1354     #define AT_XDMAC_CDS_MSP 0x2C /* Channel Data Stride Memory Set Pattern */
1355     #define AT_XDMAC_CSUS 0x30 /* Channel Source Microblock Stride */
1356     #define AT_XDMAC_CDUS 0x34 /* Channel Destination Microblock Stride */
1357     diff --git a/drivers/dma/dmaengine.h b/drivers/dma/dmaengine.h
1358     index 882ff9448c3ba..6537b8ec03934 100644
1359     --- a/drivers/dma/dmaengine.h
1360     +++ b/drivers/dma/dmaengine.h
1361     @@ -167,7 +167,7 @@ dmaengine_desc_get_callback_invoke(struct dma_async_tx_descriptor *tx,
1362     static inline bool
1363     dmaengine_desc_callback_valid(struct dmaengine_desc_callback *cb)
1364     {
1365     - return (cb->callback) ? true : false;
1366     + return cb->callback || cb->callback_result;
1367     }
1368    
1369     #endif
1370     diff --git a/drivers/edac/sb_edac.c b/drivers/edac/sb_edac.c
1371     index e9391950a8437..94194ead73636 100644
1372     --- a/drivers/edac/sb_edac.c
1373     +++ b/drivers/edac/sb_edac.c
1374     @@ -1009,7 +1009,7 @@ static u64 haswell_get_tohm(struct sbridge_pvt *pvt)
1375     pci_read_config_dword(pvt->info.pci_vtd, HASWELL_TOHM_1, &reg);
1376     rc = ((reg << 6) | rc) << 26;
1377    
1378     - return rc | 0x1ffffff;
1379     + return rc | 0x3ffffff;
1380     }
1381    
1382     static u64 knl_get_tolm(struct sbridge_pvt *pvt)
1383     diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
1384     index 694f631d9c90d..eb79d0d3d34f1 100644
1385     --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
1386     +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
1387     @@ -844,6 +844,7 @@ static int amdgpu_connector_vga_get_modes(struct drm_connector *connector)
1388    
1389     amdgpu_connector_get_edid(connector);
1390     ret = amdgpu_connector_ddc_get_modes(connector);
1391     + amdgpu_get_native_mode(connector);
1392    
1393     return ret;
1394     }
1395     diff --git a/drivers/gpu/drm/drm_plane_helper.c b/drivers/gpu/drm/drm_plane_helper.c
1396     index 7899fc1dcdb08..c4fd742ff917a 100644
1397     --- a/drivers/gpu/drm/drm_plane_helper.c
1398     +++ b/drivers/gpu/drm/drm_plane_helper.c
1399     @@ -246,7 +246,6 @@ int drm_plane_helper_check_update(struct drm_plane *plane,
1400     .crtc_w = drm_rect_width(dst),
1401     .crtc_h = drm_rect_height(dst),
1402     .rotation = rotation,
1403     - .visible = *visible,
1404     };
1405     int ret;
1406    
1407     diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c
1408     index 983ce7965c7ff..dfce39f02f8d4 100644
1409     --- a/drivers/gpu/drm/msm/msm_gem.c
1410     +++ b/drivers/gpu/drm/msm/msm_gem.c
1411     @@ -871,7 +871,7 @@ struct drm_gem_object *msm_gem_new(struct drm_device *dev,
1412    
1413     ret = msm_gem_new_impl(dev, size, flags, NULL, &obj);
1414     if (ret)
1415     - goto fail;
1416     + return ERR_PTR(ret);
1417    
1418     if (use_pages(obj)) {
1419     ret = drm_gem_object_init(dev, obj, size);
1420     @@ -910,7 +910,7 @@ struct drm_gem_object *msm_gem_import(struct drm_device *dev,
1421     mutex_unlock(&dev->struct_mutex);
1422    
1423     if (ret)
1424     - goto fail;
1425     + return ERR_PTR(ret);
1426    
1427     drm_gem_private_object_init(dev, obj, size);
1428    
1429     diff --git a/drivers/gpu/drm/udl/udl_connector.c b/drivers/gpu/drm/udl/udl_connector.c
1430     index d2f57c52f7db2..c001ed8e7dd90 100644
1431     --- a/drivers/gpu/drm/udl/udl_connector.c
1432     +++ b/drivers/gpu/drm/udl/udl_connector.c
1433     @@ -37,7 +37,7 @@ static u8 *udl_get_edid(struct udl_device *udl)
1434     ret = usb_control_msg(udl->udev,
1435     usb_rcvctrlpipe(udl->udev, 0), (0x02),
1436     (0x80 | (0x02 << 5)), i << 8, 0xA1, rbuf, 2,
1437     - HZ);
1438     + 1000);
1439     if (ret < 1) {
1440     DRM_ERROR("Read EDID byte %d failed err %x\n", i, ret);
1441     goto error;
1442     diff --git a/drivers/hv/hyperv_vmbus.h b/drivers/hv/hyperv_vmbus.h
1443     index 8d7f865c1133f..9d3605df1f489 100644
1444     --- a/drivers/hv/hyperv_vmbus.h
1445     +++ b/drivers/hv/hyperv_vmbus.h
1446     @@ -26,6 +26,7 @@
1447     #define _HYPERV_VMBUS_H
1448    
1449     #include <linux/list.h>
1450     +#include <linux/bitops.h>
1451     #include <asm/sync_bitops.h>
1452     #include <linux/atomic.h>
1453     #include <linux/hyperv.h>
1454     diff --git a/drivers/hwmon/hwmon.c b/drivers/hwmon/hwmon.c
1455     index e0a1a118514f9..8b11d2fdf80ab 100644
1456     --- a/drivers/hwmon/hwmon.c
1457     +++ b/drivers/hwmon/hwmon.c
1458     @@ -592,8 +592,10 @@ __hwmon_device_register(struct device *dev, const char *name, void *drvdata,
1459     dev_set_drvdata(hdev, drvdata);
1460     dev_set_name(hdev, HWMON_ID_FORMAT, id);
1461     err = device_register(hdev);
1462     - if (err)
1463     - goto free_hwmon;
1464     + if (err) {
1465     + put_device(hdev);
1466     + goto ida_remove;
1467     + }
1468    
1469     if (chip && chip->ops->is_visible && chip->ops->read &&
1470     chip->info[0]->type == hwmon_chip &&
1471     diff --git a/drivers/hwmon/pmbus/lm25066.c b/drivers/hwmon/pmbus/lm25066.c
1472     index a3d912cd3b8d7..5081fd7e8fddc 100644
1473     --- a/drivers/hwmon/pmbus/lm25066.c
1474     +++ b/drivers/hwmon/pmbus/lm25066.c
1475     @@ -69,22 +69,27 @@ static struct __coeff lm25066_coeff[5][PSC_NUM_CLASSES + 2] = {
1476     [lm25056] = {
1477     [PSC_VOLTAGE_IN] = {
1478     .m = 16296,
1479     + .b = 1343,
1480     .R = -2,
1481     },
1482     [PSC_CURRENT_IN] = {
1483     .m = 13797,
1484     + .b = -1833,
1485     .R = -2,
1486     },
1487     [PSC_CURRENT_IN_L] = {
1488     .m = 6726,
1489     + .b = -537,
1490     .R = -2,
1491     },
1492     [PSC_POWER] = {
1493     .m = 5501,
1494     + .b = -2908,
1495     .R = -3,
1496     },
1497     [PSC_POWER_L] = {
1498     .m = 26882,
1499     + .b = -5646,
1500     .R = -4,
1501     },
1502     [PSC_TEMPERATURE] = {
1503     @@ -96,26 +101,32 @@ static struct __coeff lm25066_coeff[5][PSC_NUM_CLASSES + 2] = {
1504     [lm25066] = {
1505     [PSC_VOLTAGE_IN] = {
1506     .m = 22070,
1507     + .b = -1800,
1508     .R = -2,
1509     },
1510     [PSC_VOLTAGE_OUT] = {
1511     .m = 22070,
1512     + .b = -1800,
1513     .R = -2,
1514     },
1515     [PSC_CURRENT_IN] = {
1516     .m = 13661,
1517     + .b = -5200,
1518     .R = -2,
1519     },
1520     [PSC_CURRENT_IN_L] = {
1521     .m = 6852,
1522     + .b = -3100,
1523     .R = -2,
1524     },
1525     [PSC_POWER] = {
1526     .m = 736,
1527     + .b = -3300,
1528     .R = -2,
1529     },
1530     [PSC_POWER_L] = {
1531     .m = 369,
1532     + .b = -1900,
1533     .R = -2,
1534     },
1535     [PSC_TEMPERATURE] = {
1536     @@ -155,26 +166,32 @@ static struct __coeff lm25066_coeff[5][PSC_NUM_CLASSES + 2] = {
1537     [lm5064] = {
1538     [PSC_VOLTAGE_IN] = {
1539     .m = 4611,
1540     + .b = -642,
1541     .R = -2,
1542     },
1543     [PSC_VOLTAGE_OUT] = {
1544     .m = 4621,
1545     + .b = 423,
1546     .R = -2,
1547     },
1548     [PSC_CURRENT_IN] = {
1549     .m = 10742,
1550     + .b = 1552,
1551     .R = -2,
1552     },
1553     [PSC_CURRENT_IN_L] = {
1554     .m = 5456,
1555     + .b = 2118,
1556     .R = -2,
1557     },
1558     [PSC_POWER] = {
1559     .m = 1204,
1560     + .b = 8524,
1561     .R = -3,
1562     },
1563     [PSC_POWER_L] = {
1564     .m = 612,
1565     + .b = 11202,
1566     .R = -3,
1567     },
1568     [PSC_TEMPERATURE] = {
1569     @@ -184,26 +201,32 @@ static struct __coeff lm25066_coeff[5][PSC_NUM_CLASSES + 2] = {
1570     [lm5066] = {
1571     [PSC_VOLTAGE_IN] = {
1572     .m = 4587,
1573     + .b = -1200,
1574     .R = -2,
1575     },
1576     [PSC_VOLTAGE_OUT] = {
1577     .m = 4587,
1578     + .b = -2400,
1579     .R = -2,
1580     },
1581     [PSC_CURRENT_IN] = {
1582     .m = 10753,
1583     + .b = -1200,
1584     .R = -2,
1585     },
1586     [PSC_CURRENT_IN_L] = {
1587     .m = 5405,
1588     + .b = -600,
1589     .R = -2,
1590     },
1591     [PSC_POWER] = {
1592     .m = 1204,
1593     + .b = -6000,
1594     .R = -3,
1595     },
1596     [PSC_POWER_L] = {
1597     .m = 605,
1598     + .b = -8000,
1599     .R = -3,
1600     },
1601     [PSC_TEMPERATURE] = {
1602     diff --git a/drivers/i2c/busses/i2c-xlr.c b/drivers/i2c/busses/i2c-xlr.c
1603     index ad17d88d85736..63f47e07345c0 100644
1604     --- a/drivers/i2c/busses/i2c-xlr.c
1605     +++ b/drivers/i2c/busses/i2c-xlr.c
1606     @@ -434,11 +434,15 @@ static int xlr_i2c_probe(struct platform_device *pdev)
1607     i2c_set_adapdata(&priv->adap, priv);
1608     ret = i2c_add_numbered_adapter(&priv->adap);
1609     if (ret < 0)
1610     - return ret;
1611     + goto err_unprepare_clk;
1612    
1613     platform_set_drvdata(pdev, priv);
1614     dev_info(&priv->adap.dev, "Added I2C Bus.\n");
1615     return 0;
1616     +
1617     +err_unprepare_clk:
1618     + clk_unprepare(clk);
1619     + return ret;
1620     }
1621    
1622     static int xlr_i2c_remove(struct platform_device *pdev)
1623     diff --git a/drivers/iio/dac/ad5446.c b/drivers/iio/dac/ad5446.c
1624     index b555552a0d803..d3a3d62869d83 100644
1625     --- a/drivers/iio/dac/ad5446.c
1626     +++ b/drivers/iio/dac/ad5446.c
1627     @@ -510,8 +510,15 @@ static int ad5622_write(struct ad5446_state *st, unsigned val)
1628     {
1629     struct i2c_client *client = to_i2c_client(st->dev);
1630     __be16 data = cpu_to_be16(val);
1631     + int ret;
1632     +
1633     + ret = i2c_master_send(client, (char *)&data, sizeof(data));
1634     + if (ret < 0)
1635     + return ret;
1636     + if (ret != sizeof(data))
1637     + return -EIO;
1638    
1639     - return i2c_master_send(client, (char *)&data, sizeof(data));
1640     + return 0;
1641     }
1642    
1643     /**
1644     diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
1645     index 7284a9176844e..718d817265795 100644
1646     --- a/drivers/infiniband/hw/mlx4/qp.c
1647     +++ b/drivers/infiniband/hw/mlx4/qp.c
1648     @@ -773,8 +773,10 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd,
1649     if (dev->steering_support ==
1650     MLX4_STEERING_MODE_DEVICE_MANAGED)
1651     qp->flags |= MLX4_IB_QP_NETIF;
1652     - else
1653     + else {
1654     + err = -EINVAL;
1655     goto err;
1656     + }
1657     }
1658    
1659     memcpy(&backup_cap, &init_attr->cap, sizeof(backup_cap));
1660     diff --git a/drivers/infiniband/hw/qedr/verbs.c b/drivers/infiniband/hw/qedr/verbs.c
1661     index 7603a1641c7d8..38c651f1a606b 100644
1662     --- a/drivers/infiniband/hw/qedr/verbs.c
1663     +++ b/drivers/infiniband/hw/qedr/verbs.c
1664     @@ -2015,15 +2015,18 @@ int qedr_query_qp(struct ib_qp *ibqp,
1665     int rc = 0;
1666    
1667     memset(&params, 0, sizeof(params));
1668     -
1669     - rc = dev->ops->rdma_query_qp(dev->rdma_ctx, qp->qed_qp, &params);
1670     - if (rc)
1671     - goto err;
1672     -
1673     memset(qp_attr, 0, sizeof(*qp_attr));
1674     memset(qp_init_attr, 0, sizeof(*qp_init_attr));
1675    
1676     - qp_attr->qp_state = qedr_get_ibqp_state(params.state);
1677     + if (qp->qp_type != IB_QPT_GSI) {
1678     + rc = dev->ops->rdma_query_qp(dev->rdma_ctx, qp->qed_qp, &params);
1679     + if (rc)
1680     + goto err;
1681     + qp_attr->qp_state = qedr_get_ibqp_state(params.state);
1682     + } else {
1683     + qp_attr->qp_state = qedr_get_ibqp_state(QED_ROCE_QP_STATE_RTS);
1684     + }
1685     +
1686     qp_attr->cur_qp_state = qedr_get_ibqp_state(params.state);
1687     qp_attr->path_mtu = iboe_get_mtu(params.mtu);
1688     qp_attr->path_mig_state = IB_MIG_MIGRATED;
1689     diff --git a/drivers/infiniband/sw/rxe/rxe_param.h b/drivers/infiniband/sw/rxe/rxe_param.h
1690     index 13ed2cc6eaa2a..9f7817e12775a 100644
1691     --- a/drivers/infiniband/sw/rxe/rxe_param.h
1692     +++ b/drivers/infiniband/sw/rxe/rxe_param.h
1693     @@ -144,7 +144,7 @@ enum rxe_port_param {
1694     RXE_PORT_MAX_MTU = IB_MTU_4096,
1695     RXE_PORT_ACTIVE_MTU = IB_MTU_256,
1696     RXE_PORT_GID_TBL_LEN = 1024,
1697     - RXE_PORT_PORT_CAP_FLAGS = RDMA_CORE_CAP_PROT_ROCE_UDP_ENCAP,
1698     + RXE_PORT_PORT_CAP_FLAGS = IB_PORT_CM_SUP,
1699     RXE_PORT_MAX_MSG_SZ = 0x800000,
1700     RXE_PORT_BAD_PKEY_CNTR = 0,
1701     RXE_PORT_QKEY_VIOL_CNTR = 0,
1702     diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c
1703     index 15be3ee6cc501..4aba40c881a73 100644
1704     --- a/drivers/input/mouse/elantech.c
1705     +++ b/drivers/input/mouse/elantech.c
1706     @@ -431,6 +431,19 @@ static void elantech_report_trackpoint(struct psmouse *psmouse,
1707     case 0x16008020U:
1708     case 0x26800010U:
1709     case 0x36808000U:
1710     +
1711     + /*
1712     + * This firmware misreport coordinates for trackpoint
1713     + * occasionally. Discard packets outside of [-127, 127] range
1714     + * to prevent cursor jumps.
1715     + */
1716     + if (packet[4] == 0x80 || packet[5] == 0x80 ||
1717     + packet[1] >> 7 == packet[4] >> 7 ||
1718     + packet[2] >> 7 == packet[5] >> 7) {
1719     + elantech_debug("discarding packet [%6ph]\n", packet);
1720     + break;
1721     +
1722     + }
1723     x = packet[4] - (int)((packet[1]^0x80) << 1);
1724     y = (int)((packet[2]^0x80) << 1) - packet[5];
1725    
1726     diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
1727     index 3049bccf24227..323b86b38b3a3 100644
1728     --- a/drivers/input/serio/i8042-x86ia64io.h
1729     +++ b/drivers/input/serio/i8042-x86ia64io.h
1730     @@ -276,6 +276,13 @@ static const struct dmi_system_id __initconst i8042_dmi_nomux_table[] = {
1731     DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook S6230"),
1732     },
1733     },
1734     + {
1735     + /* Fujitsu Lifebook T725 laptop */
1736     + .matches = {
1737     + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
1738     + DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK T725"),
1739     + },
1740     + },
1741     {
1742     /* Fujitsu Lifebook U745 */
1743     .matches = {
1744     @@ -916,6 +923,13 @@ static const struct dmi_system_id __initconst i8042_dmi_notimeout_table[] = {
1745     DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK AH544"),
1746     },
1747     },
1748     + {
1749     + /* Fujitsu Lifebook T725 laptop */
1750     + .matches = {
1751     + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
1752     + DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK T725"),
1753     + },
1754     + },
1755     {
1756     /* Fujitsu U574 laptop */
1757     /* https://bugzilla.kernel.org/show_bug.cgi?id=69731 */
1758     diff --git a/drivers/irqchip/irq-bcm6345-l1.c b/drivers/irqchip/irq-bcm6345-l1.c
1759     index daa4ae89e466e..7ed976d436b25 100644
1760     --- a/drivers/irqchip/irq-bcm6345-l1.c
1761     +++ b/drivers/irqchip/irq-bcm6345-l1.c
1762     @@ -143,7 +143,7 @@ static void bcm6345_l1_irq_handle(struct irq_desc *desc)
1763     for_each_set_bit(hwirq, &pending, IRQS_PER_WORD) {
1764     irq = irq_linear_revmap(intc->domain, base + hwirq);
1765     if (irq)
1766     - do_IRQ(irq);
1767     + generic_handle_irq(irq);
1768     else
1769     spurious_interrupt();
1770     }
1771     diff --git a/drivers/irqchip/irq-s3c24xx.c b/drivers/irqchip/irq-s3c24xx.c
1772     index c25ce5af091ad..e92ab62cc87d9 100644
1773     --- a/drivers/irqchip/irq-s3c24xx.c
1774     +++ b/drivers/irqchip/irq-s3c24xx.c
1775     @@ -368,11 +368,25 @@ static inline int s3c24xx_handle_intc(struct s3c_irq_intc *intc,
1776     asmlinkage void __exception_irq_entry s3c24xx_handle_irq(struct pt_regs *regs)
1777     {
1778     do {
1779     - if (likely(s3c_intc[0]))
1780     - if (s3c24xx_handle_intc(s3c_intc[0], regs, 0))
1781     - continue;
1782     + /*
1783     + * For platform based machines, neither ERR nor NULL can happen here.
1784     + * The s3c24xx_handle_irq() will be set as IRQ handler iff this succeeds:
1785     + *
1786     + * s3c_intc[0] = s3c24xx_init_intc()
1787     + *
1788     + * If this fails, the next calls to s3c24xx_init_intc() won't be executed.
1789     + *
1790     + * For DT machine, s3c_init_intc_of() could set the IRQ handler without
1791     + * setting s3c_intc[0] only if it was called with num_ctrl=0. There is no
1792     + * such code path, so again the s3c_intc[0] will have a valid pointer if
1793     + * set_handle_irq() is called.
1794     + *
1795     + * Therefore in s3c24xx_handle_irq(), the s3c_intc[0] is always something.
1796     + */
1797     + if (s3c24xx_handle_intc(s3c_intc[0], regs, 0))
1798     + continue;
1799    
1800     - if (s3c_intc[2])
1801     + if (!IS_ERR_OR_NULL(s3c_intc[2]))
1802     if (s3c24xx_handle_intc(s3c_intc[2], regs, 64))
1803     continue;
1804    
1805     diff --git a/drivers/media/i2c/mt9p031.c b/drivers/media/i2c/mt9p031.c
1806     index 237737fec09c1..e6159faff45af 100644
1807     --- a/drivers/media/i2c/mt9p031.c
1808     +++ b/drivers/media/i2c/mt9p031.c
1809     @@ -81,7 +81,9 @@
1810     #define MT9P031_PIXEL_CLOCK_INVERT (1 << 15)
1811     #define MT9P031_PIXEL_CLOCK_SHIFT(n) ((n) << 8)
1812     #define MT9P031_PIXEL_CLOCK_DIVIDE(n) ((n) << 0)
1813     -#define MT9P031_FRAME_RESTART 0x0b
1814     +#define MT9P031_RESTART 0x0b
1815     +#define MT9P031_FRAME_PAUSE_RESTART (1 << 1)
1816     +#define MT9P031_FRAME_RESTART (1 << 0)
1817     #define MT9P031_SHUTTER_DELAY 0x0c
1818     #define MT9P031_RST 0x0d
1819     #define MT9P031_RST_ENABLE 1
1820     @@ -448,9 +450,23 @@ static int mt9p031_set_params(struct mt9p031 *mt9p031)
1821     static int mt9p031_s_stream(struct v4l2_subdev *subdev, int enable)
1822     {
1823     struct mt9p031 *mt9p031 = to_mt9p031(subdev);
1824     + struct i2c_client *client = v4l2_get_subdevdata(subdev);
1825     + int val;
1826     int ret;
1827    
1828     if (!enable) {
1829     + /* enable pause restart */
1830     + val = MT9P031_FRAME_PAUSE_RESTART;
1831     + ret = mt9p031_write(client, MT9P031_RESTART, val);
1832     + if (ret < 0)
1833     + return ret;
1834     +
1835     + /* enable restart + keep pause restart set */
1836     + val |= MT9P031_FRAME_RESTART;
1837     + ret = mt9p031_write(client, MT9P031_RESTART, val);
1838     + if (ret < 0)
1839     + return ret;
1840     +
1841     /* Stop sensor readout */
1842     ret = mt9p031_set_output_control(mt9p031,
1843     MT9P031_OUTPUT_CONTROL_CEN, 0);
1844     @@ -470,6 +486,16 @@ static int mt9p031_s_stream(struct v4l2_subdev *subdev, int enable)
1845     if (ret < 0)
1846     return ret;
1847    
1848     + /*
1849     + * - clear pause restart
1850     + * - don't clear restart as clearing restart manually can cause
1851     + * undefined behavior
1852     + */
1853     + val = MT9P031_FRAME_RESTART;
1854     + ret = mt9p031_write(client, MT9P031_RESTART, val);
1855     + if (ret < 0)
1856     + return ret;
1857     +
1858     return mt9p031_pll_enable(mt9p031);
1859     }
1860    
1861     diff --git a/drivers/media/pci/netup_unidvb/netup_unidvb_core.c b/drivers/media/pci/netup_unidvb/netup_unidvb_core.c
1862     index b078ac2a682cf..48e1f4a128019 100644
1863     --- a/drivers/media/pci/netup_unidvb/netup_unidvb_core.c
1864     +++ b/drivers/media/pci/netup_unidvb/netup_unidvb_core.c
1865     @@ -266,19 +266,24 @@ static irqreturn_t netup_unidvb_isr(int irq, void *dev_id)
1866     if ((reg40 & AVL_IRQ_ASSERTED) != 0) {
1867     /* IRQ is being signaled */
1868     reg_isr = readw(ndev->bmmio0 + REG_ISR);
1869     - if (reg_isr & NETUP_UNIDVB_IRQ_I2C0) {
1870     - iret = netup_i2c_interrupt(&ndev->i2c[0]);
1871     - } else if (reg_isr & NETUP_UNIDVB_IRQ_I2C1) {
1872     - iret = netup_i2c_interrupt(&ndev->i2c[1]);
1873     - } else if (reg_isr & NETUP_UNIDVB_IRQ_SPI) {
1874     + if (reg_isr & NETUP_UNIDVB_IRQ_SPI)
1875     iret = netup_spi_interrupt(ndev->spi);
1876     - } else if (reg_isr & NETUP_UNIDVB_IRQ_DMA1) {
1877     - iret = netup_dma_interrupt(&ndev->dma[0]);
1878     - } else if (reg_isr & NETUP_UNIDVB_IRQ_DMA2) {
1879     - iret = netup_dma_interrupt(&ndev->dma[1]);
1880     - } else if (reg_isr & NETUP_UNIDVB_IRQ_CI) {
1881     - iret = netup_ci_interrupt(ndev);
1882     + else if (!ndev->old_fw) {
1883     + if (reg_isr & NETUP_UNIDVB_IRQ_I2C0) {
1884     + iret = netup_i2c_interrupt(&ndev->i2c[0]);
1885     + } else if (reg_isr & NETUP_UNIDVB_IRQ_I2C1) {
1886     + iret = netup_i2c_interrupt(&ndev->i2c[1]);
1887     + } else if (reg_isr & NETUP_UNIDVB_IRQ_DMA1) {
1888     + iret = netup_dma_interrupt(&ndev->dma[0]);
1889     + } else if (reg_isr & NETUP_UNIDVB_IRQ_DMA2) {
1890     + iret = netup_dma_interrupt(&ndev->dma[1]);
1891     + } else if (reg_isr & NETUP_UNIDVB_IRQ_CI) {
1892     + iret = netup_ci_interrupt(ndev);
1893     + } else {
1894     + goto err;
1895     + }
1896     } else {
1897     +err:
1898     dev_err(&pci_dev->dev,
1899     "%s(): unknown interrupt 0x%x\n",
1900     __func__, reg_isr);
1901     diff --git a/drivers/media/platform/mtk-vpu/mtk_vpu.c b/drivers/media/platform/mtk-vpu/mtk_vpu.c
1902     index c9bf58c978780..9c332ce8cdfec 100644
1903     --- a/drivers/media/platform/mtk-vpu/mtk_vpu.c
1904     +++ b/drivers/media/platform/mtk-vpu/mtk_vpu.c
1905     @@ -801,7 +801,8 @@ static int mtk_vpu_probe(struct platform_device *pdev)
1906     vpu->wdt.wq = create_singlethread_workqueue("vpu_wdt");
1907     if (!vpu->wdt.wq) {
1908     dev_err(dev, "initialize wdt workqueue failed\n");
1909     - return -ENOMEM;
1910     + ret = -ENOMEM;
1911     + goto clk_unprepare;
1912     }
1913     INIT_WORK(&vpu->wdt.ws, vpu_wdt_reset_func);
1914     mutex_init(&vpu->vpu_mutex);
1915     @@ -900,6 +901,8 @@ disable_vpu_clk:
1916     vpu_clock_disable(vpu);
1917     workqueue_destroy:
1918     destroy_workqueue(vpu->wdt.wq);
1919     +clk_unprepare:
1920     + clk_unprepare(vpu->clk);
1921    
1922     return ret;
1923     }
1924     diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc.c b/drivers/media/platform/s5p-mfc/s5p_mfc.c
1925     index 8051c13456922..0ff972b8d9671 100644
1926     --- a/drivers/media/platform/s5p-mfc/s5p_mfc.c
1927     +++ b/drivers/media/platform/s5p-mfc/s5p_mfc.c
1928     @@ -1160,7 +1160,7 @@ static int s5p_mfc_probe(struct platform_device *pdev)
1929     spin_lock_init(&dev->condlock);
1930     dev->plat_dev = pdev;
1931     if (!dev->plat_dev) {
1932     - dev_err(&pdev->dev, "No platform data specified\n");
1933     + mfc_err("No platform data specified\n");
1934     return -ENODEV;
1935     }
1936    
1937     diff --git a/drivers/media/radio/si470x/radio-si470x-i2c.c b/drivers/media/radio/si470x/radio-si470x-i2c.c
1938     index 8f3086773db46..6162aa5758428 100644
1939     --- a/drivers/media/radio/si470x/radio-si470x-i2c.c
1940     +++ b/drivers/media/radio/si470x/radio-si470x-i2c.c
1941     @@ -24,7 +24,7 @@
1942    
1943     /* driver definitions */
1944     #define DRIVER_AUTHOR "Joonyoung Shim <jy0922.shim@samsung.com>";
1945     -#define DRIVER_CARD "Silicon Labs Si470x FM Radio Receiver"
1946     +#define DRIVER_CARD "Silicon Labs Si470x FM Radio"
1947     #define DRIVER_DESC "I2C radio driver for Si470x FM Radio Receivers"
1948     #define DRIVER_VERSION "1.0.2"
1949    
1950     diff --git a/drivers/media/radio/si470x/radio-si470x-usb.c b/drivers/media/radio/si470x/radio-si470x-usb.c
1951     index 1d045a8c29e21..a8a0ff9a1f838 100644
1952     --- a/drivers/media/radio/si470x/radio-si470x-usb.c
1953     +++ b/drivers/media/radio/si470x/radio-si470x-usb.c
1954     @@ -29,7 +29,7 @@
1955    
1956     /* driver definitions */
1957     #define DRIVER_AUTHOR "Tobias Lorenz <tobias.lorenz@gmx.net>"
1958     -#define DRIVER_CARD "Silicon Labs Si470x FM Radio Receiver"
1959     +#define DRIVER_CARD "Silicon Labs Si470x FM Radio"
1960     #define DRIVER_DESC "USB radio driver for Si470x FM Radio Receivers"
1961     #define DRIVER_VERSION "1.0.10"
1962    
1963     diff --git a/drivers/media/rc/ite-cir.c b/drivers/media/rc/ite-cir.c
1964     index 7d3e50d94d86a..e8bc02ce9b2ff 100644
1965     --- a/drivers/media/rc/ite-cir.c
1966     +++ b/drivers/media/rc/ite-cir.c
1967     @@ -299,7 +299,7 @@ static irqreturn_t ite_cir_isr(int irq, void *data)
1968     }
1969    
1970     /* check for the receive interrupt */
1971     - if (iflags & ITE_IRQ_RX_FIFO) {
1972     + if (iflags & (ITE_IRQ_RX_FIFO | ITE_IRQ_RX_FIFO_OVERRUN)) {
1973     /* read the FIFO bytes */
1974     rx_bytes =
1975     dev->params.get_rx_bytes(dev, rx_buf,
1976     diff --git a/drivers/media/rc/mceusb.c b/drivers/media/rc/mceusb.c
1977     index d9f88a4a96bd1..b78d70685b1c3 100644
1978     --- a/drivers/media/rc/mceusb.c
1979     +++ b/drivers/media/rc/mceusb.c
1980     @@ -1090,6 +1090,7 @@ static void mceusb_dev_recv(struct urb *urb)
1981     case -ECONNRESET:
1982     case -ENOENT:
1983     case -EILSEQ:
1984     + case -EPROTO:
1985     case -ESHUTDOWN:
1986     usb_unlink_urb(urb);
1987     return;
1988     diff --git a/drivers/media/usb/dvb-usb/az6027.c b/drivers/media/usb/dvb-usb/az6027.c
1989     index 2e711362847e4..382c8075ef524 100644
1990     --- a/drivers/media/usb/dvb-usb/az6027.c
1991     +++ b/drivers/media/usb/dvb-usb/az6027.c
1992     @@ -394,6 +394,7 @@ static struct rc_map_table rc_map_az6027_table[] = {
1993     /* remote control stuff (does not work with my box) */
1994     static int az6027_rc_query(struct dvb_usb_device *d, u32 *event, int *state)
1995     {
1996     + *state = REMOTE_NO_KEY_PRESSED;
1997     return 0;
1998     }
1999    
2000     diff --git a/drivers/media/usb/dvb-usb/dibusb-common.c b/drivers/media/usb/dvb-usb/dibusb-common.c
2001     index bcacb0f220282..3e45642ae186b 100644
2002     --- a/drivers/media/usb/dvb-usb/dibusb-common.c
2003     +++ b/drivers/media/usb/dvb-usb/dibusb-common.c
2004     @@ -226,7 +226,7 @@ int dibusb_read_eeprom_byte(struct dvb_usb_device *d, u8 offs, u8 *val)
2005     u8 *buf;
2006     int rc;
2007    
2008     - buf = kmalloc(2, GFP_KERNEL);
2009     + buf = kzalloc(2, GFP_KERNEL);
2010     if (!buf)
2011     return -ENOMEM;
2012    
2013     diff --git a/drivers/media/usb/uvc/uvc_v4l2.c b/drivers/media/usb/uvc/uvc_v4l2.c
2014     index 4a270f88aa18c..2b1e06e825f0d 100644
2015     --- a/drivers/media/usb/uvc/uvc_v4l2.c
2016     +++ b/drivers/media/usb/uvc/uvc_v4l2.c
2017     @@ -451,10 +451,13 @@ static int uvc_v4l2_set_streamparm(struct uvc_streaming *stream,
2018     uvc_simplify_fraction(&timeperframe.numerator,
2019     &timeperframe.denominator, 8, 333);
2020    
2021     - if (parm->type == V4L2_BUF_TYPE_VIDEO_CAPTURE)
2022     + if (parm->type == V4L2_BUF_TYPE_VIDEO_CAPTURE) {
2023     parm->parm.capture.timeperframe = timeperframe;
2024     - else
2025     + parm->parm.capture.capability = V4L2_CAP_TIMEPERFRAME;
2026     + } else {
2027     parm->parm.output.timeperframe = timeperframe;
2028     + parm->parm.output.capability = V4L2_CAP_TIMEPERFRAME;
2029     + }
2030    
2031     return 0;
2032     }
2033     diff --git a/drivers/memory/fsl_ifc.c b/drivers/memory/fsl_ifc.c
2034     index 38b945eb410f3..9c0e70b047c39 100644
2035     --- a/drivers/memory/fsl_ifc.c
2036     +++ b/drivers/memory/fsl_ifc.c
2037     @@ -276,7 +276,7 @@ static int fsl_ifc_ctrl_probe(struct platform_device *dev)
2038    
2039     ret = fsl_ifc_ctrl_init(fsl_ifc_ctrl_dev);
2040     if (ret < 0)
2041     - goto err;
2042     + goto err_unmap_nandirq;
2043    
2044     init_waitqueue_head(&fsl_ifc_ctrl_dev->nand_wait);
2045    
2046     @@ -285,7 +285,7 @@ static int fsl_ifc_ctrl_probe(struct platform_device *dev)
2047     if (ret != 0) {
2048     dev_err(&dev->dev, "failed to install irq (%d)\n",
2049     fsl_ifc_ctrl_dev->irq);
2050     - goto err_irq;
2051     + goto err_unmap_nandirq;
2052     }
2053    
2054     if (fsl_ifc_ctrl_dev->nand_irq) {
2055     @@ -294,17 +294,16 @@ static int fsl_ifc_ctrl_probe(struct platform_device *dev)
2056     if (ret != 0) {
2057     dev_err(&dev->dev, "failed to install irq (%d)\n",
2058     fsl_ifc_ctrl_dev->nand_irq);
2059     - goto err_nandirq;
2060     + goto err_free_irq;
2061     }
2062     }
2063    
2064     return 0;
2065    
2066     -err_nandirq:
2067     - free_irq(fsl_ifc_ctrl_dev->nand_irq, fsl_ifc_ctrl_dev);
2068     - irq_dispose_mapping(fsl_ifc_ctrl_dev->nand_irq);
2069     -err_irq:
2070     +err_free_irq:
2071     free_irq(fsl_ifc_ctrl_dev->irq, fsl_ifc_ctrl_dev);
2072     +err_unmap_nandirq:
2073     + irq_dispose_mapping(fsl_ifc_ctrl_dev->nand_irq);
2074     irq_dispose_mapping(fsl_ifc_ctrl_dev->irq);
2075     err:
2076     iounmap(fsl_ifc_ctrl_dev->gregs);
2077     diff --git a/drivers/memstick/core/ms_block.c b/drivers/memstick/core/ms_block.c
2078     index aacf584f2a42e..45136b700d2c4 100644
2079     --- a/drivers/memstick/core/ms_block.c
2080     +++ b/drivers/memstick/core/ms_block.c
2081     @@ -1730,7 +1730,7 @@ static int msb_init_card(struct memstick_dev *card)
2082     msb->pages_in_block = boot_block->attr.block_size * 2;
2083     msb->block_size = msb->page_size * msb->pages_in_block;
2084    
2085     - if (msb->page_size > PAGE_SIZE) {
2086     + if ((size_t)msb->page_size > PAGE_SIZE) {
2087     /* this isn't supported by linux at all, anyway*/
2088     dbg("device page %d size isn't supported", msb->page_size);
2089     return -EINVAL;
2090     diff --git a/drivers/memstick/host/jmb38x_ms.c b/drivers/memstick/host/jmb38x_ms.c
2091     index 08fa6400d2558..ba6cd576e9979 100644
2092     --- a/drivers/memstick/host/jmb38x_ms.c
2093     +++ b/drivers/memstick/host/jmb38x_ms.c
2094     @@ -905,7 +905,7 @@ static struct memstick_host *jmb38x_ms_alloc_host(struct jmb38x_ms *jm, int cnt)
2095    
2096     iounmap(host->addr);
2097     err_out_free:
2098     - kfree(msh);
2099     + memstick_free_host(msh);
2100     return NULL;
2101     }
2102    
2103     diff --git a/drivers/memstick/host/r592.c b/drivers/memstick/host/r592.c
2104     index 2539984c1db1c..256634ec58b63 100644
2105     --- a/drivers/memstick/host/r592.c
2106     +++ b/drivers/memstick/host/r592.c
2107     @@ -841,15 +841,15 @@ static void r592_remove(struct pci_dev *pdev)
2108     }
2109     memstick_remove_host(dev->host);
2110    
2111     + if (dev->dummy_dma_page)
2112     + dma_free_coherent(&pdev->dev, PAGE_SIZE, dev->dummy_dma_page,
2113     + dev->dummy_dma_page_physical_address);
2114     +
2115     free_irq(dev->irq, dev);
2116     iounmap(dev->mmio);
2117     pci_release_regions(pdev);
2118     pci_disable_device(pdev);
2119     memstick_free_host(dev->host);
2120     -
2121     - if (dev->dummy_dma_page)
2122     - dma_free_coherent(&pdev->dev, PAGE_SIZE, dev->dummy_dma_page,
2123     - dev->dummy_dma_page_physical_address);
2124     }
2125    
2126     #ifdef CONFIG_PM_SLEEP
2127     diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
2128     index 5274f503a39ad..5c0bc817019f7 100644
2129     --- a/drivers/mmc/host/Kconfig
2130     +++ b/drivers/mmc/host/Kconfig
2131     @@ -367,7 +367,7 @@ config MMC_OMAP_HS
2132    
2133     config MMC_WBSD
2134     tristate "Winbond W83L51xD SD/MMC Card Interface support"
2135     - depends on ISA_DMA_API
2136     + depends on ISA_DMA_API && !M68K
2137     help
2138     This selects the Winbond(R) W83L51xD Secure digital and
2139     Multimedia card Interface.
2140     diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
2141     index 209bdf0317b34..1c80717af333e 100644
2142     --- a/drivers/mmc/host/dw_mmc.c
2143     +++ b/drivers/mmc/host/dw_mmc.c
2144     @@ -1862,7 +1862,8 @@ static void dw_mci_tasklet_func(unsigned long priv)
2145     * delayed. Allowing the transfer to take place
2146     * avoids races and keeps things simple.
2147     */
2148     - if (err != -ETIMEDOUT) {
2149     + if (err != -ETIMEDOUT &&
2150     + host->dir_status == DW_MCI_RECV_STATUS) {
2151     state = STATE_SENDING_DATA;
2152     continue;
2153     }
2154     diff --git a/drivers/mmc/host/mxs-mmc.c b/drivers/mmc/host/mxs-mmc.c
2155     index 687fd68fbbcd1..77a03301b2a58 100644
2156     --- a/drivers/mmc/host/mxs-mmc.c
2157     +++ b/drivers/mmc/host/mxs-mmc.c
2158     @@ -571,6 +571,11 @@ static const struct of_device_id mxs_mmc_dt_ids[] = {
2159     };
2160     MODULE_DEVICE_TABLE(of, mxs_mmc_dt_ids);
2161    
2162     +static void mxs_mmc_regulator_disable(void *regulator)
2163     +{
2164     + regulator_disable(regulator);
2165     +}
2166     +
2167     static int mxs_mmc_probe(struct platform_device *pdev)
2168     {
2169     const struct of_device_id *of_id =
2170     @@ -614,6 +619,11 @@ static int mxs_mmc_probe(struct platform_device *pdev)
2171     "Failed to enable vmmc regulator: %d\n", ret);
2172     goto out_mmc_free;
2173     }
2174     +
2175     + ret = devm_add_action_or_reset(&pdev->dev, mxs_mmc_regulator_disable,
2176     + reg_vmmc);
2177     + if (ret)
2178     + goto out_mmc_free;
2179     }
2180    
2181     ssp->clk = devm_clk_get(&pdev->dev, NULL);
2182     diff --git a/drivers/mtd/spi-nor/hisi-sfc.c b/drivers/mtd/spi-nor/hisi-sfc.c
2183     index 68be79ba571df..a0c2101f0b486 100644
2184     --- a/drivers/mtd/spi-nor/hisi-sfc.c
2185     +++ b/drivers/mtd/spi-nor/hisi-sfc.c
2186     @@ -467,7 +467,6 @@ static int hisi_spi_nor_remove(struct platform_device *pdev)
2187    
2188     hisi_spi_nor_unregister_all(host);
2189     mutex_destroy(&host->lock);
2190     - clk_disable_unprepare(host->clk);
2191     return 0;
2192     }
2193    
2194     diff --git a/drivers/net/bonding/bond_sysfs_slave.c b/drivers/net/bonding/bond_sysfs_slave.c
2195     index 68bbac4715c35..1e1e77a40f182 100644
2196     --- a/drivers/net/bonding/bond_sysfs_slave.c
2197     +++ b/drivers/net/bonding/bond_sysfs_slave.c
2198     @@ -112,15 +112,15 @@ static ssize_t ad_partner_oper_port_state_show(struct slave *slave, char *buf)
2199     }
2200     static SLAVE_ATTR_RO(ad_partner_oper_port_state);
2201    
2202     -static const struct slave_attribute *slave_attrs[] = {
2203     - &slave_attr_state,
2204     - &slave_attr_mii_status,
2205     - &slave_attr_link_failure_count,
2206     - &slave_attr_perm_hwaddr,
2207     - &slave_attr_queue_id,
2208     - &slave_attr_ad_aggregator_id,
2209     - &slave_attr_ad_actor_oper_port_state,
2210     - &slave_attr_ad_partner_oper_port_state,
2211     +static const struct attribute *slave_attrs[] = {
2212     + &slave_attr_state.attr,
2213     + &slave_attr_mii_status.attr,
2214     + &slave_attr_link_failure_count.attr,
2215     + &slave_attr_perm_hwaddr.attr,
2216     + &slave_attr_queue_id.attr,
2217     + &slave_attr_ad_aggregator_id.attr,
2218     + &slave_attr_ad_actor_oper_port_state.attr,
2219     + &slave_attr_ad_partner_oper_port_state.attr,
2220     NULL
2221     };
2222    
2223     @@ -141,24 +141,10 @@ const struct sysfs_ops slave_sysfs_ops = {
2224    
2225     int bond_sysfs_slave_add(struct slave *slave)
2226     {
2227     - const struct slave_attribute **a;
2228     - int err;
2229     -
2230     - for (a = slave_attrs; *a; ++a) {
2231     - err = sysfs_create_file(&slave->kobj, &((*a)->attr));
2232     - if (err) {
2233     - kobject_put(&slave->kobj);
2234     - return err;
2235     - }
2236     - }
2237     -
2238     - return 0;
2239     + return sysfs_create_files(&slave->kobj, slave_attrs);
2240     }
2241    
2242     void bond_sysfs_slave_del(struct slave *slave)
2243     {
2244     - const struct slave_attribute **a;
2245     -
2246     - for (a = slave_attrs; *a; ++a)
2247     - sysfs_remove_file(&slave->kobj, &((*a)->attr));
2248     + sysfs_remove_files(&slave->kobj, slave_attrs);
2249     }
2250     diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_init_ops.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_init_ops.h
2251     index 1835d2e451c01..fc7fce642666c 100644
2252     --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_init_ops.h
2253     +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_init_ops.h
2254     @@ -635,11 +635,13 @@ static int bnx2x_ilt_client_mem_op(struct bnx2x *bp, int cli_num,
2255     {
2256     int i, rc;
2257     struct bnx2x_ilt *ilt = BP_ILT(bp);
2258     - struct ilt_client_info *ilt_cli = &ilt->clients[cli_num];
2259     + struct ilt_client_info *ilt_cli;
2260    
2261     if (!ilt || !ilt->lines)
2262     return -1;
2263    
2264     + ilt_cli = &ilt->clients[cli_num];
2265     +
2266     if (ilt_cli->flags & (ILT_CLIENT_SKIP_INIT | ILT_CLIENT_SKIP_MEM))
2267     return 0;
2268    
2269     diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_main.c b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
2270     index 537776a3e5de1..9ba36425a3ddd 100644
2271     --- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c
2272     +++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
2273     @@ -1889,7 +1889,7 @@ static void i40evf_adminq_task(struct work_struct *work)
2274    
2275     /* check for error indications */
2276     val = rd32(hw, hw->aq.arq.len);
2277     - if (val == 0xdeadbeef) /* indicates device in reset */
2278     + if (val == 0xdeadbeef || val == 0xffffffff) /* device in reset */
2279     goto freedom;
2280     oldval = val;
2281     if (val & I40E_VF_ARQLEN1_ARQVFE_MASK) {
2282     diff --git a/drivers/net/ethernet/sfc/ptp.c b/drivers/net/ethernet/sfc/ptp.c
2283     index 04cbff7f1b23d..a48ff6fc66b44 100644
2284     --- a/drivers/net/ethernet/sfc/ptp.c
2285     +++ b/drivers/net/ethernet/sfc/ptp.c
2286     @@ -494,7 +494,7 @@ static int efx_ptp_get_attributes(struct efx_nic *efx)
2287     } else if (rc == -EINVAL) {
2288     fmt = MC_CMD_PTP_OUT_GET_ATTRIBUTES_SECONDS_NANOSECONDS;
2289     } else if (rc == -EPERM) {
2290     - netif_info(efx, probe, efx->net_dev, "no PTP support\n");
2291     + pci_info(efx->pci_dev, "no PTP support\n");
2292     return rc;
2293     } else {
2294     efx_mcdi_display_error(efx, MC_CMD_PTP, sizeof(inbuf),
2295     @@ -613,7 +613,7 @@ static int efx_ptp_disable(struct efx_nic *efx)
2296     * should only have been called during probe.
2297     */
2298     if (rc == -ENOSYS || rc == -EPERM)
2299     - netif_info(efx, probe, efx->net_dev, "no PTP support\n");
2300     + pci_info(efx->pci_dev, "no PTP support\n");
2301     else if (rc)
2302     efx_mcdi_display_error(efx, MC_CMD_PTP,
2303     MC_CMD_PTP_IN_DISABLE_LEN,
2304     diff --git a/drivers/net/ethernet/sfc/siena_sriov.c b/drivers/net/ethernet/sfc/siena_sriov.c
2305     index da7b94f346049..30d58f72725df 100644
2306     --- a/drivers/net/ethernet/sfc/siena_sriov.c
2307     +++ b/drivers/net/ethernet/sfc/siena_sriov.c
2308     @@ -1059,7 +1059,7 @@ void efx_siena_sriov_probe(struct efx_nic *efx)
2309     return;
2310    
2311     if (efx_siena_sriov_cmd(efx, false, &efx->vi_scale, &count)) {
2312     - netif_info(efx, probe, efx->net_dev, "no SR-IOV VFs probed\n");
2313     + pci_info(efx->pci_dev, "no SR-IOV VFs probed\n");
2314     return;
2315     }
2316     if (count > 0 && count > max_vfs)
2317     diff --git a/drivers/net/ethernet/ti/davinci_emac.c b/drivers/net/ethernet/ti/davinci_emac.c
2318     index 8b7596fef42a6..37162492e2635 100644
2319     --- a/drivers/net/ethernet/ti/davinci_emac.c
2320     +++ b/drivers/net/ethernet/ti/davinci_emac.c
2321     @@ -426,8 +426,20 @@ static int emac_set_coalesce(struct net_device *ndev,
2322     u32 int_ctrl, num_interrupts = 0;
2323     u32 prescale = 0, addnl_dvdr = 1, coal_intvl = 0;
2324    
2325     - if (!coal->rx_coalesce_usecs)
2326     - return -EINVAL;
2327     + if (!coal->rx_coalesce_usecs) {
2328     + priv->coal_intvl = 0;
2329     +
2330     + switch (priv->version) {
2331     + case EMAC_VERSION_2:
2332     + emac_ctrl_write(EMAC_DM646X_CMINTCTRL, 0);
2333     + break;
2334     + default:
2335     + emac_ctrl_write(EMAC_CTRL_EWINTTCNT, 0);
2336     + break;
2337     + }
2338     +
2339     + return 0;
2340     + }
2341    
2342     coal_intvl = coal->rx_coalesce_usecs;
2343    
2344     diff --git a/drivers/net/phy/mdio-mux.c b/drivers/net/phy/mdio-mux.c
2345     index 599ce24c514f1..456b64248e5da 100644
2346     --- a/drivers/net/phy/mdio-mux.c
2347     +++ b/drivers/net/phy/mdio-mux.c
2348     @@ -117,6 +117,7 @@ int mdio_mux_init(struct device *dev,
2349     } else {
2350     parent_bus_node = NULL;
2351     parent_bus = mux_bus;
2352     + get_device(&parent_bus->dev);
2353     }
2354    
2355     pb = devm_kzalloc(dev, sizeof(*pb), GFP_KERNEL);
2356     @@ -182,9 +183,7 @@ int mdio_mux_init(struct device *dev,
2357    
2358     devm_kfree(dev, pb);
2359     err_pb_kz:
2360     - /* balance the reference of_mdio_find_bus() took */
2361     - if (!mux_bus)
2362     - put_device(&parent_bus->dev);
2363     + put_device(&parent_bus->dev);
2364     err_parent_bus:
2365     of_node_put(parent_bus_node);
2366     return ret_val;
2367     @@ -202,7 +201,6 @@ void mdio_mux_uninit(void *mux_handle)
2368     cb = cb->next;
2369     }
2370    
2371     - /* balance the reference of_mdio_find_bus() in mdio_mux_init() took */
2372     put_device(&pb->mii_bus->dev);
2373     }
2374     EXPORT_SYMBOL_GPL(mdio_mux_uninit);
2375     diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c
2376     index 1704d9e2ca8d1..c21328e1e3cca 100644
2377     --- a/drivers/net/phy/micrel.c
2378     +++ b/drivers/net/phy/micrel.c
2379     @@ -876,8 +876,9 @@ static struct phy_driver ksphy_driver[] = {
2380     .get_sset_count = kszphy_get_sset_count,
2381     .get_strings = kszphy_get_strings,
2382     .get_stats = kszphy_get_stats,
2383     - .suspend = genphy_suspend,
2384     - .resume = genphy_resume,
2385     + /* No suspend/resume callbacks because of errata DS80000700A,
2386     + * receiver error following software power down.
2387     + */
2388     }, {
2389     .phy_id = PHY_ID_KSZ8041RNLI,
2390     .phy_id_mask = MICREL_PHY_ID_MASK,
2391     diff --git a/drivers/net/tun.c b/drivers/net/tun.c
2392     index dc0349d13f86a..966e2f03c1296 100644
2393     --- a/drivers/net/tun.c
2394     +++ b/drivers/net/tun.c
2395     @@ -855,6 +855,7 @@ static netdev_tx_t tun_net_xmit(struct sk_buff *skb, struct net_device *dev)
2396     {
2397     struct tun_struct *tun = netdev_priv(dev);
2398     int txq = skb->queue_mapping;
2399     + struct netdev_queue *queue;
2400     struct tun_file *tfile;
2401     u32 numqueues = 0;
2402    
2403     @@ -920,6 +921,10 @@ static netdev_tx_t tun_net_xmit(struct sk_buff *skb, struct net_device *dev)
2404     if (skb_array_produce(&tfile->tx_array, skb))
2405     goto drop;
2406    
2407     + /* NETIF_F_LLTX requires to do our own update of trans_start */
2408     + queue = netdev_get_tx_queue(dev, txq);
2409     + queue->trans_start = jiffies;
2410     +
2411     /* Notify and wake up reader process */
2412     if (tfile->flags & TUN_FASYNC)
2413     kill_fasync(&tfile->fasync, SIGIO, POLL_IN);
2414     diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c
2415     index c999b10531c59..56a8031b56b37 100644
2416     --- a/drivers/net/vmxnet3/vmxnet3_drv.c
2417     +++ b/drivers/net/vmxnet3/vmxnet3_drv.c
2418     @@ -3622,7 +3622,6 @@ vmxnet3_suspend(struct device *device)
2419     vmxnet3_free_intr_resources(adapter);
2420    
2421     netif_device_detach(netdev);
2422     - netif_tx_stop_all_queues(netdev);
2423    
2424     /* Create wake-up filters. */
2425     pmConf = adapter->pm_conf;
2426     diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
2427     index 314cac2ce0879..41fb17cece622 100644
2428     --- a/drivers/net/wireless/ath/ath10k/mac.c
2429     +++ b/drivers/net/wireless/ath/ath10k/mac.c
2430     @@ -980,7 +980,7 @@ static int ath10k_monitor_vdev_start(struct ath10k *ar, int vdev_id)
2431     arg.channel.min_power = 0;
2432     arg.channel.max_power = channel->max_power * 2;
2433     arg.channel.max_reg_power = channel->max_reg_power * 2;
2434     - arg.channel.max_antenna_gain = channel->max_antenna_gain * 2;
2435     + arg.channel.max_antenna_gain = channel->max_antenna_gain;
2436    
2437     reinit_completion(&ar->vdev_setup_done);
2438    
2439     @@ -1416,7 +1416,7 @@ static int ath10k_vdev_start_restart(struct ath10k_vif *arvif,
2440     arg.channel.min_power = 0;
2441     arg.channel.max_power = chandef->chan->max_power * 2;
2442     arg.channel.max_reg_power = chandef->chan->max_reg_power * 2;
2443     - arg.channel.max_antenna_gain = chandef->chan->max_antenna_gain * 2;
2444     + arg.channel.max_antenna_gain = chandef->chan->max_antenna_gain;
2445    
2446     if (arvif->vdev_type == WMI_VDEV_TYPE_AP) {
2447     arg.ssid = arvif->u.ap.ssid;
2448     @@ -3019,7 +3019,7 @@ static int ath10k_update_channel_list(struct ath10k *ar)
2449     ch->min_power = 0;
2450     ch->max_power = channel->max_power * 2;
2451     ch->max_reg_power = channel->max_reg_power * 2;
2452     - ch->max_antenna_gain = channel->max_antenna_gain * 2;
2453     + ch->max_antenna_gain = channel->max_antenna_gain;
2454     ch->reg_class_id = 0; /* FIXME */
2455    
2456     /* FIXME: why use only legacy modes, why not any
2457     diff --git a/drivers/net/wireless/ath/ath10k/wmi.h b/drivers/net/wireless/ath/ath10k/wmi.h
2458     index cce028ea9b57d..5f718210ce682 100644
2459     --- a/drivers/net/wireless/ath/ath10k/wmi.h
2460     +++ b/drivers/net/wireless/ath/ath10k/wmi.h
2461     @@ -1802,7 +1802,9 @@ struct wmi_channel {
2462     union {
2463     __le32 reginfo1;
2464     struct {
2465     + /* note: power unit is 1 dBm */
2466     u8 antenna_max;
2467     + /* note: power unit is 0.5 dBm */
2468     u8 max_tx_power;
2469     } __packed;
2470     } __packed;
2471     @@ -1821,6 +1823,7 @@ struct wmi_channel_arg {
2472     u32 min_power;
2473     u32 max_power;
2474     u32 max_reg_power;
2475     + /* note: power unit is 1 dBm */
2476     u32 max_antenna_gain;
2477     u32 reg_class_id;
2478     enum wmi_phy_mode mode;
2479     diff --git a/drivers/net/wireless/ath/ath6kl/usb.c b/drivers/net/wireless/ath/ath6kl/usb.c
2480     index fc22c5f479276..3d0dfcf2c2462 100644
2481     --- a/drivers/net/wireless/ath/ath6kl/usb.c
2482     +++ b/drivers/net/wireless/ath/ath6kl/usb.c
2483     @@ -340,6 +340,11 @@ static int ath6kl_usb_setup_pipe_resources(struct ath6kl_usb *ar_usb)
2484     le16_to_cpu(endpoint->wMaxPacketSize),
2485     endpoint->bInterval);
2486     }
2487     +
2488     + /* Ignore broken descriptors. */
2489     + if (usb_endpoint_maxp(endpoint) == 0)
2490     + continue;
2491     +
2492     urbcount = 0;
2493    
2494     pipe_num =
2495     @@ -907,7 +912,7 @@ static int ath6kl_usb_submit_ctrl_in(struct ath6kl_usb *ar_usb,
2496     req,
2497     USB_DIR_IN | USB_TYPE_VENDOR |
2498     USB_RECIP_DEVICE, value, index, buf,
2499     - size, 2 * HZ);
2500     + size, 2000);
2501    
2502     if (ret < 0) {
2503     ath6kl_warn("Failed to read usb control message: %d\n", ret);
2504     diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
2505     index 7776f4a8630e4..ca0877f0e6392 100644
2506     --- a/drivers/net/wireless/ath/ath9k/main.c
2507     +++ b/drivers/net/wireless/ath/ath9k/main.c
2508     @@ -528,8 +528,10 @@ irqreturn_t ath_isr(int irq, void *dev)
2509     ath9k_debug_sync_cause(sc, sync_cause);
2510     status &= ah->imask; /* discard unasked-for bits */
2511    
2512     - if (test_bit(ATH_OP_HW_RESET, &common->op_flags))
2513     + if (test_bit(ATH_OP_HW_RESET, &common->op_flags)) {
2514     + ath9k_hw_kill_interrupts(sc->sc_ah);
2515     return IRQ_HANDLED;
2516     + }
2517    
2518     /*
2519     * If there are no status bits set, then this interrupt was not
2520     diff --git a/drivers/net/wireless/ath/dfs_pattern_detector.c b/drivers/net/wireless/ath/dfs_pattern_detector.c
2521     index 78146607f16e8..acd85e5069346 100644
2522     --- a/drivers/net/wireless/ath/dfs_pattern_detector.c
2523     +++ b/drivers/net/wireless/ath/dfs_pattern_detector.c
2524     @@ -182,10 +182,12 @@ static void channel_detector_exit(struct dfs_pattern_detector *dpd,
2525     if (cd == NULL)
2526     return;
2527     list_del(&cd->head);
2528     - for (i = 0; i < dpd->num_radar_types; i++) {
2529     - struct pri_detector *de = cd->detectors[i];
2530     - if (de != NULL)
2531     - de->exit(de);
2532     + if (cd->detectors) {
2533     + for (i = 0; i < dpd->num_radar_types; i++) {
2534     + struct pri_detector *de = cd->detectors[i];
2535     + if (de != NULL)
2536     + de->exit(de);
2537     + }
2538     }
2539     kfree(cd->detectors);
2540     kfree(cd);
2541     diff --git a/drivers/net/wireless/ath/wcn36xx/main.c b/drivers/net/wireless/ath/wcn36xx/main.c
2542     index 86beadf0f2493..b5a885a8301cc 100644
2543     --- a/drivers/net/wireless/ath/wcn36xx/main.c
2544     +++ b/drivers/net/wireless/ath/wcn36xx/main.c
2545     @@ -129,7 +129,9 @@ static struct ieee80211_supported_band wcn_band_2ghz = {
2546     .cap = IEEE80211_HT_CAP_GRN_FLD |
2547     IEEE80211_HT_CAP_SGI_20 |
2548     IEEE80211_HT_CAP_DSSSCCK40 |
2549     - IEEE80211_HT_CAP_LSIG_TXOP_PROT,
2550     + IEEE80211_HT_CAP_LSIG_TXOP_PROT |
2551     + IEEE80211_HT_CAP_SGI_40 |
2552     + IEEE80211_HT_CAP_SUP_WIDTH_20_40,
2553     .ht_supported = true,
2554     .ampdu_factor = IEEE80211_HT_MAX_AMPDU_64K,
2555     .ampdu_density = IEEE80211_HT_MPDU_DENSITY_16,
2556     diff --git a/drivers/net/wireless/ath/wcn36xx/smd.c b/drivers/net/wireless/ath/wcn36xx/smd.c
2557     index a443992320f2e..914c210c9e605 100644
2558     --- a/drivers/net/wireless/ath/wcn36xx/smd.c
2559     +++ b/drivers/net/wireless/ath/wcn36xx/smd.c
2560     @@ -2081,30 +2081,52 @@ static int wcn36xx_smd_delete_sta_context_ind(struct wcn36xx *wcn,
2561     size_t len)
2562     {
2563     struct wcn36xx_hal_delete_sta_context_ind_msg *rsp = buf;
2564     - struct wcn36xx_vif *tmp;
2565     + struct wcn36xx_vif *vif_priv;
2566     + struct ieee80211_vif *vif;
2567     + struct ieee80211_bss_conf *bss_conf;
2568     struct ieee80211_sta *sta;
2569     + bool found = false;
2570    
2571     if (len != sizeof(*rsp)) {
2572     wcn36xx_warn("Corrupted delete sta indication\n");
2573     return -EIO;
2574     }
2575    
2576     - wcn36xx_dbg(WCN36XX_DBG_HAL, "delete station indication %pM index %d\n",
2577     - rsp->addr2, rsp->sta_id);
2578     + wcn36xx_dbg(WCN36XX_DBG_HAL,
2579     + "delete station indication %pM index %d reason %d\n",
2580     + rsp->addr2, rsp->sta_id, rsp->reason_code);
2581    
2582     - list_for_each_entry(tmp, &wcn->vif_list, list) {
2583     + list_for_each_entry(vif_priv, &wcn->vif_list, list) {
2584     rcu_read_lock();
2585     - sta = ieee80211_find_sta(wcn36xx_priv_to_vif(tmp), rsp->addr2);
2586     - if (sta)
2587     - ieee80211_report_low_ack(sta, 0);
2588     + vif = wcn36xx_priv_to_vif(vif_priv);
2589     +
2590     + if (vif->type == NL80211_IFTYPE_STATION) {
2591     + /* We could call ieee80211_find_sta too, but checking
2592     + * bss_conf is clearer.
2593     + */
2594     + bss_conf = &vif->bss_conf;
2595     + if (vif_priv->sta_assoc &&
2596     + !memcmp(bss_conf->bssid, rsp->addr2, ETH_ALEN)) {
2597     + found = true;
2598     + wcn36xx_dbg(WCN36XX_DBG_HAL,
2599     + "connection loss bss_index %d\n",
2600     + vif_priv->bss_index);
2601     + ieee80211_connection_loss(vif);
2602     + }
2603     + } else {
2604     + sta = ieee80211_find_sta(vif, rsp->addr2);
2605     + if (sta) {
2606     + found = true;
2607     + ieee80211_report_low_ack(sta, 0);
2608     + }
2609     + }
2610     +
2611     rcu_read_unlock();
2612     - if (sta)
2613     + if (found)
2614     return 0;
2615     }
2616    
2617     - wcn36xx_warn("STA with addr %pM and index %d not found\n",
2618     - rsp->addr2,
2619     - rsp->sta_id);
2620     + wcn36xx_warn("BSS or STA with addr %pM not found\n", rsp->addr2);
2621     return -ENOENT;
2622     }
2623    
2624     diff --git a/drivers/net/wireless/broadcom/b43/phy_g.c b/drivers/net/wireless/broadcom/b43/phy_g.c
2625     index 822dcaa8ace63..35ff139b1496e 100644
2626     --- a/drivers/net/wireless/broadcom/b43/phy_g.c
2627     +++ b/drivers/net/wireless/broadcom/b43/phy_g.c
2628     @@ -2310,7 +2310,7 @@ static u8 b43_gphy_aci_scan(struct b43_wldev *dev)
2629     b43_phy_mask(dev, B43_PHY_G_CRS, 0x7FFF);
2630     b43_set_all_gains(dev, 3, 8, 1);
2631    
2632     - start = (channel - 5 > 0) ? channel - 5 : 1;
2633     + start = (channel > 5) ? channel - 5 : 1;
2634     end = (channel + 5 < 14) ? channel + 5 : 13;
2635    
2636     for (i = start; i <= end; i++) {
2637     diff --git a/drivers/net/wireless/broadcom/b43legacy/radio.c b/drivers/net/wireless/broadcom/b43legacy/radio.c
2638     index 9501420340a91..5b1e8890305c1 100644
2639     --- a/drivers/net/wireless/broadcom/b43legacy/radio.c
2640     +++ b/drivers/net/wireless/broadcom/b43legacy/radio.c
2641     @@ -299,7 +299,7 @@ u8 b43legacy_radio_aci_scan(struct b43legacy_wldev *dev)
2642     & 0x7FFF);
2643     b43legacy_set_all_gains(dev, 3, 8, 1);
2644    
2645     - start = (channel - 5 > 0) ? channel - 5 : 1;
2646     + start = (channel > 5) ? channel - 5 : 1;
2647     end = (channel + 5 < 14) ? channel + 5 : 13;
2648    
2649     for (i = start; i <= end; i++) {
2650     diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/utils.c b/drivers/net/wireless/intel/iwlwifi/mvm/utils.c
2651     index ff5ce1ed03c42..4746f4b096c56 100644
2652     --- a/drivers/net/wireless/intel/iwlwifi/mvm/utils.c
2653     +++ b/drivers/net/wireless/intel/iwlwifi/mvm/utils.c
2654     @@ -913,6 +913,9 @@ bool iwl_mvm_rx_diversity_allowed(struct iwl_mvm *mvm)
2655    
2656     lockdep_assert_held(&mvm->mutex);
2657    
2658     + if (iwlmvm_mod_params.power_scheme != IWL_POWER_SCHEME_CAM)
2659     + return false;
2660     +
2661     if (num_of_ant(iwl_mvm_get_valid_rx_ant(mvm)) == 1)
2662     return false;
2663    
2664     diff --git a/drivers/net/wireless/marvell/libertas/if_usb.c b/drivers/net/wireless/marvell/libertas/if_usb.c
2665     index 9d147b11ee516..9f19fd5c18d07 100644
2666     --- a/drivers/net/wireless/marvell/libertas/if_usb.c
2667     +++ b/drivers/net/wireless/marvell/libertas/if_usb.c
2668     @@ -292,6 +292,7 @@ err_add_card:
2669     if_usb_reset_device(cardp);
2670     dealloc:
2671     if_usb_free(cardp);
2672     + kfree(cardp);
2673    
2674     error:
2675     return r;
2676     @@ -318,6 +319,7 @@ static void if_usb_disconnect(struct usb_interface *intf)
2677    
2678     /* Unlink and free urb */
2679     if_usb_free(cardp);
2680     + kfree(cardp);
2681    
2682     usb_set_intfdata(intf, NULL);
2683     usb_put_dev(interface_to_usbdev(intf));
2684     diff --git a/drivers/net/wireless/marvell/libertas_tf/if_usb.c b/drivers/net/wireless/marvell/libertas_tf/if_usb.c
2685     index 4b539209999b4..aaba324dbc39b 100644
2686     --- a/drivers/net/wireless/marvell/libertas_tf/if_usb.c
2687     +++ b/drivers/net/wireless/marvell/libertas_tf/if_usb.c
2688     @@ -234,6 +234,7 @@ static int if_usb_probe(struct usb_interface *intf,
2689    
2690     dealloc:
2691     if_usb_free(cardp);
2692     + kfree(cardp);
2693     error:
2694     lbtf_deb_leave(LBTF_DEB_MAIN);
2695     return -ENOMEM;
2696     @@ -258,6 +259,7 @@ static void if_usb_disconnect(struct usb_interface *intf)
2697    
2698     /* Unlink and free urb */
2699     if_usb_free(cardp);
2700     + kfree(cardp);
2701    
2702     usb_set_intfdata(intf, NULL);
2703     usb_put_dev(interface_to_usbdev(intf));
2704     diff --git a/drivers/net/wireless/marvell/mwifiex/11n.c b/drivers/net/wireless/marvell/mwifiex/11n.c
2705     index c174e79e6df2b..b70eac7d2dd79 100644
2706     --- a/drivers/net/wireless/marvell/mwifiex/11n.c
2707     +++ b/drivers/net/wireless/marvell/mwifiex/11n.c
2708     @@ -630,14 +630,15 @@ int mwifiex_send_delba(struct mwifiex_private *priv, int tid, u8 *peer_mac,
2709     uint16_t del_ba_param_set;
2710    
2711     memset(&delba, 0, sizeof(delba));
2712     - delba.del_ba_param_set = cpu_to_le16(tid << DELBA_TID_POS);
2713    
2714     - del_ba_param_set = le16_to_cpu(delba.del_ba_param_set);
2715     + del_ba_param_set = tid << DELBA_TID_POS;
2716     +
2717     if (initiator)
2718     del_ba_param_set |= IEEE80211_DELBA_PARAM_INITIATOR_MASK;
2719     else
2720     del_ba_param_set &= ~IEEE80211_DELBA_PARAM_INITIATOR_MASK;
2721    
2722     + delba.del_ba_param_set = cpu_to_le16(del_ba_param_set);
2723     memcpy(&delba.peer_mac_addr, peer_mac, ETH_ALEN);
2724    
2725     /* We don't wait for the response of this command */
2726     diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c
2727     index d0743bd25ba95..aaabd8454794e 100644
2728     --- a/drivers/net/wireless/marvell/mwifiex/pcie.c
2729     +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c
2730     @@ -1265,6 +1265,14 @@ mwifiex_pcie_send_data(struct mwifiex_adapter *adapter, struct sk_buff *skb,
2731     ret = -1;
2732     goto done_unmap;
2733     }
2734     +
2735     + /* The firmware (latest version 15.68.19.p21) of the 88W8897 PCIe+USB card
2736     + * seems to crash randomly after setting the TX ring write pointer when
2737     + * ASPM powersaving is enabled. A workaround seems to be keeping the bus
2738     + * busy by reading a random register afterwards.
2739     + */
2740     + mwifiex_read_reg(adapter, PCI_VENDOR_ID, &rx_val);
2741     +
2742     if ((mwifiex_pcie_txbd_not_full(card)) &&
2743     tx_param->next_pkt_len) {
2744     /* have more packets and TxBD still can hold more */
2745     diff --git a/drivers/net/wireless/marvell/mwifiex/usb.c b/drivers/net/wireless/marvell/mwifiex/usb.c
2746     index 09185a1f7379c..2c4225e57c396 100644
2747     --- a/drivers/net/wireless/marvell/mwifiex/usb.c
2748     +++ b/drivers/net/wireless/marvell/mwifiex/usb.c
2749     @@ -473,6 +473,22 @@ static int mwifiex_usb_probe(struct usb_interface *intf,
2750     }
2751     }
2752    
2753     + switch (card->usb_boot_state) {
2754     + case USB8XXX_FW_DNLD:
2755     + /* Reject broken descriptors. */
2756     + if (!card->rx_cmd_ep || !card->tx_cmd_ep)
2757     + return -ENODEV;
2758     + if (card->bulk_out_maxpktsize == 0)
2759     + return -ENODEV;
2760     + break;
2761     + case USB8XXX_FW_READY:
2762     + /* Assume the driver can handle missing endpoints for now. */
2763     + break;
2764     + default:
2765     + WARN_ON(1);
2766     + return -ENODEV;
2767     + }
2768     +
2769     usb_set_intfdata(intf, card);
2770    
2771     ret = mwifiex_add_card(card, &add_remove_card_sem, &usb_ops,
2772     diff --git a/drivers/net/wireless/marvell/mwl8k.c b/drivers/net/wireless/marvell/mwl8k.c
2773     index 66cd38d4f199b..c6f008796ff16 100644
2774     --- a/drivers/net/wireless/marvell/mwl8k.c
2775     +++ b/drivers/net/wireless/marvell/mwl8k.c
2776     @@ -5783,8 +5783,8 @@ static void mwl8k_fw_state_machine(const struct firmware *fw, void *context)
2777     fail:
2778     priv->fw_state = FW_STATE_ERROR;
2779     complete(&priv->firmware_loading_complete);
2780     - device_release_driver(&priv->pdev->dev);
2781     mwl8k_release_firmware(priv);
2782     + device_release_driver(&priv->pdev->dev);
2783     }
2784    
2785     #define MAX_RESTART_ATTEMPTS 1
2786     diff --git a/drivers/net/wireless/realtek/rtl818x/rtl8187/rtl8225.c b/drivers/net/wireless/realtek/rtl818x/rtl8187/rtl8225.c
2787     index e6668ffb77e65..49fb8bba3d91a 100644
2788     --- a/drivers/net/wireless/realtek/rtl818x/rtl8187/rtl8225.c
2789     +++ b/drivers/net/wireless/realtek/rtl818x/rtl8187/rtl8225.c
2790     @@ -31,7 +31,7 @@ u8 rtl818x_ioread8_idx(struct rtl8187_priv *priv,
2791     usb_control_msg(priv->udev, usb_rcvctrlpipe(priv->udev, 0),
2792     RTL8187_REQ_GET_REG, RTL8187_REQT_READ,
2793     (unsigned long)addr, idx & 0x03,
2794     - &priv->io_dmabuf->bits8, sizeof(val), HZ / 2);
2795     + &priv->io_dmabuf->bits8, sizeof(val), 500);
2796    
2797     val = priv->io_dmabuf->bits8;
2798     mutex_unlock(&priv->io_mutex);
2799     @@ -48,7 +48,7 @@ u16 rtl818x_ioread16_idx(struct rtl8187_priv *priv,
2800     usb_control_msg(priv->udev, usb_rcvctrlpipe(priv->udev, 0),
2801     RTL8187_REQ_GET_REG, RTL8187_REQT_READ,
2802     (unsigned long)addr, idx & 0x03,
2803     - &priv->io_dmabuf->bits16, sizeof(val), HZ / 2);
2804     + &priv->io_dmabuf->bits16, sizeof(val), 500);
2805    
2806     val = priv->io_dmabuf->bits16;
2807     mutex_unlock(&priv->io_mutex);
2808     @@ -65,7 +65,7 @@ u32 rtl818x_ioread32_idx(struct rtl8187_priv *priv,
2809     usb_control_msg(priv->udev, usb_rcvctrlpipe(priv->udev, 0),
2810     RTL8187_REQ_GET_REG, RTL8187_REQT_READ,
2811     (unsigned long)addr, idx & 0x03,
2812     - &priv->io_dmabuf->bits32, sizeof(val), HZ / 2);
2813     + &priv->io_dmabuf->bits32, sizeof(val), 500);
2814    
2815     val = priv->io_dmabuf->bits32;
2816     mutex_unlock(&priv->io_mutex);
2817     @@ -82,7 +82,7 @@ void rtl818x_iowrite8_idx(struct rtl8187_priv *priv,
2818     usb_control_msg(priv->udev, usb_sndctrlpipe(priv->udev, 0),
2819     RTL8187_REQ_SET_REG, RTL8187_REQT_WRITE,
2820     (unsigned long)addr, idx & 0x03,
2821     - &priv->io_dmabuf->bits8, sizeof(val), HZ / 2);
2822     + &priv->io_dmabuf->bits8, sizeof(val), 500);
2823    
2824     mutex_unlock(&priv->io_mutex);
2825     }
2826     @@ -96,7 +96,7 @@ void rtl818x_iowrite16_idx(struct rtl8187_priv *priv,
2827     usb_control_msg(priv->udev, usb_sndctrlpipe(priv->udev, 0),
2828     RTL8187_REQ_SET_REG, RTL8187_REQT_WRITE,
2829     (unsigned long)addr, idx & 0x03,
2830     - &priv->io_dmabuf->bits16, sizeof(val), HZ / 2);
2831     + &priv->io_dmabuf->bits16, sizeof(val), 500);
2832    
2833     mutex_unlock(&priv->io_mutex);
2834     }
2835     @@ -110,7 +110,7 @@ void rtl818x_iowrite32_idx(struct rtl8187_priv *priv,
2836     usb_control_msg(priv->udev, usb_sndctrlpipe(priv->udev, 0),
2837     RTL8187_REQ_SET_REG, RTL8187_REQT_WRITE,
2838     (unsigned long)addr, idx & 0x03,
2839     - &priv->io_dmabuf->bits32, sizeof(val), HZ / 2);
2840     + &priv->io_dmabuf->bits32, sizeof(val), 500);
2841    
2842     mutex_unlock(&priv->io_mutex);
2843     }
2844     @@ -186,7 +186,7 @@ static void rtl8225_write_8051(struct ieee80211_hw *dev, u8 addr, __le16 data)
2845     usb_control_msg(priv->udev, usb_sndctrlpipe(priv->udev, 0),
2846     RTL8187_REQ_SET_REG, RTL8187_REQT_WRITE,
2847     addr, 0x8225, &priv->io_dmabuf->bits16, sizeof(data),
2848     - HZ / 2);
2849     + 500);
2850    
2851     mutex_unlock(&priv->io_mutex);
2852    
2853     diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
2854     index ceaf6b30d683d..0971c09363cbf 100644
2855     --- a/drivers/net/xen-netfront.c
2856     +++ b/drivers/net/xen-netfront.c
2857     @@ -1460,6 +1460,10 @@ static int netfront_resume(struct xenbus_device *dev)
2858    
2859     dev_dbg(&dev->dev, "%s\n", dev->nodename);
2860    
2861     + netif_tx_lock_bh(info->netdev);
2862     + netif_device_detach(info->netdev);
2863     + netif_tx_unlock_bh(info->netdev);
2864     +
2865     xennet_disconnect_backend(info);
2866     return 0;
2867     }
2868     @@ -2020,6 +2024,10 @@ static int xennet_connect(struct net_device *dev)
2869     * domain a kick because we've probably just requeued some
2870     * packets.
2871     */
2872     + netif_tx_lock_bh(np->netdev);
2873     + netif_device_attach(np->netdev);
2874     + netif_tx_unlock_bh(np->netdev);
2875     +
2876     netif_carrier_on(np->netdev);
2877     for (j = 0; j < num_queues; ++j) {
2878     queue = &np->queues[j];
2879     diff --git a/drivers/nfc/pn533/pn533.c b/drivers/nfc/pn533/pn533.c
2880     index 6c495664d2cb7..806309ee41657 100644
2881     --- a/drivers/nfc/pn533/pn533.c
2882     +++ b/drivers/nfc/pn533/pn533.c
2883     @@ -2075,7 +2075,7 @@ static int pn533_fill_fragment_skbs(struct pn533 *dev, struct sk_buff *skb)
2884     frag = pn533_alloc_skb(dev, frag_size);
2885     if (!frag) {
2886     skb_queue_purge(&dev->fragment_skb);
2887     - break;
2888     + return -ENOMEM;
2889     }
2890    
2891     if (!dev->tgt_mode) {
2892     @@ -2145,7 +2145,7 @@ static int pn533_transceive(struct nfc_dev *nfc_dev,
2893     /* jumbo frame ? */
2894     if (skb->len > PN533_CMD_DATAEXCH_DATA_MAXLEN) {
2895     rc = pn533_fill_fragment_skbs(dev, skb);
2896     - if (rc <= 0)
2897     + if (rc < 0)
2898     goto error;
2899    
2900     skb = skb_dequeue(&dev->fragment_skb);
2901     @@ -2217,7 +2217,7 @@ static int pn533_tm_send(struct nfc_dev *nfc_dev, struct sk_buff *skb)
2902     /* let's split in multiple chunks if size's too big */
2903     if (skb->len > PN533_CMD_DATAEXCH_DATA_MAXLEN) {
2904     rc = pn533_fill_fragment_skbs(dev, skb);
2905     - if (rc <= 0)
2906     + if (rc < 0)
2907     goto error;
2908    
2909     /* get the first skb */
2910     diff --git a/drivers/pci/host/pci-aardvark.c b/drivers/pci/host/pci-aardvark.c
2911     index 736d9f58438ec..08375e68f1c30 100644
2912     --- a/drivers/pci/host/pci-aardvark.c
2913     +++ b/drivers/pci/host/pci-aardvark.c
2914     @@ -110,6 +110,7 @@
2915     #define PCIE_MSI_STATUS_REG (CONTROL_BASE_ADDR + 0x58)
2916     #define PCIE_MSI_MASK_REG (CONTROL_BASE_ADDR + 0x5C)
2917     #define PCIE_MSI_PAYLOAD_REG (CONTROL_BASE_ADDR + 0x9C)
2918     +#define PCIE_MSI_DATA_MASK GENMASK(15, 0)
2919    
2920     /* PCIe window configuration */
2921     #define OB_WIN_BASE_ADDR 0x4c00
2922     @@ -404,7 +405,7 @@ static void advk_pcie_check_pio_status(struct advk_pcie *pcie)
2923     else
2924     str_posted = "Posted";
2925    
2926     - dev_err(dev, "%s PIO Response Status: %s, %#x @ %#x\n",
2927     + dev_dbg(dev, "%s PIO Response Status: %s, %#x @ %#x\n",
2928     str_posted, strcomp_status, reg, advk_readl(pcie, PIO_ADDR_LS));
2929     }
2930    
2931     @@ -785,8 +786,12 @@ static void advk_pcie_handle_msi(struct advk_pcie *pcie)
2932     if (!(BIT(msi_idx) & msi_status))
2933     continue;
2934    
2935     + /*
2936     + * msi_idx contains bits [4:0] of the msi_data and msi_data
2937     + * contains 16bit MSI interrupt number
2938     + */
2939     advk_writel(pcie, BIT(msi_idx), PCIE_MSI_STATUS_REG);
2940     - msi_data = advk_readl(pcie, PCIE_MSI_PAYLOAD_REG) & 0xFF;
2941     + msi_data = advk_readl(pcie, PCIE_MSI_PAYLOAD_REG) & PCIE_MSI_DATA_MASK;
2942     generic_handle_irq(msi_data);
2943     }
2944    
2945     diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
2946     index 97c3515e3b543..be2f1402c84c2 100644
2947     --- a/drivers/pci/msi.c
2948     +++ b/drivers/pci/msi.c
2949     @@ -391,18 +391,6 @@ static void free_msi_irqs(struct pci_dev *dev)
2950     for (i = 0; i < entry->nvec_used; i++)
2951     BUG_ON(irq_has_action(entry->irq + i));
2952    
2953     - pci_msi_teardown_msi_irqs(dev);
2954     -
2955     - list_for_each_entry_safe(entry, tmp, msi_list, list) {
2956     - if (entry->msi_attrib.is_msix) {
2957     - if (list_is_last(&entry->list, msi_list))
2958     - iounmap(entry->mask_base);
2959     - }
2960     -
2961     - list_del(&entry->list);
2962     - kfree(entry);
2963     - }
2964     -
2965     if (dev->msi_irq_groups) {
2966     sysfs_remove_groups(&dev->dev.kobj, dev->msi_irq_groups);
2967     msi_attrs = dev->msi_irq_groups[0]->attrs;
2968     @@ -418,6 +406,18 @@ static void free_msi_irqs(struct pci_dev *dev)
2969     kfree(dev->msi_irq_groups);
2970     dev->msi_irq_groups = NULL;
2971     }
2972     +
2973     + pci_msi_teardown_msi_irqs(dev);
2974     +
2975     + list_for_each_entry_safe(entry, tmp, msi_list, list) {
2976     + if (entry->msi_attrib.is_msix) {
2977     + if (list_is_last(&entry->list, msi_list))
2978     + iounmap(entry->mask_base);
2979     + }
2980     +
2981     + list_del(&entry->list);
2982     + free_msi_entry(entry);
2983     + }
2984     }
2985    
2986     static void pci_intx_for_msi(struct pci_dev *dev, int enable)
2987     diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
2988     index 66e5bb7bfb67b..3ff2971102b61 100644
2989     --- a/drivers/pci/quirks.c
2990     +++ b/drivers/pci/quirks.c
2991     @@ -3370,6 +3370,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0032, quirk_no_bus_reset);
2992     DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x003c, quirk_no_bus_reset);
2993     DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0033, quirk_no_bus_reset);
2994     DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0034, quirk_no_bus_reset);
2995     +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x003e, quirk_no_bus_reset);
2996    
2997     /*
2998     * Some TI KeyStone C667X devices do not support bus/hot reset. The PCIESS
2999     diff --git a/drivers/platform/x86/hp_accel.c b/drivers/platform/x86/hp_accel.c
3000     index 403d966223ee9..76cb361b623cb 100644
3001     --- a/drivers/platform/x86/hp_accel.c
3002     +++ b/drivers/platform/x86/hp_accel.c
3003     @@ -382,9 +382,11 @@ static int lis3lv02d_add(struct acpi_device *device)
3004     INIT_WORK(&hpled_led.work, delayed_set_status_worker);
3005     ret = led_classdev_register(NULL, &hpled_led.led_classdev);
3006     if (ret) {
3007     + i8042_remove_filter(hp_accel_i8042_filter);
3008     lis3lv02d_joystick_disable(&lis3_dev);
3009     lis3lv02d_poweroff(&lis3_dev);
3010     flush_work(&hpled_led.work);
3011     + lis3lv02d_remove_fs(&lis3_dev);
3012     return ret;
3013     }
3014    
3015     diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
3016     index 84bfecded84d9..9c929b5ce58e2 100644
3017     --- a/drivers/platform/x86/thinkpad_acpi.c
3018     +++ b/drivers/platform/x86/thinkpad_acpi.c
3019     @@ -8884,7 +8884,7 @@ static int fan_write_cmd_level(const char *cmd, int *rc)
3020    
3021     if (strlencmp(cmd, "level auto") == 0)
3022     level = TP_EC_FAN_AUTO;
3023     - else if ((strlencmp(cmd, "level disengaged") == 0) |
3024     + else if ((strlencmp(cmd, "level disengaged") == 0) ||
3025     (strlencmp(cmd, "level full-speed") == 0))
3026     level = TP_EC_FAN_FULLSPEED;
3027     else if (sscanf(cmd, "level %d", &level) != 1)
3028     diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c
3029     index 00d82e8443bdd..da06284c455dc 100644
3030     --- a/drivers/platform/x86/wmi.c
3031     +++ b/drivers/platform/x86/wmi.c
3032     @@ -289,7 +289,14 @@ struct acpi_buffer *out)
3033     * the WQxx method failed - we should disable collection anyway.
3034     */
3035     if ((block->flags & ACPI_WMI_EXPENSIVE) && ACPI_SUCCESS(wc_status)) {
3036     - status = acpi_execute_simple_method(handle, wc_method, 0);
3037     + /*
3038     + * Ignore whether this WCxx call succeeds or not since
3039     + * the previously executed WQxx method call might have
3040     + * succeeded, and returning the failing status code
3041     + * of this call would throw away the result of the WQxx
3042     + * call, potentially leaking memory.
3043     + */
3044     + acpi_execute_simple_method(handle, wc_method, 0);
3045     }
3046    
3047     return status;
3048     diff --git a/drivers/power/supply/bq27xxx_battery_i2c.c b/drivers/power/supply/bq27xxx_battery_i2c.c
3049     index 5c5c3a6f99234..91fabe9e6efd0 100644
3050     --- a/drivers/power/supply/bq27xxx_battery_i2c.c
3051     +++ b/drivers/power/supply/bq27xxx_battery_i2c.c
3052     @@ -115,7 +115,8 @@ static int bq27xxx_battery_i2c_probe(struct i2c_client *client,
3053     dev_err(&client->dev,
3054     "Unable to register IRQ %d error %d\n",
3055     client->irq, ret);
3056     - return ret;
3057     + bq27xxx_battery_teardown(di);
3058     + goto err_failed;
3059     }
3060     }
3061    
3062     diff --git a/drivers/power/supply/max17042_battery.c b/drivers/power/supply/max17042_battery.c
3063     index f18d845b3b92d..01ca03c809d05 100644
3064     --- a/drivers/power/supply/max17042_battery.c
3065     +++ b/drivers/power/supply/max17042_battery.c
3066     @@ -246,7 +246,10 @@ static int max17042_get_property(struct power_supply *psy,
3067     val->intval = data * 625 / 8;
3068     break;
3069     case POWER_SUPPLY_PROP_CAPACITY:
3070     - ret = regmap_read(map, MAX17042_RepSOC, &data);
3071     + if (chip->pdata->enable_current_sense)
3072     + ret = regmap_read(map, MAX17042_RepSOC, &data);
3073     + else
3074     + ret = regmap_read(map, MAX17042_VFSOC, &data);
3075     if (ret < 0)
3076     return ret;
3077    
3078     @@ -752,7 +755,8 @@ static void max17042_set_soc_threshold(struct max17042_chip *chip, u16 off)
3079     regmap_read(map, MAX17042_RepSOC, &soc);
3080     soc >>= 8;
3081     soc_tr = (soc + off) << 8;
3082     - soc_tr |= (soc - off);
3083     + if (off < soc)
3084     + soc_tr |= soc - off;
3085     regmap_write(map, MAX17042_SALRT_Th, soc_tr);
3086     }
3087    
3088     diff --git a/drivers/power/supply/rt5033_battery.c b/drivers/power/supply/rt5033_battery.c
3089     index 9310b85f3405e..7eec7014086d8 100644
3090     --- a/drivers/power/supply/rt5033_battery.c
3091     +++ b/drivers/power/supply/rt5033_battery.c
3092     @@ -63,7 +63,7 @@ static int rt5033_battery_get_watt_prop(struct i2c_client *client,
3093     regmap_read(battery->regmap, regh, &msb);
3094     regmap_read(battery->regmap, regl, &lsb);
3095    
3096     - ret = ((msb << 4) + (lsb >> 4)) * 1250 / 1000;
3097     + ret = ((msb << 4) + (lsb >> 4)) * 1250;
3098    
3099     return ret;
3100     }
3101     diff --git a/drivers/regulator/s5m8767.c b/drivers/regulator/s5m8767.c
3102     index 27343e1c43ef8..45fad246c27e3 100644
3103     --- a/drivers/regulator/s5m8767.c
3104     +++ b/drivers/regulator/s5m8767.c
3105     @@ -845,18 +845,15 @@ static int s5m8767_pmic_probe(struct platform_device *pdev)
3106     /* DS4 GPIO */
3107     gpio_direction_output(pdata->buck_ds[2], 0x0);
3108    
3109     - if (pdata->buck2_gpiodvs || pdata->buck3_gpiodvs ||
3110     - pdata->buck4_gpiodvs) {
3111     - regmap_update_bits(s5m8767->iodev->regmap_pmic,
3112     - S5M8767_REG_BUCK2CTRL, 1 << 1,
3113     - (pdata->buck2_gpiodvs) ? (1 << 1) : (0 << 1));
3114     - regmap_update_bits(s5m8767->iodev->regmap_pmic,
3115     - S5M8767_REG_BUCK3CTRL, 1 << 1,
3116     - (pdata->buck3_gpiodvs) ? (1 << 1) : (0 << 1));
3117     - regmap_update_bits(s5m8767->iodev->regmap_pmic,
3118     - S5M8767_REG_BUCK4CTRL, 1 << 1,
3119     - (pdata->buck4_gpiodvs) ? (1 << 1) : (0 << 1));
3120     - }
3121     + regmap_update_bits(s5m8767->iodev->regmap_pmic,
3122     + S5M8767_REG_BUCK2CTRL, 1 << 1,
3123     + (pdata->buck2_gpiodvs) ? (1 << 1) : (0 << 1));
3124     + regmap_update_bits(s5m8767->iodev->regmap_pmic,
3125     + S5M8767_REG_BUCK3CTRL, 1 << 1,
3126     + (pdata->buck3_gpiodvs) ? (1 << 1) : (0 << 1));
3127     + regmap_update_bits(s5m8767->iodev->regmap_pmic,
3128     + S5M8767_REG_BUCK4CTRL, 1 << 1,
3129     + (pdata->buck4_gpiodvs) ? (1 << 1) : (0 << 1));
3130    
3131     /* Initialize GPIO DVS registers */
3132     for (i = 0; i < 8; i++) {
3133     diff --git a/drivers/scsi/advansys.c b/drivers/scsi/advansys.c
3134     index 24e57e770432b..6efd17692a55a 100644
3135     --- a/drivers/scsi/advansys.c
3136     +++ b/drivers/scsi/advansys.c
3137     @@ -3370,8 +3370,8 @@ static void asc_prt_adv_board_info(struct seq_file *m, struct Scsi_Host *shost)
3138     shost->host_no);
3139    
3140     seq_printf(m,
3141     - " iop_base 0x%lx, cable_detect: %X, err_code %u\n",
3142     - (unsigned long)v->iop_base,
3143     + " iop_base 0x%p, cable_detect: %X, err_code %u\n",
3144     + v->iop_base,
3145     AdvReadWordRegister(iop_base,IOPW_SCSI_CFG1) & CABLE_DETECT,
3146     v->err_code);
3147    
3148     diff --git a/drivers/scsi/csiostor/csio_lnode.c b/drivers/scsi/csiostor/csio_lnode.c
3149     index 957767d383610..d1df694d9ed00 100644
3150     --- a/drivers/scsi/csiostor/csio_lnode.c
3151     +++ b/drivers/scsi/csiostor/csio_lnode.c
3152     @@ -611,7 +611,7 @@ csio_ln_vnp_read_cbfn(struct csio_hw *hw, struct csio_mb *mbp)
3153     struct fc_els_csp *csp;
3154     struct fc_els_cssp *clsp;
3155     enum fw_retval retval;
3156     - __be32 nport_id;
3157     + __be32 nport_id = 0;
3158    
3159     retval = FW_CMD_RETVAL_G(ntohl(rsp->alloc_to_len16));
3160     if (retval != FW_SUCCESS) {
3161     diff --git a/drivers/scsi/dc395x.c b/drivers/scsi/dc395x.c
3162     index 830b2d2dcf206..8490d0ff04ca7 100644
3163     --- a/drivers/scsi/dc395x.c
3164     +++ b/drivers/scsi/dc395x.c
3165     @@ -4809,6 +4809,7 @@ static int dc395x_init_one(struct pci_dev *dev, const struct pci_device_id *id)
3166     /* initialise the adapter and everything we need */
3167     if (adapter_init(acb, io_port_base, io_port_len, irq)) {
3168     dprintkl(KERN_INFO, "adapter init failed\n");
3169     + acb = NULL;
3170     goto fail;
3171     }
3172    
3173     diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c
3174     index 0e7915ecb85a5..5c847ef459cd1 100644
3175     --- a/drivers/scsi/lpfc/lpfc_sli.c
3176     +++ b/drivers/scsi/lpfc/lpfc_sli.c
3177     @@ -17274,6 +17274,7 @@ lpfc_drain_txq(struct lpfc_hba *phba)
3178     fail_msg,
3179     piocbq->iotag, piocbq->sli4_xritag);
3180     list_add_tail(&piocbq->list, &completions);
3181     + fail_msg = NULL;
3182     }
3183     spin_unlock_irqrestore(&pring->ring_lock, iflags);
3184     }
3185     diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h
3186     index 6ca00813c71f0..4a1a16e6a8204 100644
3187     --- a/drivers/scsi/qla2xxx/qla_gbl.h
3188     +++ b/drivers/scsi/qla2xxx/qla_gbl.h
3189     @@ -115,7 +115,6 @@ extern int ql2xasynctmfenable;
3190     extern int ql2xgffidenable;
3191     extern int ql2xenabledif;
3192     extern int ql2xenablehba_err_chk;
3193     -extern int ql2xtargetreset;
3194     extern int ql2xdontresethba;
3195     extern uint64_t ql2xmaxlun;
3196     extern int ql2xmdcapmask;
3197     @@ -655,7 +654,6 @@ extern void qlafx00_abort_iocb(srb_t *, struct abort_iocb_entry_fx00 *);
3198     extern void qlafx00_fxdisc_iocb(srb_t *, struct fxdisc_entry_fx00 *);
3199     extern void qlafx00_timer_routine(scsi_qla_host_t *);
3200     extern int qlafx00_rescan_isp(scsi_qla_host_t *);
3201     -extern int qlafx00_loop_reset(scsi_qla_host_t *vha);
3202    
3203     /* qla82xx related functions */
3204    
3205     diff --git a/drivers/scsi/qla2xxx/qla_mr.c b/drivers/scsi/qla2xxx/qla_mr.c
3206     index 15dff7099955b..b72cc4b1287d9 100644
3207     --- a/drivers/scsi/qla2xxx/qla_mr.c
3208     +++ b/drivers/scsi/qla2xxx/qla_mr.c
3209     @@ -738,29 +738,6 @@ qlafx00_lun_reset(fc_port_t *fcport, uint64_t l, int tag)
3210     return qla2x00_async_tm_cmd(fcport, TCF_LUN_RESET, l, tag);
3211     }
3212    
3213     -int
3214     -qlafx00_loop_reset(scsi_qla_host_t *vha)
3215     -{
3216     - int ret;
3217     - struct fc_port *fcport;
3218     - struct qla_hw_data *ha = vha->hw;
3219     -
3220     - if (ql2xtargetreset) {
3221     - list_for_each_entry(fcport, &vha->vp_fcports, list) {
3222     - if (fcport->port_type != FCT_TARGET)
3223     - continue;
3224     -
3225     - ret = ha->isp_ops->target_reset(fcport, 0, 0);
3226     - if (ret != QLA_SUCCESS) {
3227     - ql_dbg(ql_dbg_taskm, vha, 0x803d,
3228     - "Bus Reset failed: Reset=%d "
3229     - "d_id=%x.\n", ret, fcport->d_id.b24);
3230     - }
3231     - }
3232     - }
3233     - return QLA_SUCCESS;
3234     -}
3235     -
3236     int
3237     qlafx00_iospace_config(struct qla_hw_data *ha)
3238     {
3239     diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
3240     index 65bbca715f57d..274b61ddee04a 100644
3241     --- a/drivers/scsi/qla2xxx/qla_os.c
3242     +++ b/drivers/scsi/qla2xxx/qla_os.c
3243     @@ -180,12 +180,6 @@ MODULE_PARM_DESC(ql2xdbwr,
3244     " 0 -- Regular doorbell.\n"
3245     " 1 -- CAMRAM doorbell (faster).\n");
3246    
3247     -int ql2xtargetreset = 1;
3248     -module_param(ql2xtargetreset, int, S_IRUGO);
3249     -MODULE_PARM_DESC(ql2xtargetreset,
3250     - "Enable target reset."
3251     - "Default is 1 - use hw defaults.");
3252     -
3253     int ql2xgffidenable;
3254     module_param(ql2xgffidenable, int, S_IRUGO);
3255     MODULE_PARM_DESC(ql2xgffidenable,
3256     @@ -1401,27 +1395,10 @@ int
3257     qla2x00_loop_reset(scsi_qla_host_t *vha)
3258     {
3259     int ret;
3260     - struct fc_port *fcport;
3261     struct qla_hw_data *ha = vha->hw;
3262    
3263     - if (IS_QLAFX00(ha)) {
3264     - return qlafx00_loop_reset(vha);
3265     - }
3266     -
3267     - if (ql2xtargetreset == 1 && ha->flags.enable_target_reset) {
3268     - list_for_each_entry(fcport, &vha->vp_fcports, list) {
3269     - if (fcport->port_type != FCT_TARGET)
3270     - continue;
3271     -
3272     - ret = ha->isp_ops->target_reset(fcport, 0, 0);
3273     - if (ret != QLA_SUCCESS) {
3274     - ql_dbg(ql_dbg_taskm, vha, 0x802c,
3275     - "Bus Reset failed: Reset=%d "
3276     - "d_id=%x.\n", ret, fcport->d_id.b24);
3277     - }
3278     - }
3279     - }
3280     -
3281     + if (IS_QLAFX00(ha))
3282     + return QLA_SUCCESS;
3283    
3284     if (ha->flags.enable_lip_full_login && !IS_CNA_CAPABLE(ha)) {
3285     atomic_set(&vha->loop_state, LOOP_DOWN);
3286     diff --git a/drivers/sh/maple/maple.c b/drivers/sh/maple/maple.c
3287     index bec81c2404f78..1682fa3671bc3 100644
3288     --- a/drivers/sh/maple/maple.c
3289     +++ b/drivers/sh/maple/maple.c
3290     @@ -835,8 +835,10 @@ static int __init maple_bus_init(void)
3291    
3292     maple_queue_cache = KMEM_CACHE(maple_buffer, SLAB_HWCACHE_ALIGN);
3293    
3294     - if (!maple_queue_cache)
3295     + if (!maple_queue_cache) {
3296     + retval = -ENOMEM;
3297     goto cleanup_bothirqs;
3298     + }
3299    
3300     INIT_LIST_HEAD(&maple_waitq);
3301     INIT_LIST_HEAD(&maple_sentq);
3302     @@ -849,6 +851,7 @@ static int __init maple_bus_init(void)
3303     if (!mdev[i]) {
3304     while (i-- > 0)
3305     maple_free_dev(mdev[i]);
3306     + retval = -ENOMEM;
3307     goto cleanup_cache;
3308     }
3309     baseunits[i] = mdev[i];
3310     diff --git a/drivers/soc/tegra/pmc.c b/drivers/soc/tegra/pmc.c
3311     index a12710c917a14..93da935130397 100644
3312     --- a/drivers/soc/tegra/pmc.c
3313     +++ b/drivers/soc/tegra/pmc.c
3314     @@ -384,7 +384,7 @@ static int tegra_powergate_power_up(struct tegra_powergate *pg,
3315    
3316     err = tegra_powergate_enable_clocks(pg);
3317     if (err)
3318     - goto disable_clks;
3319     + goto powergate_off;
3320    
3321     usleep_range(10, 20);
3322    
3323     @@ -396,7 +396,7 @@ static int tegra_powergate_power_up(struct tegra_powergate *pg,
3324    
3325     err = tegra_powergate_reset_deassert(pg);
3326     if (err)
3327     - goto powergate_off;
3328     + goto disable_clks;
3329    
3330     usleep_range(10, 20);
3331    
3332     diff --git a/drivers/spi/spi-bcm-qspi.c b/drivers/spi/spi-bcm-qspi.c
3333     index 5453910d8abc3..d521adf6ac245 100644
3334     --- a/drivers/spi/spi-bcm-qspi.c
3335     +++ b/drivers/spi/spi-bcm-qspi.c
3336     @@ -1266,7 +1266,7 @@ int bcm_qspi_probe(struct platform_device *pdev,
3337     &qspi->dev_ids[val]);
3338     if (ret < 0) {
3339     dev_err(&pdev->dev, "IRQ %s not found\n", name);
3340     - goto qspi_probe_err;
3341     + goto qspi_unprepare_err;
3342     }
3343    
3344     qspi->dev_ids[val].dev = qspi;
3345     @@ -1281,7 +1281,7 @@ int bcm_qspi_probe(struct platform_device *pdev,
3346     if (!num_ints) {
3347     dev_err(&pdev->dev, "no IRQs registered, cannot init driver\n");
3348     ret = -EINVAL;
3349     - goto qspi_probe_err;
3350     + goto qspi_unprepare_err;
3351     }
3352    
3353     /*
3354     @@ -1332,6 +1332,7 @@ int bcm_qspi_probe(struct platform_device *pdev,
3355    
3356     qspi_reg_err:
3357     bcm_qspi_hw_uninit(qspi);
3358     +qspi_unprepare_err:
3359     clk_disable_unprepare(qspi->clk);
3360     qspi_probe_err:
3361     kfree(qspi->dev_ids);
3362     diff --git a/drivers/spi/spi-pl022.c b/drivers/spi/spi-pl022.c
3363     index f7f7ba17b40e9..27cf77dfc6038 100644
3364     --- a/drivers/spi/spi-pl022.c
3365     +++ b/drivers/spi/spi-pl022.c
3366     @@ -1703,12 +1703,13 @@ static int verify_controller_parameters(struct pl022 *pl022,
3367     return -EINVAL;
3368     }
3369     } else {
3370     - if (chip_info->duplex != SSP_MICROWIRE_CHANNEL_FULL_DUPLEX)
3371     + if (chip_info->duplex != SSP_MICROWIRE_CHANNEL_FULL_DUPLEX) {
3372     dev_err(&pl022->adev->dev,
3373     "Microwire half duplex mode requested,"
3374     " but this is only available in the"
3375     " ST version of PL022\n");
3376     - return -EINVAL;
3377     + return -EINVAL;
3378     + }
3379     }
3380     }
3381     return 0;
3382     diff --git a/drivers/target/target_core_alua.c b/drivers/target/target_core_alua.c
3383     index ee5b29aed54bd..fa28fd89add6c 100644
3384     --- a/drivers/target/target_core_alua.c
3385     +++ b/drivers/target/target_core_alua.c
3386     @@ -1735,7 +1735,6 @@ int core_alua_set_tg_pt_gp_id(
3387     pr_err("Maximum ALUA alua_tg_pt_gps_count:"
3388     " 0x0000ffff reached\n");
3389     spin_unlock(&dev->t10_alua.tg_pt_gps_lock);
3390     - kmem_cache_free(t10_alua_tg_pt_gp_cache, tg_pt_gp);
3391     return -ENOSPC;
3392     }
3393     again:
3394     diff --git a/drivers/target/target_core_device.c b/drivers/target/target_core_device.c
3395     index c3d576ed6f135..d8c3c72da7464 100644
3396     --- a/drivers/target/target_core_device.c
3397     +++ b/drivers/target/target_core_device.c
3398     @@ -787,6 +787,8 @@ struct se_device *target_alloc_device(struct se_hba *hba, const char *name)
3399     INIT_LIST_HEAD(&dev->t10_alua.lba_map_list);
3400     spin_lock_init(&dev->t10_alua.lba_map_lock);
3401    
3402     + INIT_WORK(&dev->delayed_cmd_work, target_do_delayed_work);
3403     +
3404     dev->t10_wwn.t10_dev = dev;
3405     dev->t10_alua.t10_dev = dev;
3406    
3407     diff --git a/drivers/target/target_core_internal.h b/drivers/target/target_core_internal.h
3408     index be52838cc1a88..48a631ab449e9 100644
3409     --- a/drivers/target/target_core_internal.h
3410     +++ b/drivers/target/target_core_internal.h
3411     @@ -144,6 +144,7 @@ void transport_clear_lun_ref(struct se_lun *);
3412     void transport_send_task_abort(struct se_cmd *);
3413     sense_reason_t target_cmd_size_check(struct se_cmd *cmd, unsigned int size);
3414     void target_qf_do_work(struct work_struct *work);
3415     +void target_do_delayed_work(struct work_struct *work);
3416     bool target_check_wce(struct se_device *dev);
3417     bool target_check_fua(struct se_device *dev);
3418     void __target_execute_cmd(struct se_cmd *, bool);
3419     diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
3420     index 6afb65387be6c..0e9383fbdd4dc 100644
3421     --- a/drivers/target/target_core_transport.c
3422     +++ b/drivers/target/target_core_transport.c
3423     @@ -1883,32 +1883,35 @@ static bool target_handle_task_attr(struct se_cmd *cmd)
3424     */
3425     switch (cmd->sam_task_attr) {
3426     case TCM_HEAD_TAG:
3427     + atomic_inc_mb(&dev->non_ordered);
3428     pr_debug("Added HEAD_OF_QUEUE for CDB: 0x%02x\n",
3429     cmd->t_task_cdb[0]);
3430     return false;
3431     case TCM_ORDERED_TAG:
3432     - atomic_inc_mb(&dev->dev_ordered_sync);
3433     + atomic_inc_mb(&dev->delayed_cmd_count);
3434    
3435     pr_debug("Added ORDERED for CDB: 0x%02x to ordered list\n",
3436     cmd->t_task_cdb[0]);
3437     -
3438     - /*
3439     - * Execute an ORDERED command if no other older commands
3440     - * exist that need to be completed first.
3441     - */
3442     - if (!atomic_read(&dev->simple_cmds))
3443     - return false;
3444     break;
3445     default:
3446     /*
3447     * For SIMPLE and UNTAGGED Task Attribute commands
3448     */
3449     - atomic_inc_mb(&dev->simple_cmds);
3450     + atomic_inc_mb(&dev->non_ordered);
3451     +
3452     + if (atomic_read(&dev->delayed_cmd_count) == 0)
3453     + return false;
3454     break;
3455     }
3456    
3457     - if (atomic_read(&dev->dev_ordered_sync) == 0)
3458     - return false;
3459     + if (cmd->sam_task_attr != TCM_ORDERED_TAG) {
3460     + atomic_inc_mb(&dev->delayed_cmd_count);
3461     + /*
3462     + * We will account for this when we dequeue from the delayed
3463     + * list.
3464     + */
3465     + atomic_dec_mb(&dev->non_ordered);
3466     + }
3467    
3468     spin_lock(&dev->delayed_cmd_lock);
3469     list_add_tail(&cmd->se_delayed_node, &dev->delayed_cmd_list);
3470     @@ -1916,6 +1919,12 @@ static bool target_handle_task_attr(struct se_cmd *cmd)
3471    
3472     pr_debug("Added CDB: 0x%02x Task Attr: 0x%02x to delayed CMD listn",
3473     cmd->t_task_cdb[0], cmd->sam_task_attr);
3474     + /*
3475     + * We may have no non ordered cmds when this function started or we
3476     + * could have raced with the last simple/head cmd completing, so kick
3477     + * the delayed handler here.
3478     + */
3479     + schedule_work(&dev->delayed_cmd_work);
3480     return true;
3481     }
3482    
3483     @@ -1966,29 +1975,48 @@ EXPORT_SYMBOL(target_execute_cmd);
3484     * Process all commands up to the last received ORDERED task attribute which
3485     * requires another blocking boundary
3486     */
3487     -static void target_restart_delayed_cmds(struct se_device *dev)
3488     +void target_do_delayed_work(struct work_struct *work)
3489     {
3490     - for (;;) {
3491     + struct se_device *dev = container_of(work, struct se_device,
3492     + delayed_cmd_work);
3493     +
3494     + spin_lock(&dev->delayed_cmd_lock);
3495     + while (!dev->ordered_sync_in_progress) {
3496     struct se_cmd *cmd;
3497    
3498     - spin_lock(&dev->delayed_cmd_lock);
3499     - if (list_empty(&dev->delayed_cmd_list)) {
3500     - spin_unlock(&dev->delayed_cmd_lock);
3501     + if (list_empty(&dev->delayed_cmd_list))
3502     break;
3503     - }
3504    
3505     cmd = list_entry(dev->delayed_cmd_list.next,
3506     struct se_cmd, se_delayed_node);
3507     +
3508     + if (cmd->sam_task_attr == TCM_ORDERED_TAG) {
3509     + /*
3510     + * Check if we started with:
3511     + * [ordered] [simple] [ordered]
3512     + * and we are now at the last ordered so we have to wait
3513     + * for the simple cmd.
3514     + */
3515     + if (atomic_read(&dev->non_ordered) > 0)
3516     + break;
3517     +
3518     + dev->ordered_sync_in_progress = true;
3519     + }
3520     +
3521     list_del(&cmd->se_delayed_node);
3522     + atomic_dec_mb(&dev->delayed_cmd_count);
3523     spin_unlock(&dev->delayed_cmd_lock);
3524    
3525     + if (cmd->sam_task_attr != TCM_ORDERED_TAG)
3526     + atomic_inc_mb(&dev->non_ordered);
3527     +
3528     cmd->transport_state |= CMD_T_SENT;
3529    
3530     __target_execute_cmd(cmd, true);
3531    
3532     - if (cmd->sam_task_attr == TCM_ORDERED_TAG)
3533     - break;
3534     + spin_lock(&dev->delayed_cmd_lock);
3535     }
3536     + spin_unlock(&dev->delayed_cmd_lock);
3537     }
3538    
3539     /*
3540     @@ -2006,16 +2034,19 @@ static void transport_complete_task_attr(struct se_cmd *cmd)
3541     goto restart;
3542    
3543     if (cmd->sam_task_attr == TCM_SIMPLE_TAG) {
3544     - atomic_dec_mb(&dev->simple_cmds);
3545     + atomic_dec_mb(&dev->non_ordered);
3546     dev->dev_cur_ordered_id++;
3547     pr_debug("Incremented dev->dev_cur_ordered_id: %u for SIMPLE\n",
3548     dev->dev_cur_ordered_id);
3549     } else if (cmd->sam_task_attr == TCM_HEAD_TAG) {
3550     + atomic_dec_mb(&dev->non_ordered);
3551     dev->dev_cur_ordered_id++;
3552     pr_debug("Incremented dev_cur_ordered_id: %u for HEAD_OF_QUEUE\n",
3553     dev->dev_cur_ordered_id);
3554     } else if (cmd->sam_task_attr == TCM_ORDERED_TAG) {
3555     - atomic_dec_mb(&dev->dev_ordered_sync);
3556     + spin_lock(&dev->delayed_cmd_lock);
3557     + dev->ordered_sync_in_progress = false;
3558     + spin_unlock(&dev->delayed_cmd_lock);
3559    
3560     dev->dev_cur_ordered_id++;
3561     pr_debug("Incremented dev_cur_ordered_id: %u for ORDERED\n",
3562     @@ -2024,7 +2055,8 @@ static void transport_complete_task_attr(struct se_cmd *cmd)
3563     cmd->se_cmd_flags &= ~SCF_TASK_ATTR_SET;
3564    
3565     restart:
3566     - target_restart_delayed_cmds(dev);
3567     + if (atomic_read(&dev->delayed_cmd_count) > 0)
3568     + schedule_work(&dev->delayed_cmd_work);
3569     }
3570    
3571     static void transport_complete_qf(struct se_cmd *cmd)
3572     diff --git a/drivers/tty/serial/8250/8250_dw.c b/drivers/tty/serial/8250/8250_dw.c
3573     index 22d65a33059e1..aa9cc5e1c91cc 100644
3574     --- a/drivers/tty/serial/8250/8250_dw.c
3575     +++ b/drivers/tty/serial/8250/8250_dw.c
3576     @@ -637,7 +637,7 @@ static struct platform_driver dw8250_platform_driver = {
3577     .name = "dw-apb-uart",
3578     .pm = &dw8250_pm_ops,
3579     .of_match_table = dw8250_of_match,
3580     - .acpi_match_table = ACPI_PTR(dw8250_acpi_match),
3581     + .acpi_match_table = dw8250_acpi_match,
3582     },
3583     .probe = dw8250_probe,
3584     .remove = dw8250_remove,
3585     diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
3586     index 74a1a97a77b28..bbba2174d6e75 100644
3587     --- a/drivers/tty/serial/serial_core.c
3588     +++ b/drivers/tty/serial/serial_core.c
3589     @@ -209,7 +209,11 @@ static int uart_port_startup(struct tty_struct *tty, struct uart_state *state,
3590     if (retval == 0) {
3591     if (uart_console(uport) && uport->cons->cflag) {
3592     tty->termios.c_cflag = uport->cons->cflag;
3593     + tty->termios.c_ispeed = uport->cons->ispeed;
3594     + tty->termios.c_ospeed = uport->cons->ospeed;
3595     uport->cons->cflag = 0;
3596     + uport->cons->ispeed = 0;
3597     + uport->cons->ospeed = 0;
3598     }
3599     /*
3600     * Initialise the hardware port settings.
3601     @@ -277,8 +281,11 @@ static void uart_shutdown(struct tty_struct *tty, struct uart_state *state)
3602     /*
3603     * Turn off DTR and RTS early.
3604     */
3605     - if (uport && uart_console(uport) && tty)
3606     + if (uport && uart_console(uport) && tty) {
3607     uport->cons->cflag = tty->termios.c_cflag;
3608     + uport->cons->ispeed = tty->termios.c_ispeed;
3609     + uport->cons->ospeed = tty->termios.c_ospeed;
3610     + }
3611    
3612     if (!tty || C_HUPCL(tty))
3613     uart_clear_mctrl(uport, TIOCM_DTR | TIOCM_RTS);
3614     @@ -2059,8 +2066,11 @@ uart_set_options(struct uart_port *port, struct console *co,
3615     * Allow the setting of the UART parameters with a NULL console
3616     * too:
3617     */
3618     - if (co)
3619     + if (co) {
3620     co->cflag = termios.c_cflag;
3621     + co->ispeed = termios.c_ispeed;
3622     + co->ospeed = termios.c_ospeed;
3623     + }
3624    
3625     return 0;
3626     }
3627     @@ -2198,6 +2208,8 @@ int uart_resume_port(struct uart_driver *drv, struct uart_port *uport)
3628     */
3629     memset(&termios, 0, sizeof(struct ktermios));
3630     termios.c_cflag = uport->cons->cflag;
3631     + termios.c_ispeed = uport->cons->ispeed;
3632     + termios.c_ospeed = uport->cons->ospeed;
3633    
3634     /*
3635     * If that's unset, use the tty termios setting.
3636     diff --git a/drivers/tty/serial/xilinx_uartps.c b/drivers/tty/serial/xilinx_uartps.c
3637     index eb61a07fcbbc3..b92700fdfd512 100644
3638     --- a/drivers/tty/serial/xilinx_uartps.c
3639     +++ b/drivers/tty/serial/xilinx_uartps.c
3640     @@ -589,9 +589,10 @@ static void cdns_uart_start_tx(struct uart_port *port)
3641     if (uart_circ_empty(&port->state->xmit))
3642     return;
3643    
3644     + writel(CDNS_UART_IXR_TXEMPTY, port->membase + CDNS_UART_ISR);
3645     +
3646     cdns_uart_handle_tx(port);
3647    
3648     - writel(CDNS_UART_IXR_TXEMPTY, port->membase + CDNS_UART_ISR);
3649     /* Enable the TX Empty interrupt */
3650     writel(CDNS_UART_IXR_TXEMPTY, port->membase + CDNS_UART_IER);
3651     }
3652     diff --git a/drivers/tty/tty_buffer.c b/drivers/tty/tty_buffer.c
3653     index ca9c82ee6c35d..dfccc102c1ddd 100644
3654     --- a/drivers/tty/tty_buffer.c
3655     +++ b/drivers/tty/tty_buffer.c
3656     @@ -536,6 +536,9 @@ static void flush_to_ldisc(struct work_struct *work)
3657     if (!count)
3658     break;
3659     head->read += count;
3660     +
3661     + if (need_resched())
3662     + cond_resched();
3663     }
3664    
3665     mutex_unlock(&buf->lock);
3666     diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c
3667     index 6062a5d816a63..f4b13f0637ea3 100644
3668     --- a/drivers/usb/chipidea/core.c
3669     +++ b/drivers/usb/chipidea/core.c
3670     @@ -516,7 +516,7 @@ int hw_device_reset(struct ci_hdrc *ci)
3671     return 0;
3672     }
3673    
3674     -static irqreturn_t ci_irq(int irq, void *data)
3675     +static irqreturn_t ci_irq_handler(int irq, void *data)
3676     {
3677     struct ci_hdrc *ci = data;
3678     irqreturn_t ret = IRQ_NONE;
3679     @@ -569,6 +569,15 @@ static irqreturn_t ci_irq(int irq, void *data)
3680     return ret;
3681     }
3682    
3683     +static void ci_irq(struct ci_hdrc *ci)
3684     +{
3685     + unsigned long flags;
3686     +
3687     + local_irq_save(flags);
3688     + ci_irq_handler(ci->irq, ci);
3689     + local_irq_restore(flags);
3690     +}
3691     +
3692     static int ci_vbus_notifier(struct notifier_block *nb, unsigned long event,
3693     void *ptr)
3694     {
3695     @@ -582,7 +591,7 @@ static int ci_vbus_notifier(struct notifier_block *nb, unsigned long event,
3696    
3697     vbus->changed = true;
3698    
3699     - ci_irq(ci->irq, ci);
3700     + ci_irq(ci);
3701     return NOTIFY_DONE;
3702     }
3703    
3704     @@ -599,7 +608,7 @@ static int ci_id_notifier(struct notifier_block *nb, unsigned long event,
3705    
3706     id->changed = true;
3707    
3708     - ci_irq(ci->irq, ci);
3709     + ci_irq(ci);
3710     return NOTIFY_DONE;
3711     }
3712    
3713     @@ -1011,7 +1020,7 @@ static int ci_hdrc_probe(struct platform_device *pdev)
3714     }
3715    
3716     platform_set_drvdata(pdev, ci);
3717     - ret = devm_request_irq(dev, ci->irq, ci_irq, IRQF_SHARED,
3718     + ret = devm_request_irq(dev, ci->irq, ci_irq_handler, IRQF_SHARED,
3719     ci->platdata->name, ci);
3720     if (ret)
3721     goto stop;
3722     @@ -1126,11 +1135,11 @@ static void ci_extcon_wakeup_int(struct ci_hdrc *ci)
3723    
3724     if (!IS_ERR(cable_id->edev) && ci->is_otg &&
3725     (otgsc & OTGSC_IDIE) && (otgsc & OTGSC_IDIS))
3726     - ci_irq(ci->irq, ci);
3727     + ci_irq(ci);
3728    
3729     if (!IS_ERR(cable_vbus->edev) && ci->is_otg &&
3730     (otgsc & OTGSC_BSVIE) && (otgsc & OTGSC_BSVIS))
3731     - ci_irq(ci->irq, ci);
3732     + ci_irq(ci);
3733     }
3734    
3735     static int ci_controller_resume(struct device *dev)
3736     diff --git a/drivers/usb/gadget/legacy/hid.c b/drivers/usb/gadget/legacy/hid.c
3737     index cccbb948821b2..a55d3761d777c 100644
3738     --- a/drivers/usb/gadget/legacy/hid.c
3739     +++ b/drivers/usb/gadget/legacy/hid.c
3740     @@ -103,8 +103,10 @@ static int do_config(struct usb_configuration *c)
3741    
3742     list_for_each_entry(e, &hidg_func_list, node) {
3743     e->f = usb_get_function(e->fi);
3744     - if (IS_ERR(e->f))
3745     + if (IS_ERR(e->f)) {
3746     + status = PTR_ERR(e->f);
3747     goto put;
3748     + }
3749     status = usb_add_function(c, e->f);
3750     if (status < 0) {
3751     usb_put_function(e->f);
3752     diff --git a/drivers/usb/host/max3421-hcd.c b/drivers/usb/host/max3421-hcd.c
3753     index 1654a1bc64141..88aa5acac6fd9 100644
3754     --- a/drivers/usb/host/max3421-hcd.c
3755     +++ b/drivers/usb/host/max3421-hcd.c
3756     @@ -121,8 +121,6 @@ struct max3421_hcd {
3757    
3758     struct task_struct *spi_thread;
3759    
3760     - struct max3421_hcd *next;
3761     -
3762     enum max3421_rh_state rh_state;
3763     /* lower 16 bits contain port status, upper 16 bits the change mask: */
3764     u32 port_status;
3765     @@ -170,8 +168,6 @@ struct max3421_ep {
3766     u8 retransmit; /* packet needs retransmission */
3767     };
3768    
3769     -static struct max3421_hcd *max3421_hcd_list;
3770     -
3771     #define MAX3421_FIFO_SIZE 64
3772    
3773     #define MAX3421_SPI_DIR_RD 0 /* read register from MAX3421 */
3774     @@ -1835,9 +1831,8 @@ max3421_probe(struct spi_device *spi)
3775     }
3776     set_bit(HCD_FLAG_POLL_RH, &hcd->flags);
3777     max3421_hcd = hcd_to_max3421(hcd);
3778     - max3421_hcd->next = max3421_hcd_list;
3779     - max3421_hcd_list = max3421_hcd;
3780     INIT_LIST_HEAD(&max3421_hcd->ep_list);
3781     + spi_set_drvdata(spi, max3421_hcd);
3782    
3783     max3421_hcd->tx = kmalloc(sizeof(*max3421_hcd->tx), GFP_KERNEL);
3784     if (!max3421_hcd->tx)
3785     @@ -1882,28 +1877,18 @@ error:
3786     static int
3787     max3421_remove(struct spi_device *spi)
3788     {
3789     - struct max3421_hcd *max3421_hcd = NULL, **prev;
3790     - struct usb_hcd *hcd = NULL;
3791     + struct max3421_hcd *max3421_hcd;
3792     + struct usb_hcd *hcd;
3793     unsigned long flags;
3794    
3795     - for (prev = &max3421_hcd_list; *prev; prev = &(*prev)->next) {
3796     - max3421_hcd = *prev;
3797     - hcd = max3421_to_hcd(max3421_hcd);
3798     - if (hcd->self.controller == &spi->dev)
3799     - break;
3800     - }
3801     - if (!max3421_hcd) {
3802     - dev_err(&spi->dev, "no MAX3421 HCD found for SPI device %p\n",
3803     - spi);
3804     - return -ENODEV;
3805     - }
3806     + max3421_hcd = spi_get_drvdata(spi);
3807     + hcd = max3421_to_hcd(max3421_hcd);
3808    
3809     usb_remove_hcd(hcd);
3810    
3811     spin_lock_irqsave(&max3421_hcd->lock, flags);
3812    
3813     kthread_stop(max3421_hcd->spi_thread);
3814     - *prev = max3421_hcd->next;
3815    
3816     spin_unlock_irqrestore(&max3421_hcd->lock, flags);
3817    
3818     diff --git a/drivers/usb/host/ohci-tmio.c b/drivers/usb/host/ohci-tmio.c
3819     index 9c9e97294c18d..4d42ae3b2fd6d 100644
3820     --- a/drivers/usb/host/ohci-tmio.c
3821     +++ b/drivers/usb/host/ohci-tmio.c
3822     @@ -199,7 +199,7 @@ static int ohci_hcd_tmio_drv_probe(struct platform_device *dev)
3823     if (usb_disabled())
3824     return -ENODEV;
3825    
3826     - if (!cell)
3827     + if (!cell || !regs || !config || !sram)
3828     return -EINVAL;
3829    
3830     if (irq < 0)
3831     diff --git a/drivers/usb/host/xhci-hub.c b/drivers/usb/host/xhci-hub.c
3832     index dc8f54a68bdbc..9708dbb52b702 100644
3833     --- a/drivers/usb/host/xhci-hub.c
3834     +++ b/drivers/usb/host/xhci-hub.c
3835     @@ -174,7 +174,6 @@ static void xhci_common_hub_descriptor(struct xhci_hcd *xhci,
3836     {
3837     u16 temp;
3838    
3839     - desc->bPwrOn2PwrGood = 10; /* xhci section 5.4.9 says 20ms max */
3840     desc->bHubContrCurrent = 0;
3841    
3842     desc->bNbrPorts = ports;
3843     @@ -208,6 +207,7 @@ static void xhci_usb2_hub_descriptor(struct usb_hcd *hcd, struct xhci_hcd *xhci,
3844     desc->bDescriptorType = USB_DT_HUB;
3845     temp = 1 + (ports / 8);
3846     desc->bDescLength = USB_DT_HUB_NONVAR_SIZE + 2 * temp;
3847     + desc->bPwrOn2PwrGood = 10; /* xhci section 5.4.8 says 20ms */
3848    
3849     /* The Device Removable bits are reported on a byte granularity.
3850     * If the port doesn't exist within that byte, the bit is set to 0.
3851     @@ -258,6 +258,7 @@ static void xhci_usb3_hub_descriptor(struct usb_hcd *hcd, struct xhci_hcd *xhci,
3852     xhci_common_hub_descriptor(xhci, desc, ports);
3853     desc->bDescriptorType = USB_DT_SS_HUB;
3854     desc->bDescLength = USB_DT_SS_HUB_SIZE;
3855     + desc->bPwrOn2PwrGood = 50; /* usb 3.1 may fail if less than 100ms */
3856    
3857     /* header decode latency should be zero for roothubs,
3858     * see section 4.23.5.2.
3859     diff --git a/drivers/usb/misc/iowarrior.c b/drivers/usb/misc/iowarrior.c
3860     index 1b83946bfb18d..1ea48590bf3b1 100644
3861     --- a/drivers/usb/misc/iowarrior.c
3862     +++ b/drivers/usb/misc/iowarrior.c
3863     @@ -96,10 +96,6 @@ struct iowarrior {
3864     /* globals */
3865     /*--------------*/
3866    
3867     -/*
3868     - * USB spec identifies 5 second timeouts.
3869     - */
3870     -#define GET_TIMEOUT 5
3871     #define USB_REQ_GET_REPORT 0x01
3872     //#if 0
3873     static int usb_get_report(struct usb_device *dev,
3874     @@ -111,7 +107,7 @@ static int usb_get_report(struct usb_device *dev,
3875     USB_DIR_IN | USB_TYPE_CLASS |
3876     USB_RECIP_INTERFACE, (type << 8) + id,
3877     inter->desc.bInterfaceNumber, buf, size,
3878     - GET_TIMEOUT*HZ);
3879     + USB_CTRL_GET_TIMEOUT);
3880     }
3881     //#endif
3882    
3883     @@ -126,7 +122,7 @@ static int usb_set_report(struct usb_interface *intf, unsigned char type,
3884     USB_TYPE_CLASS | USB_RECIP_INTERFACE,
3885     (type << 8) + id,
3886     intf->cur_altsetting->desc.bInterfaceNumber, buf,
3887     - size, HZ);
3888     + size, 1000);
3889     }
3890    
3891     /*---------------------*/
3892     diff --git a/drivers/usb/musb/tusb6010.c b/drivers/usb/musb/tusb6010.c
3893     index 7e9204fdba4a8..fb4239b5286fb 100644
3894     --- a/drivers/usb/musb/tusb6010.c
3895     +++ b/drivers/usb/musb/tusb6010.c
3896     @@ -1120,6 +1120,11 @@ static int tusb_musb_init(struct musb *musb)
3897    
3898     /* dma address for async dma */
3899     mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
3900     + if (!mem) {
3901     + pr_debug("no async dma resource?\n");
3902     + ret = -ENODEV;
3903     + goto done;
3904     + }
3905     musb->async = mem->start;
3906    
3907     /* dma address for sync dma */
3908     diff --git a/drivers/usb/serial/keyspan.c b/drivers/usb/serial/keyspan.c
3909     index e08755e9b6129..9c825d4e564e8 100644
3910     --- a/drivers/usb/serial/keyspan.c
3911     +++ b/drivers/usb/serial/keyspan.c
3912     @@ -2419,22 +2419,22 @@ static int keyspan_port_probe(struct usb_serial_port *port)
3913     for (i = 0; i < ARRAY_SIZE(p_priv->in_buffer); ++i) {
3914     p_priv->in_buffer[i] = kzalloc(IN_BUFLEN, GFP_KERNEL);
3915     if (!p_priv->in_buffer[i])
3916     - goto err_in_buffer;
3917     + goto err_free_in_buffer;
3918     }
3919    
3920     for (i = 0; i < ARRAY_SIZE(p_priv->out_buffer); ++i) {
3921     p_priv->out_buffer[i] = kzalloc(OUT_BUFLEN, GFP_KERNEL);
3922     if (!p_priv->out_buffer[i])
3923     - goto err_out_buffer;
3924     + goto err_free_out_buffer;
3925     }
3926    
3927     p_priv->inack_buffer = kzalloc(INACK_BUFLEN, GFP_KERNEL);
3928     if (!p_priv->inack_buffer)
3929     - goto err_inack_buffer;
3930     + goto err_free_out_buffer;
3931    
3932     p_priv->outcont_buffer = kzalloc(OUTCONT_BUFLEN, GFP_KERNEL);
3933     if (!p_priv->outcont_buffer)
3934     - goto err_outcont_buffer;
3935     + goto err_free_inack_buffer;
3936    
3937     p_priv->device_details = d_details;
3938    
3939     @@ -2480,15 +2480,14 @@ static int keyspan_port_probe(struct usb_serial_port *port)
3940    
3941     return 0;
3942    
3943     -err_outcont_buffer:
3944     +err_free_inack_buffer:
3945     kfree(p_priv->inack_buffer);
3946     -err_inack_buffer:
3947     +err_free_out_buffer:
3948     for (i = 0; i < ARRAY_SIZE(p_priv->out_buffer); ++i)
3949     kfree(p_priv->out_buffer[i]);
3950     -err_out_buffer:
3951     +err_free_in_buffer:
3952     for (i = 0; i < ARRAY_SIZE(p_priv->in_buffer); ++i)
3953     kfree(p_priv->in_buffer[i]);
3954     -err_in_buffer:
3955     kfree(p_priv);
3956    
3957     return -ENOMEM;
3958     diff --git a/drivers/video/console/sticon.c b/drivers/video/console/sticon.c
3959     index 3a10ac19598fa..8827e0ec5995c 100644
3960     --- a/drivers/video/console/sticon.c
3961     +++ b/drivers/video/console/sticon.c
3962     @@ -290,13 +290,13 @@ static unsigned long sticon_getxy(struct vc_data *conp, unsigned long pos,
3963     static u8 sticon_build_attr(struct vc_data *conp, u8 color, u8 intens,
3964     u8 blink, u8 underline, u8 reverse, u8 italic)
3965     {
3966     - u8 attr = ((color & 0x70) >> 1) | ((color & 7));
3967     + u8 fg = color & 7;
3968     + u8 bg = (color & 0x70) >> 4;
3969    
3970     - if (reverse) {
3971     - color = ((color >> 3) & 0x7) | ((color & 0x7) << 3);
3972     - }
3973     -
3974     - return attr;
3975     + if (reverse)
3976     + return (fg << 3) | bg;
3977     + else
3978     + return (bg << 3) | fg;
3979     }
3980    
3981     static void sticon_invert_region(struct vc_data *conp, u16 *p, int count)
3982     diff --git a/drivers/video/fbdev/chipsfb.c b/drivers/video/fbdev/chipsfb.c
3983     index 314b7eceb81c5..84a3778552eba 100644
3984     --- a/drivers/video/fbdev/chipsfb.c
3985     +++ b/drivers/video/fbdev/chipsfb.c
3986     @@ -332,7 +332,7 @@ static struct fb_var_screeninfo chipsfb_var = {
3987    
3988     static void init_chips(struct fb_info *p, unsigned long addr)
3989     {
3990     - memset(p->screen_base, 0, 0x100000);
3991     + fb_memset(p->screen_base, 0, 0x100000);
3992    
3993     p->fix = chipsfb_fix;
3994     p->fix.smem_start = addr;
3995     diff --git a/drivers/watchdog/f71808e_wdt.c b/drivers/watchdog/f71808e_wdt.c
3996     index ae4974701e5c7..6fe9daf2367b5 100644
3997     --- a/drivers/watchdog/f71808e_wdt.c
3998     +++ b/drivers/watchdog/f71808e_wdt.c
3999     @@ -237,15 +237,17 @@ static int watchdog_set_timeout(int timeout)
4000    
4001     mutex_lock(&watchdog.lock);
4002    
4003     - watchdog.timeout = timeout;
4004     if (timeout > 0xff) {
4005     watchdog.timer_val = DIV_ROUND_UP(timeout, 60);
4006     watchdog.minutes_mode = true;
4007     + timeout = watchdog.timer_val * 60;
4008     } else {
4009     watchdog.timer_val = timeout;
4010     watchdog.minutes_mode = false;
4011     }
4012    
4013     + watchdog.timeout = timeout;
4014     +
4015     mutex_unlock(&watchdog.lock);
4016    
4017     return 0;
4018     diff --git a/drivers/watchdog/omap_wdt.c b/drivers/watchdog/omap_wdt.c
4019     index 1b02bfa81b296..40c006ee8492d 100644
4020     --- a/drivers/watchdog/omap_wdt.c
4021     +++ b/drivers/watchdog/omap_wdt.c
4022     @@ -271,8 +271,12 @@ static int omap_wdt_probe(struct platform_device *pdev)
4023     wdev->wdog.bootstatus = WDIOF_CARDRESET;
4024     }
4025    
4026     - if (!early_enable)
4027     + if (early_enable) {
4028     + omap_wdt_start(&wdev->wdog);
4029     + set_bit(WDOG_HW_RUNNING, &wdev->wdog.status);
4030     + } else {
4031     omap_wdt_disable(wdev);
4032     + }
4033    
4034     ret = watchdog_register_device(&wdev->wdog);
4035     if (ret) {
4036     diff --git a/drivers/xen/xen-pciback/conf_space_capability.c b/drivers/xen/xen-pciback/conf_space_capability.c
4037     index b1a1d7de0894e..daa2e89a50fa3 100644
4038     --- a/drivers/xen/xen-pciback/conf_space_capability.c
4039     +++ b/drivers/xen/xen-pciback/conf_space_capability.c
4040     @@ -159,7 +159,7 @@ static void *pm_ctrl_init(struct pci_dev *dev, int offset)
4041     }
4042    
4043     out:
4044     - return ERR_PTR(err);
4045     + return err ? ERR_PTR(err) : NULL;
4046     }
4047    
4048     static const struct config_field caplist_pm[] = {
4049     diff --git a/fs/btrfs/async-thread.c b/fs/btrfs/async-thread.c
4050     index 5456937836b86..033cb85ce9b51 100644
4051     --- a/fs/btrfs/async-thread.c
4052     +++ b/fs/btrfs/async-thread.c
4053     @@ -283,6 +283,13 @@ static void run_ordered_work(struct __btrfs_workqueue *wq,
4054     ordered_list);
4055     if (!test_bit(WORK_DONE_BIT, &work->flags))
4056     break;
4057     + /*
4058     + * Orders all subsequent loads after reading WORK_DONE_BIT,
4059     + * paired with the smp_mb__before_atomic in btrfs_work_helper
4060     + * this guarantees that the ordered function will see all
4061     + * updates from ordinary work function.
4062     + */
4063     + smp_rmb();
4064    
4065     /*
4066     * we are going to call the ordered done function, but
4067     @@ -368,6 +375,13 @@ static void normal_work_helper(struct btrfs_work *work)
4068     thresh_exec_hook(wq);
4069     work->func(work);
4070     if (need_order) {
4071     + /*
4072     + * Ensures all memory accesses done in the work function are
4073     + * ordered before setting the WORK_DONE_BIT. Ensuring the thread
4074     + * which is going to executed the ordered work sees them.
4075     + * Pairs with the smp_rmb in run_ordered_work.
4076     + */
4077     + smp_mb__before_atomic();
4078     set_bit(WORK_DONE_BIT, &work->flags);
4079     run_ordered_work(wq, work);
4080     }
4081     diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c
4082     index 11ecd798864c8..cc91b0c564a38 100644
4083     --- a/fs/btrfs/tree-log.c
4084     +++ b/fs/btrfs/tree-log.c
4085     @@ -2225,7 +2225,9 @@ again:
4086     else {
4087     ret = find_dir_range(log, path, dirid, key_type,
4088     &range_start, &range_end);
4089     - if (ret != 0)
4090     + if (ret < 0)
4091     + goto out;
4092     + else if (ret > 0)
4093     break;
4094     }
4095    
4096     diff --git a/fs/jfs/jfs_mount.c b/fs/jfs/jfs_mount.c
4097     index 103788ecc28c1..0c2aabba1fdbb 100644
4098     --- a/fs/jfs/jfs_mount.c
4099     +++ b/fs/jfs/jfs_mount.c
4100     @@ -93,14 +93,14 @@ int jfs_mount(struct super_block *sb)
4101     * (initialize mount inode from the superblock)
4102     */
4103     if ((rc = chkSuper(sb))) {
4104     - goto errout20;
4105     + goto out;
4106     }
4107    
4108     ipaimap = diReadSpecial(sb, AGGREGATE_I, 0);
4109     if (ipaimap == NULL) {
4110     jfs_err("jfs_mount: Failed to read AGGREGATE_I");
4111     rc = -EIO;
4112     - goto errout20;
4113     + goto out;
4114     }
4115     sbi->ipaimap = ipaimap;
4116    
4117     @@ -111,7 +111,7 @@ int jfs_mount(struct super_block *sb)
4118     */
4119     if ((rc = diMount(ipaimap))) {
4120     jfs_err("jfs_mount: diMount(ipaimap) failed w/rc = %d", rc);
4121     - goto errout21;
4122     + goto err_ipaimap;
4123     }
4124    
4125     /*
4126     @@ -120,7 +120,7 @@ int jfs_mount(struct super_block *sb)
4127     ipbmap = diReadSpecial(sb, BMAP_I, 0);
4128     if (ipbmap == NULL) {
4129     rc = -EIO;
4130     - goto errout22;
4131     + goto err_umount_ipaimap;
4132     }
4133    
4134     jfs_info("jfs_mount: ipbmap:0x%p", ipbmap);
4135     @@ -132,7 +132,7 @@ int jfs_mount(struct super_block *sb)
4136     */
4137     if ((rc = dbMount(ipbmap))) {
4138     jfs_err("jfs_mount: dbMount failed w/rc = %d", rc);
4139     - goto errout22;
4140     + goto err_ipbmap;
4141     }
4142    
4143     /*
4144     @@ -151,7 +151,7 @@ int jfs_mount(struct super_block *sb)
4145     if (!ipaimap2) {
4146     jfs_err("jfs_mount: Failed to read AGGREGATE_I");
4147     rc = -EIO;
4148     - goto errout35;
4149     + goto err_umount_ipbmap;
4150     }
4151     sbi->ipaimap2 = ipaimap2;
4152    
4153     @@ -163,7 +163,7 @@ int jfs_mount(struct super_block *sb)
4154     if ((rc = diMount(ipaimap2))) {
4155     jfs_err("jfs_mount: diMount(ipaimap2) failed, rc = %d",
4156     rc);
4157     - goto errout35;
4158     + goto err_ipaimap2;
4159     }
4160     } else
4161     /* Secondary aggregate inode table is not valid */
4162     @@ -180,7 +180,7 @@ int jfs_mount(struct super_block *sb)
4163     jfs_err("jfs_mount: Failed to read FILESYSTEM_I");
4164     /* open fileset secondary inode allocation map */
4165     rc = -EIO;
4166     - goto errout40;
4167     + goto err_umount_ipaimap2;
4168     }
4169     jfs_info("jfs_mount: ipimap:0x%p", ipimap);
4170    
4171     @@ -190,41 +190,34 @@ int jfs_mount(struct super_block *sb)
4172     /* initialize fileset inode allocation map */
4173     if ((rc = diMount(ipimap))) {
4174     jfs_err("jfs_mount: diMount failed w/rc = %d", rc);
4175     - goto errout41;
4176     + goto err_ipimap;
4177     }
4178    
4179     - goto out;
4180     + return rc;
4181    
4182     /*
4183     * unwind on error
4184     */
4185     - errout41: /* close fileset inode allocation map inode */
4186     +err_ipimap:
4187     + /* close fileset inode allocation map inode */
4188     diFreeSpecial(ipimap);
4189     -
4190     - errout40: /* fileset closed */
4191     -
4192     +err_umount_ipaimap2:
4193     /* close secondary aggregate inode allocation map */
4194     - if (ipaimap2) {
4195     + if (ipaimap2)
4196     diUnmount(ipaimap2, 1);
4197     +err_ipaimap2:
4198     + /* close aggregate inodes */
4199     + if (ipaimap2)
4200     diFreeSpecial(ipaimap2);
4201     - }
4202     -
4203     - errout35:
4204     -
4205     - /* close aggregate block allocation map */
4206     +err_umount_ipbmap: /* close aggregate block allocation map */
4207     dbUnmount(ipbmap, 1);
4208     +err_ipbmap: /* close aggregate inodes */
4209     diFreeSpecial(ipbmap);
4210     -
4211     - errout22: /* close aggregate inode allocation map */
4212     -
4213     +err_umount_ipaimap: /* close aggregate inode allocation map */
4214     diUnmount(ipaimap, 1);
4215     -
4216     - errout21: /* close aggregate inodes */
4217     +err_ipaimap: /* close aggregate inodes */
4218     diFreeSpecial(ipaimap);
4219     - errout20: /* aggregate closed */
4220     -
4221     - out:
4222     -
4223     +out:
4224     if (rc)
4225     jfs_err("Mount JFS Failure: %d", rc);
4226    
4227     diff --git a/fs/nfs/flexfilelayout/flexfilelayoutdev.c b/fs/nfs/flexfilelayout/flexfilelayoutdev.c
4228     index c8863563c6350..287ed99a7e513 100644
4229     --- a/fs/nfs/flexfilelayout/flexfilelayoutdev.c
4230     +++ b/fs/nfs/flexfilelayout/flexfilelayoutdev.c
4231     @@ -383,10 +383,10 @@ nfs4_ff_layout_prepare_ds(struct pnfs_layout_segment *lseg, u32 ds_idx,
4232     goto out_fail;
4233    
4234     ds = mirror->mirror_ds->ds;
4235     + if (READ_ONCE(ds->ds_clp))
4236     + goto out;
4237     /* matching smp_wmb() in _nfs4_pnfs_v3/4_ds_connect */
4238     smp_rmb();
4239     - if (ds->ds_clp)
4240     - goto out;
4241    
4242     /* FIXME: For now we assume the server sent only one version of NFS
4243     * to use for the DS.
4244     diff --git a/fs/nfs/pnfs_nfs.c b/fs/nfs/pnfs_nfs.c
4245     index 53b4705abcc76..1f2da20946640 100644
4246     --- a/fs/nfs/pnfs_nfs.c
4247     +++ b/fs/nfs/pnfs_nfs.c
4248     @@ -666,7 +666,7 @@ static int _nfs4_pnfs_v3_ds_connect(struct nfs_server *mds_srv,
4249     }
4250    
4251     smp_wmb();
4252     - ds->ds_clp = clp;
4253     + WRITE_ONCE(ds->ds_clp, clp);
4254     dprintk("%s [new] addr: %s\n", __func__, ds->ds_remotestr);
4255     out:
4256     return status;
4257     @@ -742,7 +742,7 @@ static int _nfs4_pnfs_v4_ds_connect(struct nfs_server *mds_srv,
4258     }
4259    
4260     smp_wmb();
4261     - ds->ds_clp = clp;
4262     + WRITE_ONCE(ds->ds_clp, clp);
4263     dprintk("%s [new] addr: %s\n", __func__, ds->ds_remotestr);
4264     out:
4265     return status;
4266     diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c
4267     index d526e86cf5bbe..f584ef6e754a7 100644
4268     --- a/fs/ocfs2/file.c
4269     +++ b/fs/ocfs2/file.c
4270     @@ -490,10 +490,11 @@ int ocfs2_truncate_file(struct inode *inode,
4271     * greater than page size, so we have to truncate them
4272     * anyway.
4273     */
4274     - unmap_mapping_range(inode->i_mapping, new_i_size + PAGE_SIZE - 1, 0, 1);
4275     - truncate_inode_pages(inode->i_mapping, new_i_size);
4276    
4277     if (OCFS2_I(inode)->ip_dyn_features & OCFS2_INLINE_DATA_FL) {
4278     + unmap_mapping_range(inode->i_mapping,
4279     + new_i_size + PAGE_SIZE - 1, 0, 1);
4280     + truncate_inode_pages(inode->i_mapping, new_i_size);
4281     status = ocfs2_truncate_inline(inode, di_bh, new_i_size,
4282     i_size_read(inode), 1);
4283     if (status)
4284     @@ -512,6 +513,9 @@ int ocfs2_truncate_file(struct inode *inode,
4285     goto bail_unlock_sem;
4286     }
4287    
4288     + unmap_mapping_range(inode->i_mapping, new_i_size + PAGE_SIZE - 1, 0, 1);
4289     + truncate_inode_pages(inode->i_mapping, new_i_size);
4290     +
4291     status = ocfs2_commit_truncate(osb, inode, di_bh);
4292     if (status < 0) {
4293     mlog_errno(status);
4294     diff --git a/fs/orangefs/dcache.c b/fs/orangefs/dcache.c
4295     index 5355efba4bc8c..1942f9946ab77 100644
4296     --- a/fs/orangefs/dcache.c
4297     +++ b/fs/orangefs/dcache.c
4298     @@ -25,8 +25,10 @@ static int orangefs_revalidate_lookup(struct dentry *dentry)
4299     gossip_debug(GOSSIP_DCACHE_DEBUG, "%s: attempting lookup.\n", __func__);
4300    
4301     new_op = op_alloc(ORANGEFS_VFS_OP_LOOKUP);
4302     - if (!new_op)
4303     + if (!new_op) {
4304     + ret = -ENOMEM;
4305     goto out_put_parent;
4306     + }
4307    
4308     new_op->upcall.req.lookup.sym_follow = ORANGEFS_LOOKUP_LINK_NO_FOLLOW;
4309     new_op->upcall.req.lookup.parent_refn = parent->refn;
4310     diff --git a/fs/quota/quota_tree.c b/fs/quota/quota_tree.c
4311     index ecd9887b0d1fe..8c7705b50e5dd 100644
4312     --- a/fs/quota/quota_tree.c
4313     +++ b/fs/quota/quota_tree.c
4314     @@ -422,6 +422,7 @@ static int free_dqentry(struct qtree_mem_dqinfo *info, struct dquot *dquot,
4315     quota_error(dquot->dq_sb, "Quota structure has offset to "
4316     "other block (%u) than it should (%u)", blk,
4317     (uint)(dquot->dq_off >> info->dqi_blocksize_bits));
4318     + ret = -EIO;
4319     goto out_buf;
4320     }
4321     ret = read_blk(info, blk, buf);
4322     @@ -487,6 +488,13 @@ static int remove_tree(struct qtree_mem_dqinfo *info, struct dquot *dquot,
4323     goto out_buf;
4324     }
4325     newblk = le32_to_cpu(ref[get_index(info, dquot->dq_id, depth)]);
4326     + if (newblk < QT_TREEOFF || newblk >= info->dqi_blocks) {
4327     + quota_error(dquot->dq_sb, "Getting block too big (%u >= %u)",
4328     + newblk, info->dqi_blocks);
4329     + ret = -EUCLEAN;
4330     + goto out_buf;
4331     + }
4332     +
4333     if (depth == info->dqi_qtree_depth - 1) {
4334     ret = free_dqentry(info, dquot, newblk);
4335     newblk = 0;
4336     @@ -586,6 +594,13 @@ static loff_t find_tree_dqentry(struct qtree_mem_dqinfo *info,
4337     blk = le32_to_cpu(ref[get_index(info, dquot->dq_id, depth)]);
4338     if (!blk) /* No reference? */
4339     goto out_buf;
4340     + if (blk < QT_TREEOFF || blk >= info->dqi_blocks) {
4341     + quota_error(dquot->dq_sb, "Getting block too big (%u >= %u)",
4342     + blk, info->dqi_blocks);
4343     + ret = -EUCLEAN;
4344     + goto out_buf;
4345     + }
4346     +
4347     if (depth < info->dqi_qtree_depth - 1)
4348     ret = find_tree_dqentry(info, dquot, blk, depth+1);
4349     else
4350     diff --git a/fs/tracefs/inode.c b/fs/tracefs/inode.c
4351     index 21d36d2847356..985cccfcedad9 100644
4352     --- a/fs/tracefs/inode.c
4353     +++ b/fs/tracefs/inode.c
4354     @@ -429,7 +429,8 @@ static struct dentry *__create_dir(const char *name, struct dentry *parent,
4355     if (unlikely(!inode))
4356     return failed_creating(dentry);
4357    
4358     - inode->i_mode = S_IFDIR | S_IRWXU | S_IRUGO | S_IXUGO;
4359     + /* Do not set bits for OTH */
4360     + inode->i_mode = S_IFDIR | S_IRWXU | S_IRUSR| S_IRGRP | S_IXUSR | S_IXGRP;
4361     inode->i_op = ops;
4362     inode->i_fop = &simple_dir_operations;
4363    
4364     diff --git a/include/linux/console.h b/include/linux/console.h
4365     index d530c4627e54e..118c33aa5ecfa 100644
4366     --- a/include/linux/console.h
4367     +++ b/include/linux/console.h
4368     @@ -135,6 +135,8 @@ struct console {
4369     short flags;
4370     short index;
4371     int cflag;
4372     + uint ispeed;
4373     + uint ospeed;
4374     void *data;
4375     struct console *next;
4376     };
4377     diff --git a/include/linux/filter.h b/include/linux/filter.h
4378     index 0837d904405a3..05be3d84655e4 100644
4379     --- a/include/linux/filter.h
4380     +++ b/include/linux/filter.h
4381     @@ -600,6 +600,7 @@ void bpf_warn_invalid_xdp_action(u32 act);
4382     extern int bpf_jit_enable;
4383     extern int bpf_jit_harden;
4384     extern long bpf_jit_limit;
4385     +extern long bpf_jit_limit_max;
4386    
4387     typedef void (*bpf_jit_fill_hole_t)(void *area, unsigned int size);
4388    
4389     diff --git a/include/linux/libata.h b/include/linux/libata.h
4390     index de770d11a5c18..208534322bcdc 100644
4391     --- a/include/linux/libata.h
4392     +++ b/include/linux/libata.h
4393     @@ -404,7 +404,7 @@ enum {
4394     /* This should match the actual table size of
4395     * ata_eh_cmd_timeout_table in libata-eh.c.
4396     */
4397     - ATA_EH_CMD_TIMEOUT_TABLE_SIZE = 6,
4398     + ATA_EH_CMD_TIMEOUT_TABLE_SIZE = 7,
4399    
4400     /* Horkage types. May be set by libata or controller on drives
4401     (some horkage may be drive/controller pair dependent */
4402     diff --git a/include/linux/lsm_hooks.h b/include/linux/lsm_hooks.h
4403     index 558adfa5c8a87..53ac461f342bb 100644
4404     --- a/include/linux/lsm_hooks.h
4405     +++ b/include/linux/lsm_hooks.h
4406     @@ -1147,22 +1147,22 @@
4407     *
4408     * @binder_set_context_mgr
4409     * Check whether @mgr is allowed to be the binder context manager.
4410     - * @mgr contains the task_struct for the task being registered.
4411     + * @mgr contains the struct cred for the current binder process.
4412     * Return 0 if permission is granted.
4413     * @binder_transaction
4414     * Check whether @from is allowed to invoke a binder transaction call
4415     * to @to.
4416     - * @from contains the task_struct for the sending task.
4417     - * @to contains the task_struct for the receiving task.
4418     - * @binder_transfer_binder
4419     + * @from contains the struct cred for the sending process.
4420     + * @to contains the struct cred for the receiving process.
4421     + * @binder_transfer_binder:
4422     * Check whether @from is allowed to transfer a binder reference to @to.
4423     - * @from contains the task_struct for the sending task.
4424     - * @to contains the task_struct for the receiving task.
4425     - * @binder_transfer_file
4426     + * @from contains the struct cred for the sending process.
4427     + * @to contains the struct cred for the receiving process.
4428     + * @binder_transfer_file:
4429     * Check whether @from is allowed to transfer @file to @to.
4430     - * @from contains the task_struct for the sending task.
4431     + * @from contains the struct cred for the sending process.
4432     * @file contains the struct file being transferred.
4433     - * @to contains the task_struct for the receiving task.
4434     + * @to contains the struct cred for the receiving process.
4435     *
4436     * @ptrace_access_check:
4437     * Check permission before allowing the current process to trace the
4438     @@ -1332,13 +1332,13 @@
4439     */
4440    
4441     union security_list_options {
4442     - int (*binder_set_context_mgr)(struct task_struct *mgr);
4443     - int (*binder_transaction)(struct task_struct *from,
4444     - struct task_struct *to);
4445     - int (*binder_transfer_binder)(struct task_struct *from,
4446     - struct task_struct *to);
4447     - int (*binder_transfer_file)(struct task_struct *from,
4448     - struct task_struct *to,
4449     + int (*binder_set_context_mgr)(const struct cred *mgr);
4450     + int (*binder_transaction)(const struct cred *from,
4451     + const struct cred *to);
4452     + int (*binder_transfer_binder)(const struct cred *from,
4453     + const struct cred *to);
4454     + int (*binder_transfer_file)(const struct cred *from,
4455     + const struct cred *to,
4456     struct file *file);
4457    
4458     int (*ptrace_access_check)(struct task_struct *child,
4459     diff --git a/include/linux/security.h b/include/linux/security.h
4460     index c2125e9093e8e..2f5d282bd3eca 100644
4461     --- a/include/linux/security.h
4462     +++ b/include/linux/security.h
4463     @@ -184,13 +184,13 @@ static inline void security_free_mnt_opts(struct security_mnt_opts *opts)
4464     extern int security_init(void);
4465    
4466     /* Security operations */
4467     -int security_binder_set_context_mgr(struct task_struct *mgr);
4468     -int security_binder_transaction(struct task_struct *from,
4469     - struct task_struct *to);
4470     -int security_binder_transfer_binder(struct task_struct *from,
4471     - struct task_struct *to);
4472     -int security_binder_transfer_file(struct task_struct *from,
4473     - struct task_struct *to, struct file *file);
4474     +int security_binder_set_context_mgr(const struct cred *mgr);
4475     +int security_binder_transaction(const struct cred *from,
4476     + const struct cred *to);
4477     +int security_binder_transfer_binder(const struct cred *from,
4478     + const struct cred *to);
4479     +int security_binder_transfer_file(const struct cred *from,
4480     + const struct cred *to, struct file *file);
4481     int security_ptrace_access_check(struct task_struct *child, unsigned int mode);
4482     int security_ptrace_traceme(struct task_struct *parent);
4483     int security_capget(struct task_struct *target,
4484     @@ -394,25 +394,25 @@ static inline int security_init(void)
4485     return 0;
4486     }
4487    
4488     -static inline int security_binder_set_context_mgr(struct task_struct *mgr)
4489     +static inline int security_binder_set_context_mgr(const struct cred *mgr)
4490     {
4491     return 0;
4492     }
4493    
4494     -static inline int security_binder_transaction(struct task_struct *from,
4495     - struct task_struct *to)
4496     +static inline int security_binder_transaction(const struct cred *from,
4497     + const struct cred *to)
4498     {
4499     return 0;
4500     }
4501    
4502     -static inline int security_binder_transfer_binder(struct task_struct *from,
4503     - struct task_struct *to)
4504     +static inline int security_binder_transfer_binder(const struct cred *from,
4505     + const struct cred *to)
4506     {
4507     return 0;
4508     }
4509    
4510     -static inline int security_binder_transfer_file(struct task_struct *from,
4511     - struct task_struct *to,
4512     +static inline int security_binder_transfer_file(const struct cred *from,
4513     + const struct cred *to,
4514     struct file *file)
4515     {
4516     return 0;
4517     diff --git a/include/net/llc.h b/include/net/llc.h
4518     index 95e5ced4c1339..18dfd3e49a69f 100644
4519     --- a/include/net/llc.h
4520     +++ b/include/net/llc.h
4521     @@ -72,7 +72,9 @@ struct llc_sap {
4522     static inline
4523     struct hlist_head *llc_sk_dev_hash(struct llc_sap *sap, int ifindex)
4524     {
4525     - return &sap->sk_dev_hash[ifindex % LLC_SK_DEV_HASH_ENTRIES];
4526     + u32 bucket = hash_32(ifindex, LLC_SK_DEV_HASH_BITS);
4527     +
4528     + return &sap->sk_dev_hash[bucket];
4529     }
4530    
4531     static inline
4532     diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h
4533     index 8a70d38f13329..0c7dd6dd23957 100644
4534     --- a/include/target/target_core_base.h
4535     +++ b/include/target/target_core_base.h
4536     @@ -779,8 +779,9 @@ struct se_device {
4537     atomic_long_t read_bytes;
4538     atomic_long_t write_bytes;
4539     /* Active commands on this virtual SE device */
4540     - atomic_t simple_cmds;
4541     - atomic_t dev_ordered_sync;
4542     + atomic_t non_ordered;
4543     + bool ordered_sync_in_progress;
4544     + atomic_t delayed_cmd_count;
4545     atomic_t dev_qf_count;
4546     u32 export_count;
4547     spinlock_t delayed_cmd_lock;
4548     @@ -803,6 +804,7 @@ struct se_device {
4549     struct list_head dev_tmr_list;
4550     struct workqueue_struct *tmr_wq;
4551     struct work_struct qf_work_queue;
4552     + struct work_struct delayed_cmd_work;
4553     struct list_head delayed_cmd_list;
4554     struct list_head state_list;
4555     struct list_head qf_cmd_list;
4556     diff --git a/include/uapi/linux/pci_regs.h b/include/uapi/linux/pci_regs.h
4557     index ecc8e01c56163..9d846dfb9e904 100644
4558     --- a/include/uapi/linux/pci_regs.h
4559     +++ b/include/uapi/linux/pci_regs.h
4560     @@ -488,6 +488,12 @@
4561     #define PCI_EXP_DEVCTL_URRE 0x0008 /* Unsupported Request Reporting En. */
4562     #define PCI_EXP_DEVCTL_RELAX_EN 0x0010 /* Enable relaxed ordering */
4563     #define PCI_EXP_DEVCTL_PAYLOAD 0x00e0 /* Max_Payload_Size */
4564     +#define PCI_EXP_DEVCTL_PAYLOAD_128B 0x0000 /* 128 Bytes */
4565     +#define PCI_EXP_DEVCTL_PAYLOAD_256B 0x0020 /* 256 Bytes */
4566     +#define PCI_EXP_DEVCTL_PAYLOAD_512B 0x0040 /* 512 Bytes */
4567     +#define PCI_EXP_DEVCTL_PAYLOAD_1024B 0x0060 /* 1024 Bytes */
4568     +#define PCI_EXP_DEVCTL_PAYLOAD_2048B 0x0080 /* 2048 Bytes */
4569     +#define PCI_EXP_DEVCTL_PAYLOAD_4096B 0x00a0 /* 4096 Bytes */
4570     #define PCI_EXP_DEVCTL_EXT_TAG 0x0100 /* Extended Tag Field Enable */
4571     #define PCI_EXP_DEVCTL_PHANTOM 0x0200 /* Phantom Functions Enable */
4572     #define PCI_EXP_DEVCTL_AUX_PME 0x0400 /* Auxiliary Power PM Enable */
4573     diff --git a/kernel/bpf/core.c b/kernel/bpf/core.c
4574     index df2ebce927ec4..3ce69c0276c09 100644
4575     --- a/kernel/bpf/core.c
4576     +++ b/kernel/bpf/core.c
4577     @@ -212,6 +212,7 @@ struct bpf_prog *bpf_patch_insn_single(struct bpf_prog *prog, u32 off,
4578     int bpf_jit_enable __read_mostly = IS_BUILTIN(CONFIG_BPF_JIT_ALWAYS_ON);
4579     int bpf_jit_harden __read_mostly;
4580     long bpf_jit_limit __read_mostly;
4581     +long bpf_jit_limit_max __read_mostly;
4582    
4583     static atomic_long_t bpf_jit_current;
4584    
4585     @@ -231,7 +232,8 @@ u64 __weak bpf_jit_alloc_exec_limit(void)
4586     static int __init bpf_jit_charge_init(void)
4587     {
4588     /* Only used as heuristic here to derive limit. */
4589     - bpf_jit_limit = min_t(u64, round_up(bpf_jit_alloc_exec_limit() >> 2,
4590     + bpf_jit_limit_max = bpf_jit_alloc_exec_limit();
4591     + bpf_jit_limit = min_t(u64, round_up(bpf_jit_limit_max >> 2,
4592     PAGE_SIZE), LONG_MAX);
4593     return 0;
4594     }
4595     diff --git a/kernel/cgroup.c b/kernel/cgroup.c
4596     index 3378c44e147e6..248b0bf5d6795 100644
4597     --- a/kernel/cgroup.c
4598     +++ b/kernel/cgroup.c
4599     @@ -1564,6 +1564,7 @@ static int rebind_subsystems(struct cgroup_root *dst_root, u16 ss_mask)
4600     struct cgroup *dcgrp = &dst_root->cgrp;
4601     struct cgroup_subsys *ss;
4602     int ssid, i, ret;
4603     + u16 dfl_disable_ss_mask = 0;
4604    
4605     lockdep_assert_held(&cgroup_mutex);
4606    
4607     @@ -1580,8 +1581,28 @@ static int rebind_subsystems(struct cgroup_root *dst_root, u16 ss_mask)
4608     /* can't move between two non-dummy roots either */
4609     if (ss->root != &cgrp_dfl_root && dst_root != &cgrp_dfl_root)
4610     return -EBUSY;
4611     +
4612     + /*
4613     + * Collect ssid's that need to be disabled from default
4614     + * hierarchy.
4615     + */
4616     + if (ss->root == &cgrp_dfl_root)
4617     + dfl_disable_ss_mask |= 1 << ssid;
4618     +
4619     } while_each_subsys_mask();
4620    
4621     + if (dfl_disable_ss_mask) {
4622     + struct cgroup *scgrp = &cgrp_dfl_root.cgrp;
4623     +
4624     + /*
4625     + * Controllers from default hierarchy that need to be rebound
4626     + * are all disabled together in one go.
4627     + */
4628     + cgrp_dfl_root.subsys_mask &= ~dfl_disable_ss_mask;
4629     + WARN_ON(cgroup_apply_control(scgrp));
4630     + cgroup_finalize_control(scgrp, 0);
4631     + }
4632     +
4633     do_each_subsys_mask(ss, ssid, ss_mask) {
4634     struct cgroup_root *src_root = ss->root;
4635     struct cgroup *scgrp = &src_root->cgrp;
4636     @@ -1590,10 +1611,12 @@ static int rebind_subsystems(struct cgroup_root *dst_root, u16 ss_mask)
4637    
4638     WARN_ON(!css || cgroup_css(dcgrp, ss));
4639    
4640     - /* disable from the source */
4641     - src_root->subsys_mask &= ~(1 << ssid);
4642     - WARN_ON(cgroup_apply_control(scgrp));
4643     - cgroup_finalize_control(scgrp, 0);
4644     + if (src_root != &cgrp_dfl_root) {
4645     + /* disable from the source */
4646     + src_root->subsys_mask &= ~(1 << ssid);
4647     + WARN_ON(cgroup_apply_control(scgrp));
4648     + cgroup_finalize_control(scgrp, 0);
4649     + }
4650    
4651     /* rebind */
4652     RCU_INIT_POINTER(scgrp->subsys[ssid], NULL);
4653     diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
4654     index 9f56e3fac795a..05dd765e2cbca 100644
4655     --- a/kernel/locking/lockdep.c
4656     +++ b/kernel/locking/lockdep.c
4657     @@ -695,7 +695,7 @@ look_up_lock_class(struct lockdep_map *lock, unsigned int subclass)
4658     if (DEBUG_LOCKS_WARN_ON(!irqs_disabled()))
4659     return NULL;
4660    
4661     - hlist_for_each_entry_rcu(class, hash_head, hash_entry) {
4662     + hlist_for_each_entry_rcu_notrace(class, hash_head, hash_entry) {
4663     if (class->key == key) {
4664     /*
4665     * Huh! same key, different name? Did someone trample
4666     diff --git a/kernel/power/swap.c b/kernel/power/swap.c
4667     index a3b1e617bcdc3..8009cd308fcc6 100644
4668     --- a/kernel/power/swap.c
4669     +++ b/kernel/power/swap.c
4670     @@ -1528,9 +1528,10 @@ end:
4671     int swsusp_check(void)
4672     {
4673     int error;
4674     + void *holder;
4675    
4676     hib_resume_bdev = blkdev_get_by_dev(swsusp_resume_device,
4677     - FMODE_READ, NULL);
4678     + FMODE_READ | FMODE_EXCL, &holder);
4679     if (!IS_ERR(hib_resume_bdev)) {
4680     set_blocksize(hib_resume_bdev, PAGE_SIZE);
4681     clear_page(swsusp_header);
4682     @@ -1552,7 +1553,7 @@ int swsusp_check(void)
4683    
4684     put:
4685     if (error)
4686     - blkdev_put(hib_resume_bdev, FMODE_READ);
4687     + blkdev_put(hib_resume_bdev, FMODE_READ | FMODE_EXCL);
4688     else
4689     pr_debug("PM: Image signature found, resuming\n");
4690     } else {
4691     diff --git a/kernel/sched/core.c b/kernel/sched/core.c
4692     index c7c7ba8807f83..b1bfd44aa9f01 100644
4693     --- a/kernel/sched/core.c
4694     +++ b/kernel/sched/core.c
4695     @@ -1875,6 +1875,9 @@ out:
4696    
4697     bool cpus_share_cache(int this_cpu, int that_cpu)
4698     {
4699     + if (this_cpu == that_cpu)
4700     + return true;
4701     +
4702     return per_cpu(sd_llc_id, this_cpu) == per_cpu(sd_llc_id, that_cpu);
4703     }
4704     #endif /* CONFIG_SMP */
4705     diff --git a/kernel/signal.c b/kernel/signal.c
4706     index bedca1629f260..2c26af848e682 100644
4707     --- a/kernel/signal.c
4708     +++ b/kernel/signal.c
4709     @@ -1823,16 +1823,6 @@ static inline int may_ptrace_stop(void)
4710     return 1;
4711     }
4712    
4713     -/*
4714     - * Return non-zero if there is a SIGKILL that should be waking us up.
4715     - * Called with the siglock held.
4716     - */
4717     -static int sigkill_pending(struct task_struct *tsk)
4718     -{
4719     - return sigismember(&tsk->pending.signal, SIGKILL) ||
4720     - sigismember(&tsk->signal->shared_pending.signal, SIGKILL);
4721     -}
4722     -
4723     /*
4724     * This must be called with current->sighand->siglock held.
4725     *
4726     @@ -1858,15 +1848,10 @@ static void ptrace_stop(int exit_code, int why, int clear_code, siginfo_t *info)
4727     * calling arch_ptrace_stop, so we must release it now.
4728     * To preserve proper semantics, we must do this before
4729     * any signal bookkeeping like checking group_stop_count.
4730     - * Meanwhile, a SIGKILL could come in before we retake the
4731     - * siglock. That must prevent us from sleeping in TASK_TRACED.
4732     - * So after regaining the lock, we must check for SIGKILL.
4733     */
4734     spin_unlock_irq(&current->sighand->siglock);
4735     arch_ptrace_stop(exit_code, info);
4736     spin_lock_irq(&current->sighand->siglock);
4737     - if (sigkill_pending(current))
4738     - return;
4739     }
4740    
4741     /*
4742     @@ -1875,6 +1860,8 @@ static void ptrace_stop(int exit_code, int why, int clear_code, siginfo_t *info)
4743     * Also, transition to TRACED and updates to ->jobctl should be
4744     * atomic with respect to siglock and should be done after the arch
4745     * hook as siglock is released and regrabbed across it.
4746     + * schedule() will not sleep if there is a pending signal that
4747     + * can awaken the task.
4748     */
4749     set_current_state(TASK_TRACED);
4750    
4751     diff --git a/kernel/trace/tracing_map.c b/kernel/trace/tracing_map.c
4752     index 35b2ba07f3c6f..379db35838b64 100644
4753     --- a/kernel/trace/tracing_map.c
4754     +++ b/kernel/trace/tracing_map.c
4755     @@ -703,29 +703,35 @@ int tracing_map_init(struct tracing_map *map)
4756     return err;
4757     }
4758    
4759     -static int cmp_entries_dup(const struct tracing_map_sort_entry **a,
4760     - const struct tracing_map_sort_entry **b)
4761     +static int cmp_entries_dup(const void *A, const void *B)
4762     {
4763     + const struct tracing_map_sort_entry *a, *b;
4764     int ret = 0;
4765    
4766     - if (memcmp((*a)->key, (*b)->key, (*a)->elt->map->key_size))
4767     + a = *(const struct tracing_map_sort_entry **)A;
4768     + b = *(const struct tracing_map_sort_entry **)B;
4769     +
4770     + if (memcmp(a->key, b->key, a->elt->map->key_size))
4771     ret = 1;
4772    
4773     return ret;
4774     }
4775    
4776     -static int cmp_entries_sum(const struct tracing_map_sort_entry **a,
4777     - const struct tracing_map_sort_entry **b)
4778     +static int cmp_entries_sum(const void *A, const void *B)
4779     {
4780     const struct tracing_map_elt *elt_a, *elt_b;
4781     + const struct tracing_map_sort_entry *a, *b;
4782     struct tracing_map_sort_key *sort_key;
4783     struct tracing_map_field *field;
4784     tracing_map_cmp_fn_t cmp_fn;
4785     void *val_a, *val_b;
4786     int ret = 0;
4787    
4788     - elt_a = (*a)->elt;
4789     - elt_b = (*b)->elt;
4790     + a = *(const struct tracing_map_sort_entry **)A;
4791     + b = *(const struct tracing_map_sort_entry **)B;
4792     +
4793     + elt_a = a->elt;
4794     + elt_b = b->elt;
4795    
4796     sort_key = &elt_a->map->sort_key;
4797    
4798     @@ -742,18 +748,21 @@ static int cmp_entries_sum(const struct tracing_map_sort_entry **a,
4799     return ret;
4800     }
4801    
4802     -static int cmp_entries_key(const struct tracing_map_sort_entry **a,
4803     - const struct tracing_map_sort_entry **b)
4804     +static int cmp_entries_key(const void *A, const void *B)
4805     {
4806     const struct tracing_map_elt *elt_a, *elt_b;
4807     + const struct tracing_map_sort_entry *a, *b;
4808     struct tracing_map_sort_key *sort_key;
4809     struct tracing_map_field *field;
4810     tracing_map_cmp_fn_t cmp_fn;
4811     void *val_a, *val_b;
4812     int ret = 0;
4813    
4814     - elt_a = (*a)->elt;
4815     - elt_b = (*b)->elt;
4816     + a = *(const struct tracing_map_sort_entry **)A;
4817     + b = *(const struct tracing_map_sort_entry **)B;
4818     +
4819     + elt_a = a->elt;
4820     + elt_b = b->elt;
4821    
4822     sort_key = &elt_a->map->sort_key;
4823    
4824     @@ -926,10 +935,8 @@ static void sort_secondary(struct tracing_map *map,
4825     struct tracing_map_sort_key *primary_key,
4826     struct tracing_map_sort_key *secondary_key)
4827     {
4828     - int (*primary_fn)(const struct tracing_map_sort_entry **,
4829     - const struct tracing_map_sort_entry **);
4830     - int (*secondary_fn)(const struct tracing_map_sort_entry **,
4831     - const struct tracing_map_sort_entry **);
4832     + int (*primary_fn)(const void *, const void *);
4833     + int (*secondary_fn)(const void *, const void *);
4834     unsigned i, start = 0, n_sub = 1;
4835    
4836     if (is_key(map, primary_key->field_idx))
4837     @@ -998,8 +1005,7 @@ int tracing_map_sort_entries(struct tracing_map *map,
4838     unsigned int n_sort_keys,
4839     struct tracing_map_sort_entry ***sort_entries)
4840     {
4841     - int (*cmp_entries_fn)(const struct tracing_map_sort_entry **,
4842     - const struct tracing_map_sort_entry **);
4843     + int (*cmp_entries_fn)(const void *, const void *);
4844     struct tracing_map_sort_entry *sort_entry, **entries;
4845     int i, n_entries, ret;
4846    
4847     diff --git a/lib/decompress_unxz.c b/lib/decompress_unxz.c
4848     index 25d59a95bd668..abea25310ac73 100644
4849     --- a/lib/decompress_unxz.c
4850     +++ b/lib/decompress_unxz.c
4851     @@ -167,7 +167,7 @@
4852     * memeq and memzero are not used much and any remotely sane implementation
4853     * is fast enough. memcpy/memmove speed matters in multi-call mode, but
4854     * the kernel image is decompressed in single-call mode, in which only
4855     - * memcpy speed can matter and only if there is a lot of uncompressible data
4856     + * memmove speed can matter and only if there is a lot of uncompressible data
4857     * (LZMA2 stores uncompressible chunks in uncompressed form). Thus, the
4858     * functions below should just be kept small; it's probably not worth
4859     * optimizing for speed.
4860     diff --git a/lib/xz/xz_dec_lzma2.c b/lib/xz/xz_dec_lzma2.c
4861     index 08c3c80499983..2c5197d6b944d 100644
4862     --- a/lib/xz/xz_dec_lzma2.c
4863     +++ b/lib/xz/xz_dec_lzma2.c
4864     @@ -387,7 +387,14 @@ static void dict_uncompressed(struct dictionary *dict, struct xz_buf *b,
4865    
4866     *left -= copy_size;
4867    
4868     - memcpy(dict->buf + dict->pos, b->in + b->in_pos, copy_size);
4869     + /*
4870     + * If doing in-place decompression in single-call mode and the
4871     + * uncompressed size of the file is larger than the caller
4872     + * thought (i.e. it is invalid input!), the buffers below may
4873     + * overlap and cause undefined behavior with memcpy().
4874     + * With valid inputs memcpy() would be fine here.
4875     + */
4876     + memmove(dict->buf + dict->pos, b->in + b->in_pos, copy_size);
4877     dict->pos += copy_size;
4878    
4879     if (dict->full < dict->pos)
4880     @@ -397,7 +404,11 @@ static void dict_uncompressed(struct dictionary *dict, struct xz_buf *b,
4881     if (dict->pos == dict->end)
4882     dict->pos = 0;
4883    
4884     - memcpy(b->out + b->out_pos, b->in + b->in_pos,
4885     + /*
4886     + * Like above but for multi-call mode: use memmove()
4887     + * to avoid undefined behavior with invalid input.
4888     + */
4889     + memmove(b->out + b->out_pos, b->in + b->in_pos,
4890     copy_size);
4891     }
4892    
4893     @@ -421,6 +432,12 @@ static uint32_t dict_flush(struct dictionary *dict, struct xz_buf *b)
4894     if (dict->pos == dict->end)
4895     dict->pos = 0;
4896    
4897     + /*
4898     + * These buffers cannot overlap even if doing in-place
4899     + * decompression because in multi-call mode dict->buf
4900     + * has been allocated by us in this file; it's not
4901     + * provided by the caller like in single-call mode.
4902     + */
4903     memcpy(b->out + b->out_pos, dict->buf + dict->start,
4904     copy_size);
4905     }
4906     diff --git a/lib/xz/xz_dec_stream.c b/lib/xz/xz_dec_stream.c
4907     index ac809b1e64f78..9e5b9ab537fea 100644
4908     --- a/lib/xz/xz_dec_stream.c
4909     +++ b/lib/xz/xz_dec_stream.c
4910     @@ -402,12 +402,12 @@ static enum xz_ret dec_stream_header(struct xz_dec *s)
4911     * we will accept other check types too, but then the check won't
4912     * be verified and a warning (XZ_UNSUPPORTED_CHECK) will be given.
4913     */
4914     + if (s->temp.buf[HEADER_MAGIC_SIZE + 1] > XZ_CHECK_MAX)
4915     + return XZ_OPTIONS_ERROR;
4916     +
4917     s->check_type = s->temp.buf[HEADER_MAGIC_SIZE + 1];
4918    
4919     #ifdef XZ_DEC_ANY_CHECK
4920     - if (s->check_type > XZ_CHECK_MAX)
4921     - return XZ_OPTIONS_ERROR;
4922     -
4923     if (s->check_type > XZ_CHECK_CRC32)
4924     return XZ_UNSUPPORTED_CHECK;
4925     #else
4926     diff --git a/mm/oom_kill.c b/mm/oom_kill.c
4927     index d514eebad905e..c78a6abb6f2b6 100644
4928     --- a/mm/oom_kill.c
4929     +++ b/mm/oom_kill.c
4930     @@ -1078,25 +1078,22 @@ bool out_of_memory(struct oom_control *oc)
4931     }
4932    
4933     /*
4934     - * The pagefault handler calls here because it is out of memory, so kill a
4935     - * memory-hogging task. If oom_lock is held by somebody else, a parallel oom
4936     - * killing is already in progress so do nothing.
4937     + * The pagefault handler calls here because some allocation has failed. We have
4938     + * to take care of the memcg OOM here because this is the only safe context without
4939     + * any locks held but let the oom killer triggered from the allocation context care
4940     + * about the global OOM.
4941     */
4942     void pagefault_out_of_memory(void)
4943     {
4944     - struct oom_control oc = {
4945     - .zonelist = NULL,
4946     - .nodemask = NULL,
4947     - .memcg = NULL,
4948     - .gfp_mask = 0,
4949     - .order = 0,
4950     - };
4951     + static DEFINE_RATELIMIT_STATE(pfoom_rs, DEFAULT_RATELIMIT_INTERVAL,
4952     + DEFAULT_RATELIMIT_BURST);
4953    
4954     if (mem_cgroup_oom_synchronize(true))
4955     return;
4956    
4957     - if (!mutex_trylock(&oom_lock))
4958     + if (fatal_signal_pending(current))
4959     return;
4960     - out_of_memory(&oc);
4961     - mutex_unlock(&oom_lock);
4962     +
4963     + if (__ratelimit(&pfoom_rs))
4964     + pr_warn("Huh VM_FAULT_OOM leaked out to the #PF handler. Retrying PF\n");
4965     }
4966     diff --git a/mm/slab.h b/mm/slab.h
4967     index ceb7d70cdb764..34929ac0ebead 100644
4968     --- a/mm/slab.h
4969     +++ b/mm/slab.h
4970     @@ -139,7 +139,7 @@ static inline unsigned long kmem_cache_flags(unsigned long object_size,
4971     #define SLAB_CACHE_FLAGS (SLAB_NOLEAKTRACE | SLAB_RECLAIM_ACCOUNT | \
4972     SLAB_TEMPORARY | SLAB_NOTRACK | SLAB_ACCOUNT)
4973     #else
4974     -#define SLAB_CACHE_FLAGS (0)
4975     +#define SLAB_CACHE_FLAGS (SLAB_NOLEAKTRACE)
4976     #endif
4977    
4978     #define CACHE_CREATE_MASK (SLAB_CORE_FLAGS | SLAB_DEBUG_FLAGS | SLAB_CACHE_FLAGS)
4979     diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c
4980     index 2b7bfd97587a0..b5c1cd4ba2a15 100644
4981     --- a/mm/zsmalloc.c
4982     +++ b/mm/zsmalloc.c
4983     @@ -1962,10 +1962,11 @@ static inline void zs_pool_dec_isolated(struct zs_pool *pool)
4984     VM_BUG_ON(atomic_long_read(&pool->isolated_pages) <= 0);
4985     atomic_long_dec(&pool->isolated_pages);
4986     /*
4987     - * There's no possibility of racing, since wait_for_isolated_drain()
4988     - * checks the isolated count under &class->lock after enqueuing
4989     - * on migration_wait.
4990     + * Checking pool->destroying must happen after atomic_long_dec()
4991     + * for pool->isolated_pages above. Paired with the smp_mb() in
4992     + * zs_unregister_migration().
4993     */
4994     + smp_mb__after_atomic();
4995     if (atomic_long_read(&pool->isolated_pages) == 0 && pool->destroying)
4996     wake_up_all(&pool->migration_wait);
4997     }
4998     diff --git a/net/batman-adv/bat_v_ogm.c b/net/batman-adv/bat_v_ogm.c
4999     index d2e6885479cb1..cb94ac9886181 100644
5000     --- a/net/batman-adv/bat_v_ogm.c
5001     +++ b/net/batman-adv/bat_v_ogm.c
5002     @@ -690,6 +690,12 @@ static void batadv_v_ogm_process(const struct sk_buff *skb, int ogm_offset,
5003     ntohl(ogm_packet->seqno), ogm_throughput, ogm_packet->ttl,
5004     ogm_packet->version, ntohs(ogm_packet->tvlv_len));
5005    
5006     + if (batadv_is_my_mac(bat_priv, ogm_packet->orig)) {
5007     + batadv_dbg(BATADV_DBG_BATMAN, bat_priv,
5008     + "Drop packet: originator packet from ourself\n");
5009     + return;
5010     + }
5011     +
5012     /* If the troughput metric is 0, immediately drop the packet. No need to
5013     * create orig_node / neigh_node for an unusable route.
5014     */
5015     @@ -788,11 +794,6 @@ int batadv_v_ogm_packet_recv(struct sk_buff *skb,
5016     if (batadv_is_my_mac(bat_priv, ethhdr->h_source))
5017     return NET_RX_DROP;
5018    
5019     - ogm_packet = (struct batadv_ogm2_packet *)skb->data;
5020     -
5021     - if (batadv_is_my_mac(bat_priv, ogm_packet->orig))
5022     - return NET_RX_DROP;
5023     -
5024     batadv_inc_counter(bat_priv, BATADV_CNT_MGMT_RX);
5025     batadv_add_counter(bat_priv, BATADV_CNT_MGMT_RX_BYTES,
5026     skb->len + ETH_HLEN);
5027     diff --git a/net/batman-adv/bridge_loop_avoidance.c b/net/batman-adv/bridge_loop_avoidance.c
5028     index dc635bd935846..a087f559f93e5 100644
5029     --- a/net/batman-adv/bridge_loop_avoidance.c
5030     +++ b/net/batman-adv/bridge_loop_avoidance.c
5031     @@ -1593,13 +1593,16 @@ int batadv_bla_init(struct batadv_priv *bat_priv)
5032     }
5033    
5034     /**
5035     - * batadv_bla_check_bcast_duplist - Check if a frame is in the broadcast dup.
5036     + * batadv_bla_check_duplist() - Check if a frame is in the broadcast dup.
5037     * @bat_priv: the bat priv with all the soft interface information
5038     - * @skb: contains the bcast_packet to be checked
5039     + * @skb: contains the multicast packet to be checked
5040     + * @payload_ptr: pointer to position inside the head buffer of the skb
5041     + * marking the start of the data to be CRC'ed
5042     + * @orig: originator mac address, NULL if unknown
5043     *
5044     - * check if it is on our broadcast list. Another gateway might
5045     - * have sent the same packet because it is connected to the same backbone,
5046     - * so we have to remove this duplicate.
5047     + * Check if it is on our broadcast list. Another gateway might have sent the
5048     + * same packet because it is connected to the same backbone, so we have to
5049     + * remove this duplicate.
5050     *
5051     * This is performed by checking the CRC, which will tell us
5052     * with a good chance that it is the same packet. If it is furthermore
5053     @@ -1608,19 +1611,17 @@ int batadv_bla_init(struct batadv_priv *bat_priv)
5054     *
5055     * Return: true if a packet is in the duplicate list, false otherwise.
5056     */
5057     -bool batadv_bla_check_bcast_duplist(struct batadv_priv *bat_priv,
5058     - struct sk_buff *skb)
5059     +static bool batadv_bla_check_duplist(struct batadv_priv *bat_priv,
5060     + struct sk_buff *skb, u8 *payload_ptr,
5061     + const u8 *orig)
5062     {
5063     - int i, curr;
5064     - __be32 crc;
5065     - struct batadv_bcast_packet *bcast_packet;
5066     struct batadv_bcast_duplist_entry *entry;
5067     bool ret = false;
5068     -
5069     - bcast_packet = (struct batadv_bcast_packet *)skb->data;
5070     + int i, curr;
5071     + __be32 crc;
5072    
5073     /* calculate the crc ... */
5074     - crc = batadv_skb_crc32(skb, (u8 *)(bcast_packet + 1));
5075     + crc = batadv_skb_crc32(skb, payload_ptr);
5076    
5077     spin_lock_bh(&bat_priv->bla.bcast_duplist_lock);
5078    
5079     @@ -1639,8 +1640,21 @@ bool batadv_bla_check_bcast_duplist(struct batadv_priv *bat_priv,
5080     if (entry->crc != crc)
5081     continue;
5082    
5083     - if (batadv_compare_eth(entry->orig, bcast_packet->orig))
5084     - continue;
5085     + /* are the originators both known and not anonymous? */
5086     + if (orig && !is_zero_ether_addr(orig) &&
5087     + !is_zero_ether_addr(entry->orig)) {
5088     + /* If known, check if the new frame came from
5089     + * the same originator:
5090     + * We are safe to take identical frames from the
5091     + * same orig, if known, as multiplications in
5092     + * the mesh are detected via the (orig, seqno) pair.
5093     + * So we can be a bit more liberal here and allow
5094     + * identical frames from the same orig which the source
5095     + * host might have sent multiple times on purpose.
5096     + */
5097     + if (batadv_compare_eth(entry->orig, orig))
5098     + continue;
5099     + }
5100    
5101     /* this entry seems to match: same crc, not too old,
5102     * and from another gw. therefore return true to forbid it.
5103     @@ -1656,7 +1670,14 @@ bool batadv_bla_check_bcast_duplist(struct batadv_priv *bat_priv,
5104     entry = &bat_priv->bla.bcast_duplist[curr];
5105     entry->crc = crc;
5106     entry->entrytime = jiffies;
5107     - ether_addr_copy(entry->orig, bcast_packet->orig);
5108     +
5109     + /* known originator */
5110     + if (orig)
5111     + ether_addr_copy(entry->orig, orig);
5112     + /* anonymous originator */
5113     + else
5114     + eth_zero_addr(entry->orig);
5115     +
5116     bat_priv->bla.bcast_duplist_curr = curr;
5117    
5118     out:
5119     @@ -1665,6 +1686,48 @@ out:
5120     return ret;
5121     }
5122    
5123     +/**
5124     + * batadv_bla_check_ucast_duplist() - Check if a frame is in the broadcast dup.
5125     + * @bat_priv: the bat priv with all the soft interface information
5126     + * @skb: contains the multicast packet to be checked, decapsulated from a
5127     + * unicast_packet
5128     + *
5129     + * Check if it is on our broadcast list. Another gateway might have sent the
5130     + * same packet because it is connected to the same backbone, so we have to
5131     + * remove this duplicate.
5132     + *
5133     + * Return: true if a packet is in the duplicate list, false otherwise.
5134     + */
5135     +static bool batadv_bla_check_ucast_duplist(struct batadv_priv *bat_priv,
5136     + struct sk_buff *skb)
5137     +{
5138     + return batadv_bla_check_duplist(bat_priv, skb, (u8 *)skb->data, NULL);
5139     +}
5140     +
5141     +/**
5142     + * batadv_bla_check_bcast_duplist() - Check if a frame is in the broadcast dup.
5143     + * @bat_priv: the bat priv with all the soft interface information
5144     + * @skb: contains the bcast_packet to be checked
5145     + *
5146     + * Check if it is on our broadcast list. Another gateway might have sent the
5147     + * same packet because it is connected to the same backbone, so we have to
5148     + * remove this duplicate.
5149     + *
5150     + * Return: true if a packet is in the duplicate list, false otherwise.
5151     + */
5152     +bool batadv_bla_check_bcast_duplist(struct batadv_priv *bat_priv,
5153     + struct sk_buff *skb)
5154     +{
5155     + struct batadv_bcast_packet *bcast_packet;
5156     + u8 *payload_ptr;
5157     +
5158     + bcast_packet = (struct batadv_bcast_packet *)skb->data;
5159     + payload_ptr = (u8 *)(bcast_packet + 1);
5160     +
5161     + return batadv_bla_check_duplist(bat_priv, skb, payload_ptr,
5162     + bcast_packet->orig);
5163     +}
5164     +
5165     /**
5166     * batadv_bla_is_backbone_gw_orig - Check if the originator is a gateway for
5167     * the VLAN identified by vid.
5168     @@ -1879,6 +1942,14 @@ bool batadv_bla_rx(struct batadv_priv *bat_priv, struct sk_buff *skb,
5169     packet_type == BATADV_UNICAST)
5170     goto handled;
5171    
5172     + /* potential duplicates from foreign BLA backbone gateways via
5173     + * multicast-in-unicast packets
5174     + */
5175     + if (is_multicast_ether_addr(ethhdr->h_dest) &&
5176     + packet_type == BATADV_UNICAST &&
5177     + batadv_bla_check_ucast_duplist(bat_priv, skb))
5178     + goto handled;
5179     +
5180     ether_addr_copy(search_claim.addr, ethhdr->h_source);
5181     search_claim.vid = vid;
5182     claim = batadv_claim_hash_find(bat_priv, &search_claim);
5183     diff --git a/net/batman-adv/fragmentation.c b/net/batman-adv/fragmentation.c
5184     index fef21f75892e4..343f4fc5909d7 100644
5185     --- a/net/batman-adv/fragmentation.c
5186     +++ b/net/batman-adv/fragmentation.c
5187     @@ -394,9 +394,10 @@ out:
5188    
5189     /**
5190     * batadv_frag_create - create a fragment from skb
5191     + * @net_dev: outgoing device for fragment
5192     * @skb: skb to create fragment from
5193     * @frag_head: header to use in new fragment
5194     - * @mtu: size of new fragment
5195     + * @fragment_size: size of new fragment
5196     *
5197     * Split the passed skb into two fragments: A new one with size matching the
5198     * passed mtu and the old one with the rest. The new skb contains data from the
5199     @@ -404,22 +405,25 @@ out:
5200     *
5201     * Return: the new fragment, NULL on error.
5202     */
5203     -static struct sk_buff *batadv_frag_create(struct sk_buff *skb,
5204     +static struct sk_buff *batadv_frag_create(struct net_device *net_dev,
5205     + struct sk_buff *skb,
5206     struct batadv_frag_packet *frag_head,
5207     - unsigned int mtu)
5208     + unsigned int fragment_size)
5209     {
5210     + unsigned int ll_reserved = LL_RESERVED_SPACE(net_dev);
5211     + unsigned int tailroom = net_dev->needed_tailroom;
5212     struct sk_buff *skb_fragment;
5213     unsigned int header_size = sizeof(*frag_head);
5214     - unsigned int fragment_size = mtu - header_size;
5215     + unsigned int mtu = fragment_size + header_size;
5216    
5217     - skb_fragment = netdev_alloc_skb(NULL, mtu + ETH_HLEN);
5218     + skb_fragment = dev_alloc_skb(ll_reserved + mtu + tailroom);
5219     if (!skb_fragment)
5220     goto err;
5221    
5222     skb_fragment->priority = skb->priority;
5223    
5224     /* Eat the last mtu-bytes of the skb */
5225     - skb_reserve(skb_fragment, header_size + ETH_HLEN);
5226     + skb_reserve(skb_fragment, ll_reserved + header_size);
5227     skb_split(skb, skb_fragment, skb->len - fragment_size);
5228    
5229     /* Add the header */
5230     @@ -443,13 +447,14 @@ int batadv_frag_send_packet(struct sk_buff *skb,
5231     struct batadv_orig_node *orig_node,
5232     struct batadv_neigh_node *neigh_node)
5233     {
5234     + struct net_device *net_dev = neigh_node->if_incoming->net_dev;
5235     struct batadv_priv *bat_priv;
5236     struct batadv_hard_iface *primary_if = NULL;
5237     struct batadv_frag_packet frag_header;
5238     struct sk_buff *skb_fragment;
5239     - unsigned int mtu = neigh_node->if_incoming->net_dev->mtu;
5240     + unsigned int mtu = net_dev->mtu;
5241     unsigned int header_size = sizeof(frag_header);
5242     - unsigned int max_fragment_size, max_packet_size;
5243     + unsigned int max_fragment_size, num_fragments;
5244     int ret = -1;
5245    
5246     /* To avoid merge and refragmentation at next-hops we never send
5247     @@ -457,10 +462,15 @@ int batadv_frag_send_packet(struct sk_buff *skb,
5248     */
5249     mtu = min_t(unsigned int, mtu, BATADV_FRAG_MAX_FRAG_SIZE);
5250     max_fragment_size = mtu - header_size;
5251     - max_packet_size = max_fragment_size * BATADV_FRAG_MAX_FRAGMENTS;
5252     +
5253     + if (skb->len == 0 || max_fragment_size == 0)
5254     + return -EINVAL;
5255     +
5256     + num_fragments = (skb->len - 1) / max_fragment_size + 1;
5257     + max_fragment_size = (skb->len - 1) / num_fragments + 1;
5258    
5259     /* Don't even try to fragment, if we need more than 16 fragments */
5260     - if (skb->len > max_packet_size)
5261     + if (num_fragments > BATADV_FRAG_MAX_FRAGMENTS)
5262     goto out;
5263    
5264     bat_priv = orig_node->bat_priv;
5265     @@ -498,7 +508,8 @@ int batadv_frag_send_packet(struct sk_buff *skb,
5266     goto out;
5267     }
5268    
5269     - skb_fragment = batadv_frag_create(skb, &frag_header, mtu);
5270     + skb_fragment = batadv_frag_create(net_dev, skb, &frag_header,
5271     + max_fragment_size);
5272     if (!skb_fragment)
5273     goto out;
5274    
5275     @@ -517,11 +528,14 @@ int batadv_frag_send_packet(struct sk_buff *skb,
5276     frag_header.no++;
5277     }
5278    
5279     - /* Make room for the fragment header. */
5280     - if (batadv_skb_head_push(skb, header_size) < 0 ||
5281     - pskb_expand_head(skb, header_size + ETH_HLEN, 0, GFP_ATOMIC) < 0)
5282     + /* make sure that there is at least enough head for the fragmentation
5283     + * and ethernet headers
5284     + */
5285     + ret = skb_cow_head(skb, ETH_HLEN + header_size);
5286     + if (ret < 0)
5287     goto out;
5288    
5289     + skb_push(skb, header_size);
5290     memcpy(skb->data, &frag_header, header_size);
5291    
5292     /* Send the last fragment */
5293     diff --git a/net/batman-adv/hard-interface.c b/net/batman-adv/hard-interface.c
5294     index f528761674df9..4f384abb4cedd 100644
5295     --- a/net/batman-adv/hard-interface.c
5296     +++ b/net/batman-adv/hard-interface.c
5297     @@ -359,6 +359,9 @@ static void batadv_hardif_recalc_extra_skbroom(struct net_device *soft_iface)
5298     needed_headroom = lower_headroom + (lower_header_len - ETH_HLEN);
5299     needed_headroom += batadv_max_header_len();
5300    
5301     + /* fragmentation headers don't strip the unicast/... header */
5302     + needed_headroom += sizeof(struct batadv_frag_packet);
5303     +
5304     soft_iface->needed_headroom = needed_headroom;
5305     soft_iface->needed_tailroom = lower_tailroom;
5306     }
5307     diff --git a/net/batman-adv/multicast.c b/net/batman-adv/multicast.c
5308     index 5a2aac17805ba..283ac3fb94293 100644
5309     --- a/net/batman-adv/multicast.c
5310     +++ b/net/batman-adv/multicast.c
5311     @@ -53,10 +53,12 @@
5312     #include <net/ip.h>
5313     #include <net/ipv6.h>
5314    
5315     +#include "bridge_loop_avoidance.h"
5316     #include "hard-interface.h"
5317     #include "hash.h"
5318     #include "log.h"
5319     #include "packet.h"
5320     +#include "send.h"
5321     #include "translation-table.h"
5322     #include "tvlv.h"
5323    
5324     @@ -1251,6 +1253,35 @@ void batadv_mcast_free(struct batadv_priv *bat_priv)
5325     spin_unlock_bh(&bat_priv->tt.commit_lock);
5326     }
5327    
5328     +/**
5329     + * batadv_mcast_forw_send_orig() - send a multicast packet to an originator
5330     + * @bat_priv: the bat priv with all the soft interface information
5331     + * @skb: the multicast packet to send
5332     + * @vid: the vlan identifier
5333     + * @orig_node: the originator to send the packet to
5334     + *
5335     + * Return: NET_XMIT_DROP in case of error or NET_XMIT_SUCCESS otherwise.
5336     + */
5337     +int batadv_mcast_forw_send_orig(struct batadv_priv *bat_priv,
5338     + struct sk_buff *skb,
5339     + unsigned short vid,
5340     + struct batadv_orig_node *orig_node)
5341     +{
5342     + /* Avoid sending multicast-in-unicast packets to other BLA
5343     + * gateways - they already got the frame from the LAN side
5344     + * we share with them.
5345     + * TODO: Refactor to take BLA into account earlier, to avoid
5346     + * reducing the mcast_fanout count.
5347     + */
5348     + if (batadv_bla_is_backbone_gw_orig(bat_priv, orig_node->orig, vid)) {
5349     + dev_kfree_skb(skb);
5350     + return NET_XMIT_SUCCESS;
5351     + }
5352     +
5353     + return batadv_send_skb_unicast(bat_priv, skb, BATADV_UNICAST, 0,
5354     + orig_node, vid);
5355     +}
5356     +
5357     /**
5358     * batadv_mcast_purge_orig - reset originator global mcast state modifications
5359     * @orig: the originator which is going to get purged
5360     diff --git a/net/batman-adv/multicast.h b/net/batman-adv/multicast.h
5361     index 1fb00ba84907a..751f547561643 100644
5362     --- a/net/batman-adv/multicast.h
5363     +++ b/net/batman-adv/multicast.h
5364     @@ -45,6 +45,11 @@ enum batadv_forw_mode
5365     batadv_mcast_forw_mode(struct batadv_priv *bat_priv, struct sk_buff *skb,
5366     struct batadv_orig_node **mcast_single_orig);
5367    
5368     +int batadv_mcast_forw_send_orig(struct batadv_priv *bat_priv,
5369     + struct sk_buff *skb,
5370     + unsigned short vid,
5371     + struct batadv_orig_node *orig_node);
5372     +
5373     void batadv_mcast_init(struct batadv_priv *bat_priv);
5374    
5375     int batadv_mcast_flags_seq_print_text(struct seq_file *seq, void *offset);
5376     @@ -71,6 +76,16 @@ static inline int batadv_mcast_init(struct batadv_priv *bat_priv)
5377     return 0;
5378     }
5379    
5380     +static inline int
5381     +batadv_mcast_forw_send_orig(struct batadv_priv *bat_priv,
5382     + struct sk_buff *skb,
5383     + unsigned short vid,
5384     + struct batadv_orig_node *orig_node)
5385     +{
5386     + kfree_skb(skb);
5387     + return NET_XMIT_DROP;
5388     +}
5389     +
5390     static inline void batadv_mcast_free(struct batadv_priv *bat_priv)
5391     {
5392     }
5393     diff --git a/net/batman-adv/soft-interface.c b/net/batman-adv/soft-interface.c
5394     index af0a8439cf08a..4805c98588dc1 100644
5395     --- a/net/batman-adv/soft-interface.c
5396     +++ b/net/batman-adv/soft-interface.c
5397     @@ -356,9 +356,8 @@ send:
5398     goto dropped;
5399     ret = batadv_send_skb_via_gw(bat_priv, skb, vid);
5400     } else if (mcast_single_orig) {
5401     - ret = batadv_send_skb_unicast(bat_priv, skb,
5402     - BATADV_UNICAST, 0,
5403     - mcast_single_orig, vid);
5404     + ret = batadv_mcast_forw_send_orig(bat_priv, skb, vid,
5405     + mcast_single_orig);
5406     } else {
5407     if (batadv_dat_snoop_outgoing_arp_request(bat_priv,
5408     skb))
5409     diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c
5410     index f46f59129bf39..a47430d843dcf 100644
5411     --- a/net/bluetooth/l2cap_sock.c
5412     +++ b/net/bluetooth/l2cap_sock.c
5413     @@ -1319,6 +1319,9 @@ static void l2cap_sock_close_cb(struct l2cap_chan *chan)
5414     {
5415     struct sock *sk = chan->data;
5416    
5417     + if (!sk)
5418     + return;
5419     +
5420     l2cap_sock_kill(sk);
5421     }
5422    
5423     @@ -1327,6 +1330,9 @@ static void l2cap_sock_teardown_cb(struct l2cap_chan *chan, int err)
5424     struct sock *sk = chan->data;
5425     struct sock *parent;
5426    
5427     + if (!sk)
5428     + return;
5429     +
5430     BT_DBG("chan %p state %s", chan, state_to_string(chan->state));
5431    
5432     /* This callback can be called both for server (BT_LISTEN)
5433     @@ -1510,8 +1516,10 @@ static void l2cap_sock_destruct(struct sock *sk)
5434     {
5435     BT_DBG("sk %p", sk);
5436    
5437     - if (l2cap_pi(sk)->chan)
5438     + if (l2cap_pi(sk)->chan) {
5439     + l2cap_pi(sk)->chan->data = NULL;
5440     l2cap_chan_put(l2cap_pi(sk)->chan);
5441     + }
5442    
5443     if (l2cap_pi(sk)->rx_busy_skb) {
5444     kfree_skb(l2cap_pi(sk)->rx_busy_skb);
5445     diff --git a/net/bluetooth/sco.c b/net/bluetooth/sco.c
5446     index 77f88c7df6053..b3b4ffaa394f6 100644
5447     --- a/net/bluetooth/sco.c
5448     +++ b/net/bluetooth/sco.c
5449     @@ -254,7 +254,8 @@ static int sco_connect(struct hci_dev *hdev, struct sock *sk)
5450     return err;
5451     }
5452    
5453     -static int sco_send_frame(struct sock *sk, struct msghdr *msg, int len)
5454     +static int sco_send_frame(struct sock *sk, void *buf, int len,
5455     + unsigned int msg_flags)
5456     {
5457     struct sco_conn *conn = sco_pi(sk)->conn;
5458     struct sk_buff *skb;
5459     @@ -266,15 +267,11 @@ static int sco_send_frame(struct sock *sk, struct msghdr *msg, int len)
5460    
5461     BT_DBG("sk %p len %d", sk, len);
5462    
5463     - skb = bt_skb_send_alloc(sk, len, msg->msg_flags & MSG_DONTWAIT, &err);
5464     + skb = bt_skb_send_alloc(sk, len, msg_flags & MSG_DONTWAIT, &err);
5465     if (!skb)
5466     return err;
5467    
5468     - if (memcpy_from_msg(skb_put(skb, len), msg, len)) {
5469     - kfree_skb(skb);
5470     - return -EFAULT;
5471     - }
5472     -
5473     + memcpy(skb_put(skb, len), buf, len);
5474     hci_send_sco(conn->hcon, skb);
5475    
5476     return len;
5477     @@ -693,6 +690,7 @@ static int sco_sock_sendmsg(struct socket *sock, struct msghdr *msg,
5478     size_t len)
5479     {
5480     struct sock *sk = sock->sk;
5481     + void *buf;
5482     int err;
5483    
5484     BT_DBG("sock %p, sk %p", sock, sk);
5485     @@ -704,14 +702,24 @@ static int sco_sock_sendmsg(struct socket *sock, struct msghdr *msg,
5486     if (msg->msg_flags & MSG_OOB)
5487     return -EOPNOTSUPP;
5488    
5489     + buf = kmalloc(len, GFP_KERNEL);
5490     + if (!buf)
5491     + return -ENOMEM;
5492     +
5493     + if (memcpy_from_msg(buf, msg, len)) {
5494     + kfree(buf);
5495     + return -EFAULT;
5496     + }
5497     +
5498     lock_sock(sk);
5499    
5500     if (sk->sk_state == BT_CONNECTED)
5501     - err = sco_send_frame(sk, msg, len);
5502     + err = sco_send_frame(sk, buf, len, msg->msg_flags);
5503     else
5504     err = -ENOTCONN;
5505    
5506     release_sock(sk);
5507     + kfree(buf);
5508     return err;
5509     }
5510    
5511     diff --git a/net/core/stream.c b/net/core/stream.c
5512     index 6e41b20bf9f86..05b63feac7e57 100644
5513     --- a/net/core/stream.c
5514     +++ b/net/core/stream.c
5515     @@ -193,9 +193,6 @@ void sk_stream_kill_queues(struct sock *sk)
5516     /* First the read buffer. */
5517     __skb_queue_purge(&sk->sk_receive_queue);
5518    
5519     - /* Next, the error queue. */
5520     - __skb_queue_purge(&sk->sk_error_queue);
5521     -
5522     /* Next, the write queue. */
5523     WARN_ON(!skb_queue_empty(&sk->sk_write_queue));
5524    
5525     diff --git a/net/core/sysctl_net_core.c b/net/core/sysctl_net_core.c
5526     index b4318c1b5b960..f62e177267c34 100644
5527     --- a/net/core/sysctl_net_core.c
5528     +++ b/net/core/sysctl_net_core.c
5529     @@ -368,7 +368,7 @@ static struct ctl_table net_core_table[] = {
5530     .mode = 0600,
5531     .proc_handler = proc_dolongvec_minmax_bpf_restricted,
5532     .extra1 = &long_one,
5533     - .extra2 = &long_max,
5534     + .extra2 = &bpf_jit_limit_max,
5535     },
5536     #endif
5537     {
5538     diff --git a/net/netfilter/nfnetlink_queue.c b/net/netfilter/nfnetlink_queue.c
5539     index 2a811b5634d46..a35510565d4d1 100644
5540     --- a/net/netfilter/nfnetlink_queue.c
5541     +++ b/net/netfilter/nfnetlink_queue.c
5542     @@ -539,7 +539,7 @@ nfqnl_build_packet_message(struct net *net, struct nfqnl_instance *queue,
5543     goto nla_put_failure;
5544    
5545     if (indev && entskb->dev &&
5546     - entskb->mac_header != entskb->network_header) {
5547     + skb_mac_header_was_set(entskb)) {
5548     struct nfqnl_msg_packet_hw phw;
5549     int len;
5550    
5551     diff --git a/net/nfc/core.c b/net/nfc/core.c
5552     index c699d64a0753a..32a2dfc08f480 100644
5553     --- a/net/nfc/core.c
5554     +++ b/net/nfc/core.c
5555     @@ -106,13 +106,13 @@ int nfc_dev_up(struct nfc_dev *dev)
5556    
5557     device_lock(&dev->dev);
5558    
5559     - if (dev->rfkill && rfkill_blocked(dev->rfkill)) {
5560     - rc = -ERFKILL;
5561     + if (!device_is_registered(&dev->dev)) {
5562     + rc = -ENODEV;
5563     goto error;
5564     }
5565    
5566     - if (!device_is_registered(&dev->dev)) {
5567     - rc = -ENODEV;
5568     + if (dev->rfkill && rfkill_blocked(dev->rfkill)) {
5569     + rc = -ERFKILL;
5570     goto error;
5571     }
5572    
5573     @@ -1133,11 +1133,7 @@ int nfc_register_device(struct nfc_dev *dev)
5574     if (rc)
5575     pr_err("Could not register llcp device\n");
5576    
5577     - rc = nfc_genl_device_added(dev);
5578     - if (rc)
5579     - pr_debug("The userspace won't be notified that the device %s was added\n",
5580     - dev_name(&dev->dev));
5581     -
5582     + device_lock(&dev->dev);
5583     dev->rfkill = rfkill_alloc(dev_name(&dev->dev), &dev->dev,
5584     RFKILL_TYPE_NFC, &nfc_rfkill_ops, dev);
5585     if (dev->rfkill) {
5586     @@ -1146,6 +1142,12 @@ int nfc_register_device(struct nfc_dev *dev)
5587     dev->rfkill = NULL;
5588     }
5589     }
5590     + device_unlock(&dev->dev);
5591     +
5592     + rc = nfc_genl_device_added(dev);
5593     + if (rc)
5594     + pr_debug("The userspace won't be notified that the device %s was added\n",
5595     + dev_name(&dev->dev));
5596    
5597     return 0;
5598     }
5599     @@ -1162,10 +1164,17 @@ void nfc_unregister_device(struct nfc_dev *dev)
5600    
5601     pr_debug("dev_name=%s\n", dev_name(&dev->dev));
5602    
5603     + rc = nfc_genl_device_removed(dev);
5604     + if (rc)
5605     + pr_debug("The userspace won't be notified that the device %s "
5606     + "was removed\n", dev_name(&dev->dev));
5607     +
5608     + device_lock(&dev->dev);
5609     if (dev->rfkill) {
5610     rfkill_unregister(dev->rfkill);
5611     rfkill_destroy(dev->rfkill);
5612     }
5613     + device_unlock(&dev->dev);
5614    
5615     if (dev->ops->check_presence) {
5616     device_lock(&dev->dev);
5617     @@ -1175,11 +1184,6 @@ void nfc_unregister_device(struct nfc_dev *dev)
5618     cancel_work_sync(&dev->check_pres_work);
5619     }
5620    
5621     - rc = nfc_genl_device_removed(dev);
5622     - if (rc)
5623     - pr_debug("The userspace won't be notified that the device %s "
5624     - "was removed\n", dev_name(&dev->dev));
5625     -
5626     nfc_llcp_unregister_device(dev);
5627    
5628     mutex_lock(&nfc_devlist_mutex);
5629     diff --git a/net/nfc/nci/core.c b/net/nfc/nci/core.c
5630     index bff6ba84d3979..19518a231e571 100644
5631     --- a/net/nfc/nci/core.c
5632     +++ b/net/nfc/nci/core.c
5633     @@ -157,12 +157,15 @@ inline int nci_request(struct nci_dev *ndev,
5634     {
5635     int rc;
5636    
5637     - if (!test_bit(NCI_UP, &ndev->flags))
5638     - return -ENETDOWN;
5639     -
5640     /* Serialize all requests */
5641     mutex_lock(&ndev->req_lock);
5642     - rc = __nci_request(ndev, req, opt, timeout);
5643     + /* check the state after obtaing the lock against any races
5644     + * from nci_close_device when the device gets removed.
5645     + */
5646     + if (test_bit(NCI_UP, &ndev->flags))
5647     + rc = __nci_request(ndev, req, opt, timeout);
5648     + else
5649     + rc = -ENETDOWN;
5650     mutex_unlock(&ndev->req_lock);
5651    
5652     return rc;
5653     diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c
5654     index 2fecdfe49bae3..95470d628d34b 100644
5655     --- a/net/vmw_vsock/af_vsock.c
5656     +++ b/net/vmw_vsock/af_vsock.c
5657     @@ -1173,6 +1173,8 @@ static int vsock_stream_connect(struct socket *sock, struct sockaddr *addr,
5658     * non-blocking call.
5659     */
5660     err = -EALREADY;
5661     + if (flags & O_NONBLOCK)
5662     + goto out;
5663     break;
5664     default:
5665     if ((sk->sk_state == VSOCK_SS_LISTEN) ||
5666     diff --git a/net/wireless/util.c b/net/wireless/util.c
5667     index a16e805c4857f..71f9c14174b55 100644
5668     --- a/net/wireless/util.c
5669     +++ b/net/wireless/util.c
5670     @@ -1035,6 +1035,7 @@ int cfg80211_change_iface(struct cfg80211_registered_device *rdev,
5671    
5672     switch (otype) {
5673     case NL80211_IFTYPE_AP:
5674     + case NL80211_IFTYPE_P2P_GO:
5675     cfg80211_stop_ap(rdev, dev, true);
5676     break;
5677     case NL80211_IFTYPE_ADHOC:
5678     diff --git a/samples/kprobes/kretprobe_example.c b/samples/kprobes/kretprobe_example.c
5679     index 7f9060f435cde..da6de5e78e1dd 100644
5680     --- a/samples/kprobes/kretprobe_example.c
5681     +++ b/samples/kprobes/kretprobe_example.c
5682     @@ -83,7 +83,7 @@ static int __init kretprobe_init(void)
5683     ret = register_kretprobe(&my_kretprobe);
5684     if (ret < 0) {
5685     pr_err("register_kretprobe failed, returned %d\n", ret);
5686     - return -1;
5687     + return ret;
5688     }
5689     pr_info("Planted return probe at %s: %p\n",
5690     my_kretprobe.kp.symbol_name, my_kretprobe.kp.addr);
5691     diff --git a/security/integrity/evm/evm_main.c b/security/integrity/evm/evm_main.c
5692     index 976b8dce64966..0138932ef34de 100644
5693     --- a/security/integrity/evm/evm_main.c
5694     +++ b/security/integrity/evm/evm_main.c
5695     @@ -54,7 +54,7 @@ char *evm_config_xattrnames[] = {
5696     NULL
5697     };
5698    
5699     -static int evm_fixmode;
5700     +static int evm_fixmode __ro_after_init;
5701     static int __init evm_set_fixmode(char *str)
5702     {
5703     if (strncmp(str, "fix", 3) == 0)
5704     diff --git a/security/security.c b/security/security.c
5705     index 112df16be770d..9a13d72a64465 100644
5706     --- a/security/security.c
5707     +++ b/security/security.c
5708     @@ -131,25 +131,25 @@ int __init security_module_enable(const char *module)
5709    
5710     /* Security operations */
5711    
5712     -int security_binder_set_context_mgr(struct task_struct *mgr)
5713     +int security_binder_set_context_mgr(const struct cred *mgr)
5714     {
5715     return call_int_hook(binder_set_context_mgr, 0, mgr);
5716     }
5717    
5718     -int security_binder_transaction(struct task_struct *from,
5719     - struct task_struct *to)
5720     +int security_binder_transaction(const struct cred *from,
5721     + const struct cred *to)
5722     {
5723     return call_int_hook(binder_transaction, 0, from, to);
5724     }
5725    
5726     -int security_binder_transfer_binder(struct task_struct *from,
5727     - struct task_struct *to)
5728     +int security_binder_transfer_binder(const struct cred *from,
5729     + const struct cred *to)
5730     {
5731     return call_int_hook(binder_transfer_binder, 0, from, to);
5732     }
5733    
5734     -int security_binder_transfer_file(struct task_struct *from,
5735     - struct task_struct *to, struct file *file)
5736     +int security_binder_transfer_file(const struct cred *from,
5737     + const struct cred *to, struct file *file)
5738     {
5739     return call_int_hook(binder_transfer_file, 0, from, to, file);
5740     }
5741     diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
5742     index a2b63a6a33c7e..607c7fc4f24d3 100644
5743     --- a/security/selinux/hooks.c
5744     +++ b/security/selinux/hooks.c
5745     @@ -2065,21 +2065,18 @@ static inline u32 open_file_to_av(struct file *file)
5746    
5747     /* Hook functions begin here. */
5748    
5749     -static int selinux_binder_set_context_mgr(struct task_struct *mgr)
5750     +static int selinux_binder_set_context_mgr(const struct cred *mgr)
5751     {
5752     - u32 mysid = current_sid();
5753     - u32 mgrsid = task_sid(mgr);
5754     -
5755     - return avc_has_perm(mysid, mgrsid, SECCLASS_BINDER,
5756     + return avc_has_perm(current_sid(), cred_sid(mgr), SECCLASS_BINDER,
5757     BINDER__SET_CONTEXT_MGR, NULL);
5758     }
5759    
5760     -static int selinux_binder_transaction(struct task_struct *from,
5761     - struct task_struct *to)
5762     +static int selinux_binder_transaction(const struct cred *from,
5763     + const struct cred *to)
5764     {
5765     u32 mysid = current_sid();
5766     - u32 fromsid = task_sid(from);
5767     - u32 tosid = task_sid(to);
5768     + u32 fromsid = cred_sid(from);
5769     + u32 tosid = cred_sid(to);
5770     int rc;
5771    
5772     if (mysid != fromsid) {
5773     @@ -2093,21 +2090,19 @@ static int selinux_binder_transaction(struct task_struct *from,
5774     NULL);
5775     }
5776    
5777     -static int selinux_binder_transfer_binder(struct task_struct *from,
5778     - struct task_struct *to)
5779     +static int selinux_binder_transfer_binder(const struct cred *from,
5780     + const struct cred *to)
5781     {
5782     - u32 fromsid = task_sid(from);
5783     - u32 tosid = task_sid(to);
5784     -
5785     - return avc_has_perm(fromsid, tosid, SECCLASS_BINDER, BINDER__TRANSFER,
5786     + return avc_has_perm(cred_sid(from), cred_sid(to),
5787     + SECCLASS_BINDER, BINDER__TRANSFER,
5788     NULL);
5789     }
5790    
5791     -static int selinux_binder_transfer_file(struct task_struct *from,
5792     - struct task_struct *to,
5793     +static int selinux_binder_transfer_file(const struct cred *from,
5794     + const struct cred *to,
5795     struct file *file)
5796     {
5797     - u32 sid = task_sid(to);
5798     + u32 sid = cred_sid(to);
5799     struct file_security_struct *fsec = file->f_security;
5800     struct dentry *dentry = file->f_path.dentry;
5801     struct inode_security_struct *isec;
5802     diff --git a/security/smack/smackfs.c b/security/smack/smackfs.c
5803     index 966d30bf2e388..ed5b89fbbd96f 100644
5804     --- a/security/smack/smackfs.c
5805     +++ b/security/smack/smackfs.c
5806     @@ -716,9 +716,7 @@ static void smk_cipso_doi(void)
5807     printk(KERN_WARNING "%s:%d remove rc = %d\n",
5808     __func__, __LINE__, rc);
5809    
5810     - doip = kmalloc(sizeof(struct cipso_v4_doi), GFP_KERNEL);
5811     - if (doip == NULL)
5812     - panic("smack: Failed to initialize cipso DOI.\n");
5813     + doip = kmalloc(sizeof(struct cipso_v4_doi), GFP_KERNEL | __GFP_NOFAIL);
5814     doip->map.std = NULL;
5815     doip->doi = smk_cipso_doi_value;
5816     doip->type = CIPSO_V4_MAP_PASS;
5817     @@ -737,7 +735,7 @@ static void smk_cipso_doi(void)
5818     if (rc != 0) {
5819     printk(KERN_WARNING "%s:%d map add rc = %d\n",
5820     __func__, __LINE__, rc);
5821     - kfree(doip);
5822     + netlbl_cfg_cipsov4_del(doip->doi, &nai);
5823     return;
5824     }
5825     }
5826     @@ -854,6 +852,7 @@ static int smk_open_cipso(struct inode *inode, struct file *file)
5827     static ssize_t smk_set_cipso(struct file *file, const char __user *buf,
5828     size_t count, loff_t *ppos, int format)
5829     {
5830     + struct netlbl_lsm_catmap *old_cat;
5831     struct smack_known *skp;
5832     struct netlbl_lsm_secattr ncats;
5833     char mapcatset[SMK_CIPSOLEN];
5834     @@ -943,9 +942,11 @@ static ssize_t smk_set_cipso(struct file *file, const char __user *buf,
5835    
5836     rc = smk_netlbl_mls(maplevel, mapcatset, &ncats, SMK_CIPSOLEN);
5837     if (rc >= 0) {
5838     - netlbl_catmap_free(skp->smk_netlabel.attr.mls.cat);
5839     + old_cat = skp->smk_netlabel.attr.mls.cat;
5840     skp->smk_netlabel.attr.mls.cat = ncats.attr.mls.cat;
5841     skp->smk_netlabel.attr.mls.lvl = ncats.attr.mls.lvl;
5842     + synchronize_rcu();
5843     + netlbl_catmap_free(old_cat);
5844     rc = count;
5845     }
5846    
5847     diff --git a/sound/core/oss/mixer_oss.c b/sound/core/oss/mixer_oss.c
5848     index 2ff9c12d664a8..1845db338d0f6 100644
5849     --- a/sound/core/oss/mixer_oss.c
5850     +++ b/sound/core/oss/mixer_oss.c
5851     @@ -145,11 +145,13 @@ static int snd_mixer_oss_devmask(struct snd_mixer_oss_file *fmixer)
5852    
5853     if (mixer == NULL)
5854     return -EIO;
5855     + mutex_lock(&mixer->reg_mutex);
5856     for (chn = 0; chn < 31; chn++) {
5857     pslot = &mixer->slots[chn];
5858     if (pslot->put_volume || pslot->put_recsrc)
5859     result |= 1 << chn;
5860     }
5861     + mutex_unlock(&mixer->reg_mutex);
5862     return result;
5863     }
5864    
5865     @@ -161,11 +163,13 @@ static int snd_mixer_oss_stereodevs(struct snd_mixer_oss_file *fmixer)
5866    
5867     if (mixer == NULL)
5868     return -EIO;
5869     + mutex_lock(&mixer->reg_mutex);
5870     for (chn = 0; chn < 31; chn++) {
5871     pslot = &mixer->slots[chn];
5872     if (pslot->put_volume && pslot->stereo)
5873     result |= 1 << chn;
5874     }
5875     + mutex_unlock(&mixer->reg_mutex);
5876     return result;
5877     }
5878    
5879     @@ -176,6 +180,7 @@ static int snd_mixer_oss_recmask(struct snd_mixer_oss_file *fmixer)
5880    
5881     if (mixer == NULL)
5882     return -EIO;
5883     + mutex_lock(&mixer->reg_mutex);
5884     if (mixer->put_recsrc && mixer->get_recsrc) { /* exclusive */
5885     result = mixer->mask_recsrc;
5886     } else {
5887     @@ -187,6 +192,7 @@ static int snd_mixer_oss_recmask(struct snd_mixer_oss_file *fmixer)
5888     result |= 1 << chn;
5889     }
5890     }
5891     + mutex_unlock(&mixer->reg_mutex);
5892     return result;
5893     }
5894    
5895     @@ -197,11 +203,12 @@ static int snd_mixer_oss_get_recsrc(struct snd_mixer_oss_file *fmixer)
5896    
5897     if (mixer == NULL)
5898     return -EIO;
5899     + mutex_lock(&mixer->reg_mutex);
5900     if (mixer->put_recsrc && mixer->get_recsrc) { /* exclusive */
5901     - int err;
5902     unsigned int index;
5903     - if ((err = mixer->get_recsrc(fmixer, &index)) < 0)
5904     - return err;
5905     + result = mixer->get_recsrc(fmixer, &index);
5906     + if (result < 0)
5907     + goto unlock;
5908     result = 1 << index;
5909     } else {
5910     struct snd_mixer_oss_slot *pslot;
5911     @@ -216,7 +223,10 @@ static int snd_mixer_oss_get_recsrc(struct snd_mixer_oss_file *fmixer)
5912     }
5913     }
5914     }
5915     - return mixer->oss_recsrc = result;
5916     + mixer->oss_recsrc = result;
5917     + unlock:
5918     + mutex_unlock(&mixer->reg_mutex);
5919     + return result;
5920     }
5921    
5922     static int snd_mixer_oss_set_recsrc(struct snd_mixer_oss_file *fmixer, int recsrc)
5923     @@ -229,6 +239,7 @@ static int snd_mixer_oss_set_recsrc(struct snd_mixer_oss_file *fmixer, int recsr
5924    
5925     if (mixer == NULL)
5926     return -EIO;
5927     + mutex_lock(&mixer->reg_mutex);
5928     if (mixer->get_recsrc && mixer->put_recsrc) { /* exclusive input */
5929     if (recsrc & ~mixer->oss_recsrc)
5930     recsrc &= ~mixer->oss_recsrc;
5931     @@ -254,6 +265,7 @@ static int snd_mixer_oss_set_recsrc(struct snd_mixer_oss_file *fmixer, int recsr
5932     }
5933     }
5934     }
5935     + mutex_unlock(&mixer->reg_mutex);
5936     return result;
5937     }
5938    
5939     @@ -265,6 +277,7 @@ static int snd_mixer_oss_get_volume(struct snd_mixer_oss_file *fmixer, int slot)
5940    
5941     if (mixer == NULL || slot > 30)
5942     return -EIO;
5943     + mutex_lock(&mixer->reg_mutex);
5944     pslot = &mixer->slots[slot];
5945     left = pslot->volume[0];
5946     right = pslot->volume[1];
5947     @@ -272,15 +285,21 @@ static int snd_mixer_oss_get_volume(struct snd_mixer_oss_file *fmixer, int slot)
5948     result = pslot->get_volume(fmixer, pslot, &left, &right);
5949     if (!pslot->stereo)
5950     right = left;
5951     - if (snd_BUG_ON(left < 0 || left > 100))
5952     - return -EIO;
5953     - if (snd_BUG_ON(right < 0 || right > 100))
5954     - return -EIO;
5955     + if (snd_BUG_ON(left < 0 || left > 100)) {
5956     + result = -EIO;
5957     + goto unlock;
5958     + }
5959     + if (snd_BUG_ON(right < 0 || right > 100)) {
5960     + result = -EIO;
5961     + goto unlock;
5962     + }
5963     if (result >= 0) {
5964     pslot->volume[0] = left;
5965     pslot->volume[1] = right;
5966     result = (left & 0xff) | ((right & 0xff) << 8);
5967     }
5968     + unlock:
5969     + mutex_unlock(&mixer->reg_mutex);
5970     return result;
5971     }
5972    
5973     @@ -293,6 +312,7 @@ static int snd_mixer_oss_set_volume(struct snd_mixer_oss_file *fmixer,
5974    
5975     if (mixer == NULL || slot > 30)
5976     return -EIO;
5977     + mutex_lock(&mixer->reg_mutex);
5978     pslot = &mixer->slots[slot];
5979     if (left > 100)
5980     left = 100;
5981     @@ -303,10 +323,13 @@ static int snd_mixer_oss_set_volume(struct snd_mixer_oss_file *fmixer,
5982     if (pslot->put_volume)
5983     result = pslot->put_volume(fmixer, pslot, left, right);
5984     if (result < 0)
5985     - return result;
5986     + goto unlock;
5987     pslot->volume[0] = left;
5988     pslot->volume[1] = right;
5989     - return (left & 0xff) | ((right & 0xff) << 8);
5990     + result = (left & 0xff) | ((right & 0xff) << 8);
5991     + unlock:
5992     + mutex_unlock(&mixer->reg_mutex);
5993     + return result;
5994     }
5995    
5996     static int snd_mixer_oss_ioctl1(struct snd_mixer_oss_file *fmixer, unsigned int cmd, unsigned long arg)
5997     diff --git a/sound/core/timer.c b/sound/core/timer.c
5998     index 6475b85599364..596ba572d6c49 100644
5999     --- a/sound/core/timer.c
6000     +++ b/sound/core/timer.c
6001     @@ -581,13 +581,13 @@ static int snd_timer_stop1(struct snd_timer_instance *timeri, bool stop)
6002     if (!timer)
6003     return -EINVAL;
6004     spin_lock_irqsave(&timer->lock, flags);
6005     + list_del_init(&timeri->ack_list);
6006     + list_del_init(&timeri->active_list);
6007     if (!(timeri->flags & (SNDRV_TIMER_IFLG_RUNNING |
6008     SNDRV_TIMER_IFLG_START))) {
6009     result = -EBUSY;
6010     goto unlock;
6011     }
6012     - list_del_init(&timeri->ack_list);
6013     - list_del_init(&timeri->active_list);
6014     if (timer->card && timer->card->shutdown)
6015     goto unlock;
6016     if (stop) {
6017     @@ -622,23 +622,22 @@ static int snd_timer_stop1(struct snd_timer_instance *timeri, bool stop)
6018     static int snd_timer_stop_slave(struct snd_timer_instance *timeri, bool stop)
6019     {
6020     unsigned long flags;
6021     + bool running;
6022    
6023     spin_lock_irqsave(&slave_active_lock, flags);
6024     - if (!(timeri->flags & SNDRV_TIMER_IFLG_RUNNING)) {
6025     - spin_unlock_irqrestore(&slave_active_lock, flags);
6026     - return -EBUSY;
6027     - }
6028     + running = timeri->flags & SNDRV_TIMER_IFLG_RUNNING;
6029     timeri->flags &= ~SNDRV_TIMER_IFLG_RUNNING;
6030     if (timeri->timer) {
6031     spin_lock(&timeri->timer->lock);
6032     list_del_init(&timeri->ack_list);
6033     list_del_init(&timeri->active_list);
6034     - snd_timer_notify1(timeri, stop ? SNDRV_TIMER_EVENT_STOP :
6035     - SNDRV_TIMER_EVENT_PAUSE);
6036     + if (running)
6037     + snd_timer_notify1(timeri, stop ? SNDRV_TIMER_EVENT_STOP :
6038     + SNDRV_TIMER_EVENT_PAUSE);
6039     spin_unlock(&timeri->timer->lock);
6040     }
6041     spin_unlock_irqrestore(&slave_active_lock, flags);
6042     - return 0;
6043     + return running ? 0 : -EBUSY;
6044     }
6045    
6046     /*
6047     diff --git a/sound/isa/gus/gus_dma.c b/sound/isa/gus/gus_dma.c
6048     index 36c27c8323601..2e27cd3427c87 100644
6049     --- a/sound/isa/gus/gus_dma.c
6050     +++ b/sound/isa/gus/gus_dma.c
6051     @@ -141,6 +141,8 @@ static void snd_gf1_dma_interrupt(struct snd_gus_card * gus)
6052     }
6053     block = snd_gf1_dma_next_block(gus);
6054     spin_unlock(&gus->dma_lock);
6055     + if (!block)
6056     + return;
6057     snd_gf1_dma_program(gus, block->addr, block->buf_addr, block->count, (unsigned short) block->cmd);
6058     kfree(block);
6059     #if 0
6060     diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
6061     index 5451705f429e0..21b0368c2a3bc 100644
6062     --- a/sound/soc/soc-dapm.c
6063     +++ b/sound/soc/soc-dapm.c
6064     @@ -2406,8 +2406,13 @@ static struct snd_soc_dapm_widget *dapm_find_widget(
6065     return NULL;
6066     }
6067    
6068     -static int snd_soc_dapm_set_pin(struct snd_soc_dapm_context *dapm,
6069     - const char *pin, int status)
6070     +/*
6071     + * set the DAPM pin status:
6072     + * returns 1 when the value has been updated, 0 when unchanged, or a negative
6073     + * error code; called from kcontrol put callback
6074     + */
6075     +static int __snd_soc_dapm_set_pin(struct snd_soc_dapm_context *dapm,
6076     + const char *pin, int status)
6077     {
6078     struct snd_soc_dapm_widget *w = dapm_find_widget(dapm, pin, true);
6079     int ret = 0;
6080     @@ -2433,6 +2438,18 @@ static int snd_soc_dapm_set_pin(struct snd_soc_dapm_context *dapm,
6081     return ret;
6082     }
6083    
6084     +/*
6085     + * similar as __snd_soc_dapm_set_pin(), but returns 0 when successful;
6086     + * called from several API functions below
6087     + */
6088     +static int snd_soc_dapm_set_pin(struct snd_soc_dapm_context *dapm,
6089     + const char *pin, int status)
6090     +{
6091     + int ret = __snd_soc_dapm_set_pin(dapm, pin, status);
6092     +
6093     + return ret < 0 ? ret : 0;
6094     +}
6095     +
6096     /**
6097     * snd_soc_dapm_sync_unlocked - scan and power dapm paths
6098     * @dapm: DAPM context
6099     @@ -3327,10 +3344,10 @@ int snd_soc_dapm_put_pin_switch(struct snd_kcontrol *kcontrol,
6100     const char *pin = (const char *)kcontrol->private_value;
6101     int ret;
6102    
6103     - if (ucontrol->value.integer.value[0])
6104     - ret = snd_soc_dapm_enable_pin(&card->dapm, pin);
6105     - else
6106     - ret = snd_soc_dapm_disable_pin(&card->dapm, pin);
6107     + mutex_lock_nested(&card->dapm_mutex, SND_SOC_DAPM_CLASS_RUNTIME);
6108     + ret = __snd_soc_dapm_set_pin(&card->dapm, pin,
6109     + !!ucontrol->value.integer.value[0]);
6110     + mutex_unlock(&card->dapm_mutex);
6111    
6112     snd_soc_dapm_sync(&card->dapm);
6113     return ret;
6114     diff --git a/sound/synth/emux/emux.c b/sound/synth/emux/emux.c
6115     index 9312cd8a6fdd1..c5c6d360843aa 100644
6116     --- a/sound/synth/emux/emux.c
6117     +++ b/sound/synth/emux/emux.c
6118     @@ -101,7 +101,7 @@ int snd_emux_register(struct snd_emux *emu, struct snd_card *card, int index, ch
6119     emu->name = kstrdup(name, GFP_KERNEL);
6120     emu->voices = kcalloc(emu->max_voices, sizeof(struct snd_emux_voice),
6121     GFP_KERNEL);
6122     - if (emu->voices == NULL)
6123     + if (emu->name == NULL || emu->voices == NULL)
6124     return -ENOMEM;
6125    
6126     /* create soundfont list */
6127     diff --git a/sound/usb/6fire/comm.c b/sound/usb/6fire/comm.c
6128     index 161215d78d952..f29c115b9d564 100644
6129     --- a/sound/usb/6fire/comm.c
6130     +++ b/sound/usb/6fire/comm.c
6131     @@ -99,7 +99,7 @@ static int usb6fire_comm_send_buffer(u8 *buffer, struct usb_device *dev)
6132     int actual_len;
6133    
6134     ret = usb_interrupt_msg(dev, usb_sndintpipe(dev, COMM_EP),
6135     - buffer, buffer[1] + 2, &actual_len, HZ);
6136     + buffer, buffer[1] + 2, &actual_len, 1000);
6137     if (ret < 0)
6138     return ret;
6139     else if (actual_len != buffer[1] + 2)
6140     diff --git a/sound/usb/6fire/firmware.c b/sound/usb/6fire/firmware.c
6141     index 9520b4cd70385..7a89111041edc 100644
6142     --- a/sound/usb/6fire/firmware.c
6143     +++ b/sound/usb/6fire/firmware.c
6144     @@ -166,7 +166,7 @@ static int usb6fire_fw_ezusb_write(struct usb_device *device,
6145    
6146     ret = usb_control_msg(device, usb_sndctrlpipe(device, 0), type,
6147     USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
6148     - value, 0, data, len, HZ);
6149     + value, 0, data, len, 1000);
6150     if (ret < 0)
6151     return ret;
6152     else if (ret != len)
6153     @@ -179,7 +179,7 @@ static int usb6fire_fw_ezusb_read(struct usb_device *device,
6154     {
6155     int ret = usb_control_msg(device, usb_rcvctrlpipe(device, 0), type,
6156     USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE, value,
6157     - 0, data, len, HZ);
6158     + 0, data, len, 1000);
6159     if (ret < 0)
6160     return ret;
6161     else if (ret != len)
6162     @@ -194,7 +194,7 @@ static int usb6fire_fw_fpga_write(struct usb_device *device,
6163     int ret;
6164    
6165     ret = usb_bulk_msg(device, usb_sndbulkpipe(device, FPGA_EP), data, len,
6166     - &actual_len, HZ);
6167     + &actual_len, 1000);
6168     if (ret < 0)
6169     return ret;
6170     else if (actual_len != len)
6171     diff --git a/sound/usb/line6/driver.c b/sound/usb/line6/driver.c
6172     index 0107bbfeb17d1..8cca0befcf013 100644
6173     --- a/sound/usb/line6/driver.c
6174     +++ b/sound/usb/line6/driver.c
6175     @@ -110,12 +110,12 @@ static int line6_send_raw_message(struct usb_line6 *line6, const char *buffer,
6176     retval = usb_interrupt_msg(line6->usbdev,
6177     usb_sndintpipe(line6->usbdev, properties->ep_ctrl_w),
6178     (char *)frag_buf, frag_size,
6179     - &partial, LINE6_TIMEOUT * HZ);
6180     + &partial, LINE6_TIMEOUT);
6181     } else {
6182     retval = usb_bulk_msg(line6->usbdev,
6183     usb_sndbulkpipe(line6->usbdev, properties->ep_ctrl_w),
6184     (char *)frag_buf, frag_size,
6185     - &partial, LINE6_TIMEOUT * HZ);
6186     + &partial, LINE6_TIMEOUT);
6187     }
6188    
6189     if (retval) {
6190     @@ -351,7 +351,7 @@ int line6_read_data(struct usb_line6 *line6, unsigned address, void *data,
6191     ret = usb_control_msg(usbdev, usb_sndctrlpipe(usbdev, 0), 0x67,
6192     USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_OUT,
6193     (datalen << 8) | 0x21, address,
6194     - NULL, 0, LINE6_TIMEOUT * HZ);
6195     + NULL, 0, LINE6_TIMEOUT);
6196    
6197     if (ret < 0) {
6198     dev_err(line6->ifcdev, "read request failed (error %d)\n", ret);
6199     @@ -366,7 +366,7 @@ int line6_read_data(struct usb_line6 *line6, unsigned address, void *data,
6200     USB_TYPE_VENDOR | USB_RECIP_DEVICE |
6201     USB_DIR_IN,
6202     0x0012, 0x0000, len, 1,
6203     - LINE6_TIMEOUT * HZ);
6204     + LINE6_TIMEOUT);
6205     if (ret < 0) {
6206     dev_err(line6->ifcdev,
6207     "receive length failed (error %d)\n", ret);
6208     @@ -394,7 +394,7 @@ int line6_read_data(struct usb_line6 *line6, unsigned address, void *data,
6209     ret = usb_control_msg(usbdev, usb_rcvctrlpipe(usbdev, 0), 0x67,
6210     USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN,
6211     0x0013, 0x0000, data, datalen,
6212     - LINE6_TIMEOUT * HZ);
6213     + LINE6_TIMEOUT);
6214    
6215     if (ret < 0)
6216     dev_err(line6->ifcdev, "read failed (error %d)\n", ret);
6217     @@ -426,7 +426,7 @@ int line6_write_data(struct usb_line6 *line6, unsigned address, void *data,
6218     ret = usb_control_msg(usbdev, usb_sndctrlpipe(usbdev, 0), 0x67,
6219     USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_OUT,
6220     0x0022, address, data, datalen,
6221     - LINE6_TIMEOUT * HZ);
6222     + LINE6_TIMEOUT);
6223    
6224     if (ret < 0) {
6225     dev_err(line6->ifcdev,
6226     @@ -442,7 +442,7 @@ int line6_write_data(struct usb_line6 *line6, unsigned address, void *data,
6227     USB_TYPE_VENDOR | USB_RECIP_DEVICE |
6228     USB_DIR_IN,
6229     0x0012, 0x0000,
6230     - status, 1, LINE6_TIMEOUT * HZ);
6231     + status, 1, LINE6_TIMEOUT);
6232    
6233     if (ret < 0) {
6234     dev_err(line6->ifcdev,
6235     diff --git a/sound/usb/line6/driver.h b/sound/usb/line6/driver.h
6236     index 7e3a3aada2220..395f4e2c570a3 100644
6237     --- a/sound/usb/line6/driver.h
6238     +++ b/sound/usb/line6/driver.h
6239     @@ -31,7 +31,7 @@
6240     #define LINE6_FALLBACK_INTERVAL 10
6241     #define LINE6_FALLBACK_MAXPACKETSIZE 16
6242    
6243     -#define LINE6_TIMEOUT 1
6244     +#define LINE6_TIMEOUT 1000
6245     #define LINE6_BUFSIZE_LISTEN 64
6246     #define LINE6_MIDI_MESSAGE_MAXLEN 256
6247    
6248     diff --git a/sound/usb/line6/podhd.c b/sound/usb/line6/podhd.c
6249     index 8c4375bf34ab7..7133c36f99b6c 100644
6250     --- a/sound/usb/line6/podhd.c
6251     +++ b/sound/usb/line6/podhd.c
6252     @@ -232,7 +232,7 @@ static int podhd_dev_start(struct usb_line6_podhd *pod)
6253     ret = usb_control_msg(usbdev, usb_sndctrlpipe(usbdev, 0),
6254     0x67, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_OUT,
6255     0x11, 0,
6256     - NULL, 0, LINE6_TIMEOUT * HZ);
6257     + NULL, 0, LINE6_TIMEOUT);
6258     if (ret < 0) {
6259     dev_err(pod->line6.ifcdev, "read request failed (error %d)\n", ret);
6260     goto exit;
6261     @@ -242,7 +242,7 @@ static int podhd_dev_start(struct usb_line6_podhd *pod)
6262     ret = usb_control_msg(usbdev, usb_rcvctrlpipe(usbdev, 0), 0x67,
6263     USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN,
6264     0x11, 0x0,
6265     - init_bytes, 3, LINE6_TIMEOUT * HZ);
6266     + init_bytes, 3, LINE6_TIMEOUT);
6267     if (ret < 0) {
6268     dev_err(pod->line6.ifcdev,
6269     "receive length failed (error %d)\n", ret);
6270     @@ -262,7 +262,7 @@ static int podhd_dev_start(struct usb_line6_podhd *pod)
6271     USB_REQ_SET_FEATURE,
6272     USB_TYPE_STANDARD | USB_RECIP_DEVICE | USB_DIR_OUT,
6273     1, 0,
6274     - NULL, 0, LINE6_TIMEOUT * HZ);
6275     + NULL, 0, LINE6_TIMEOUT);
6276     exit:
6277     kfree(init_bytes);
6278     return ret;
6279     diff --git a/sound/usb/line6/toneport.c b/sound/usb/line6/toneport.c
6280     index d3871d99ade4e..d7336333a7fba 100644
6281     --- a/sound/usb/line6/toneport.c
6282     +++ b/sound/usb/line6/toneport.c
6283     @@ -133,7 +133,7 @@ static int toneport_send_cmd(struct usb_device *usbdev, int cmd1, int cmd2)
6284    
6285     ret = usb_control_msg(usbdev, usb_sndctrlpipe(usbdev, 0), 0x67,
6286     USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_OUT,
6287     - cmd1, cmd2, NULL, 0, LINE6_TIMEOUT * HZ);
6288     + cmd1, cmd2, NULL, 0, LINE6_TIMEOUT);
6289    
6290     if (ret < 0) {
6291     dev_err(&usbdev->dev, "send failed (error %d)\n", ret);
6292     diff --git a/sound/usb/misc/ua101.c b/sound/usb/misc/ua101.c
6293     index c19a5dd056317..8c00157c0fcb2 100644
6294     --- a/sound/usb/misc/ua101.c
6295     +++ b/sound/usb/misc/ua101.c
6296     @@ -1032,7 +1032,7 @@ static int detect_usb_format(struct ua101 *ua)
6297     fmt_playback->bSubframeSize * ua->playback.channels;
6298    
6299     epd = &ua->intf[INTF_CAPTURE]->altsetting[1].endpoint[0].desc;
6300     - if (!usb_endpoint_is_isoc_in(epd)) {
6301     + if (!usb_endpoint_is_isoc_in(epd) || usb_endpoint_maxp(epd) == 0) {
6302     dev_err(&ua->dev->dev, "invalid capture endpoint\n");
6303     return -ENXIO;
6304     }
6305     @@ -1040,7 +1040,7 @@ static int detect_usb_format(struct ua101 *ua)
6306     ua->capture.max_packet_bytes = usb_endpoint_maxp(epd);
6307    
6308     epd = &ua->intf[INTF_PLAYBACK]->altsetting[1].endpoint[0].desc;
6309     - if (!usb_endpoint_is_isoc_out(epd)) {
6310     + if (!usb_endpoint_is_isoc_out(epd) || usb_endpoint_maxp(epd) == 0) {
6311     dev_err(&ua->dev->dev, "invalid playback endpoint\n");
6312     return -ENXIO;
6313     }