Magellan Linux

Contents of /trunk/kernel-alx-legacy/patches-4.9/0410-4.9.311-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3712 - (show annotations) (download)
Mon Oct 24 14:08:24 2022 UTC (18 months ago) by niro
File size: 203363 byte(s)
-linux-4.9.311
1 diff --git a/Makefile b/Makefile
2 index 72a8c786cb777..c1a20e4a2d136 100644
3 --- a/Makefile
4 +++ b/Makefile
5 @@ -1,6 +1,6 @@
6 VERSION = 4
7 PATCHLEVEL = 9
8 -SUBLEVEL = 310
9 +SUBLEVEL = 311
10 EXTRAVERSION =
11 NAME = Roaring Lionus
12
13 diff --git a/arch/arm/boot/dts/exynos5250-pinctrl.dtsi b/arch/arm/boot/dts/exynos5250-pinctrl.dtsi
14 index 2f6ab32b59548..7bb09532840fc 100644
15 --- a/arch/arm/boot/dts/exynos5250-pinctrl.dtsi
16 +++ b/arch/arm/boot/dts/exynos5250-pinctrl.dtsi
17 @@ -257,7 +257,7 @@
18 };
19
20 uart3_data: uart3-data {
21 - samsung,pins = "gpa1-4", "gpa1-4";
22 + samsung,pins = "gpa1-4", "gpa1-5";
23 samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
24 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
25 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
26 diff --git a/arch/arm/boot/dts/exynos5250-smdk5250.dts b/arch/arm/boot/dts/exynos5250-smdk5250.dts
27 index f0906d67a1070..54e79f6887ffa 100644
28 --- a/arch/arm/boot/dts/exynos5250-smdk5250.dts
29 +++ b/arch/arm/boot/dts/exynos5250-smdk5250.dts
30 @@ -118,6 +118,9 @@
31
32 &hdmi {
33 hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>;
34 + vdd-supply = <&ldo8_reg>;
35 + vdd_osc-supply = <&ldo10_reg>;
36 + vdd_pll-supply = <&ldo8_reg>;
37 };
38
39 &i2c_0 {
40 diff --git a/arch/arm/boot/dts/exynos5420-smdk5420.dts b/arch/arm/boot/dts/exynos5420-smdk5420.dts
41 index aaccd0da41e54..5ab719cf69ddd 100644
42 --- a/arch/arm/boot/dts/exynos5420-smdk5420.dts
43 +++ b/arch/arm/boot/dts/exynos5420-smdk5420.dts
44 @@ -134,6 +134,9 @@
45 hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>;
46 pinctrl-names = "default";
47 pinctrl-0 = <&hdmi_hpd_irq>;
48 + vdd-supply = <&ldo6_reg>;
49 + vdd_osc-supply = <&ldo7_reg>;
50 + vdd_pll-supply = <&ldo6_reg>;
51 };
52
53 &hsi2c_4 {
54 diff --git a/arch/arm/boot/dts/qcom-ipq4019.dtsi b/arch/arm/boot/dts/qcom-ipq4019.dtsi
55 index 5ee84e3cb3e97..1fd63f485d3b6 100644
56 --- a/arch/arm/boot/dts/qcom-ipq4019.dtsi
57 +++ b/arch/arm/boot/dts/qcom-ipq4019.dtsi
58 @@ -93,7 +93,8 @@
59 clocks {
60 sleep_clk: sleep_clk {
61 compatible = "fixed-clock";
62 - clock-frequency = <32768>;
63 + clock-frequency = <32000>;
64 + clock-output-names = "gcc_sleep_clk_src";
65 #clock-cells = <0>;
66 };
67 };
68 diff --git a/arch/arm/boot/dts/qcom-msm8960.dtsi b/arch/arm/boot/dts/qcom-msm8960.dtsi
69 index 288f56e0ccf55..819d0f085f8ca 100644
70 --- a/arch/arm/boot/dts/qcom-msm8960.dtsi
71 +++ b/arch/arm/boot/dts/qcom-msm8960.dtsi
72 @@ -139,7 +139,9 @@
73 reg = <0x108000 0x1000>;
74 qcom,ipc = <&l2cc 0x8 2>;
75
76 - interrupts = <0 19 0>, <0 21 0>, <0 22 0>;
77 + interrupts = <GIC_SPI 19 IRQ_TYPE_EDGE_RISING>,
78 + <GIC_SPI 21 IRQ_TYPE_EDGE_RISING>,
79 + <GIC_SPI 22 IRQ_TYPE_EDGE_RISING>;
80 interrupt-names = "ack", "err", "wakeup";
81
82 regulators {
83 @@ -185,7 +187,7 @@
84 compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
85 reg = <0x16440000 0x1000>,
86 <0x16400000 0x1000>;
87 - interrupts = <0 154 0x0>;
88 + interrupts = <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>;
89 clocks = <&gcc GSBI5_UART_CLK>, <&gcc GSBI5_H_CLK>;
90 clock-names = "core", "iface";
91 status = "disabled";
92 @@ -311,7 +313,7 @@
93 #address-cells = <1>;
94 #size-cells = <0>;
95 reg = <0x16080000 0x1000>;
96 - interrupts = <0 147 0>;
97 + interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>;
98 spi-max-frequency = <24000000>;
99 cs-gpios = <&msmgpio 8 0>;
100
101 diff --git a/arch/arm/boot/dts/spear1340.dtsi b/arch/arm/boot/dts/spear1340.dtsi
102 index 6361cbfcbe5e6..ece38b8c450dd 100644
103 --- a/arch/arm/boot/dts/spear1340.dtsi
104 +++ b/arch/arm/boot/dts/spear1340.dtsi
105 @@ -141,9 +141,9 @@
106 reg = <0xb4100000 0x1000>;
107 interrupts = <0 105 0x4>;
108 status = "disabled";
109 - dmas = <&dwdma0 12 0 1>,
110 - <&dwdma0 13 1 0>;
111 - dma-names = "tx", "rx";
112 + dmas = <&dwdma0 13 0 1>,
113 + <&dwdma0 12 1 0>;
114 + dma-names = "rx", "tx";
115 };
116
117 thermal@e07008c4 {
118 diff --git a/arch/arm/boot/dts/spear13xx.dtsi b/arch/arm/boot/dts/spear13xx.dtsi
119 index 9564337c1815d..45f5bd8d30f09 100644
120 --- a/arch/arm/boot/dts/spear13xx.dtsi
121 +++ b/arch/arm/boot/dts/spear13xx.dtsi
122 @@ -288,9 +288,9 @@
123 #size-cells = <0>;
124 interrupts = <0 31 0x4>;
125 status = "disabled";
126 - dmas = <&dwdma0 4 0 0>,
127 - <&dwdma0 5 0 0>;
128 - dma-names = "tx", "rx";
129 + dmas = <&dwdma0 5 0 0>,
130 + <&dwdma0 4 0 0>;
131 + dma-names = "rx", "tx";
132 };
133
134 rtc@e0580000 {
135 diff --git a/arch/arm/boot/dts/tegra20-tamonten.dtsi b/arch/arm/boot/dts/tegra20-tamonten.dtsi
136 index a613e3b85b456..29769bf7a11ab 100644
137 --- a/arch/arm/boot/dts/tegra20-tamonten.dtsi
138 +++ b/arch/arm/boot/dts/tegra20-tamonten.dtsi
139 @@ -182,8 +182,8 @@
140 };
141 conf_ata {
142 nvidia,pins = "ata", "atb", "atc", "atd", "ate",
143 - "cdev1", "cdev2", "dap1", "dtb", "gma",
144 - "gmb", "gmc", "gmd", "gme", "gpu7",
145 + "cdev1", "cdev2", "dap1", "dtb", "dtf",
146 + "gma", "gmb", "gmc", "gmd", "gme", "gpu7",
147 "gpv", "i2cp", "irrx", "irtx", "pta",
148 "rm", "slxa", "slxk", "spia", "spib",
149 "uac";
150 @@ -202,7 +202,7 @@
151 };
152 conf_crtp {
153 nvidia,pins = "crtp", "dap2", "dap3", "dap4",
154 - "dtc", "dte", "dtf", "gpu", "sdio1",
155 + "dtc", "dte", "gpu", "sdio1",
156 "slxc", "slxd", "spdi", "spdo", "spig",
157 "uda";
158 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
159 diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c
160 index 3bdf0d5882383..5deafd26c7099 100644
161 --- a/arch/arm/mach-davinci/board-da850-evm.c
162 +++ b/arch/arm/mach-davinci/board-da850-evm.c
163 @@ -1043,11 +1043,13 @@ static int __init da850_evm_config_emac(void)
164 int ret;
165 u32 val;
166 struct davinci_soc_info *soc_info = &davinci_soc_info;
167 - u8 rmii_en = soc_info->emac_pdata->rmii_en;
168 + u8 rmii_en;
169
170 if (!machine_is_davinci_da850_evm())
171 return 0;
172
173 + rmii_en = soc_info->emac_pdata->rmii_en;
174 +
175 cfg_chip3_base = DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP3_REG);
176
177 val = __raw_readl(cfg_chip3_base);
178 diff --git a/arch/arm/mach-mmp/sram.c b/arch/arm/mach-mmp/sram.c
179 index bf5e64906e656..a41162dc4af40 100644
180 --- a/arch/arm/mach-mmp/sram.c
181 +++ b/arch/arm/mach-mmp/sram.c
182 @@ -75,6 +75,8 @@ static int sram_probe(struct platform_device *pdev)
183 if (!info)
184 return -ENOMEM;
185
186 + platform_set_drvdata(pdev, info);
187 +
188 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
189 if (res == NULL) {
190 dev_err(&pdev->dev, "no memory resource defined\n");
191 @@ -110,8 +112,6 @@ static int sram_probe(struct platform_device *pdev)
192 list_add(&info->node, &sram_bank_list);
193 mutex_unlock(&sram_lock);
194
195 - platform_set_drvdata(pdev, info);
196 -
197 dev_info(&pdev->dev, "initialized\n");
198 return 0;
199
200 @@ -130,17 +130,19 @@ static int sram_remove(struct platform_device *pdev)
201 struct sram_bank_info *info;
202
203 info = platform_get_drvdata(pdev);
204 - if (info == NULL)
205 - return -ENODEV;
206
207 - mutex_lock(&sram_lock);
208 - list_del(&info->node);
209 - mutex_unlock(&sram_lock);
210 + if (info->sram_size) {
211 + mutex_lock(&sram_lock);
212 + list_del(&info->node);
213 + mutex_unlock(&sram_lock);
214 +
215 + gen_pool_destroy(info->gpool);
216 + iounmap(info->sram_virt);
217 + kfree(info->pool_name);
218 + }
219
220 - gen_pool_destroy(info->gpool);
221 - iounmap(info->sram_virt);
222 - kfree(info->pool_name);
223 kfree(info);
224 +
225 return 0;
226 }
227
228 diff --git a/arch/arm/mach-s3c24xx/mach-jive.c b/arch/arm/mach-s3c24xx/mach-jive.c
229 index 7d99fe8f61576..5d43733ee7d69 100644
230 --- a/arch/arm/mach-s3c24xx/mach-jive.c
231 +++ b/arch/arm/mach-s3c24xx/mach-jive.c
232 @@ -240,11 +240,11 @@ static int __init jive_mtdset(char *options)
233 unsigned long set;
234
235 if (options == NULL || options[0] == '\0')
236 - return 0;
237 + return 1;
238
239 if (kstrtoul(options, 10, &set)) {
240 printk(KERN_ERR "failed to parse mtdset=%s\n", options);
241 - return 0;
242 + return 1;
243 }
244
245 switch (set) {
246 @@ -259,7 +259,7 @@ static int __init jive_mtdset(char *options)
247 "using default.", set);
248 }
249
250 - return 0;
251 + return 1;
252 }
253
254 /* parse the mtdset= option given to the kernel command line */
255 diff --git a/arch/arm64/boot/dts/broadcom/bcm2837.dtsi b/arch/arm64/boot/dts/broadcom/bcm2837.dtsi
256 index c1f719b7097a6..95e3cb38474fb 100644
257 --- a/arch/arm64/boot/dts/broadcom/bcm2837.dtsi
258 +++ b/arch/arm64/boot/dts/broadcom/bcm2837.dtsi
259 @@ -31,12 +31,26 @@
260 #address-cells = <1>;
261 #size-cells = <0>;
262
263 + /* Source for d/i-cache-line-size and d/i-cache-sets
264 + * https://developer.arm.com/documentation/ddi0500/e/level-1-memory-system
265 + * /about-the-l1-memory-system?lang=en
266 + *
267 + * Source for d/i-cache-size
268 + * https://magpi.raspberrypi.com/articles/raspberry-pi-3-specs-benchmarks
269 + */
270 cpu0: cpu@0 {
271 device_type = "cpu";
272 compatible = "arm,cortex-a53";
273 reg = <0>;
274 enable-method = "spin-table";
275 cpu-release-addr = <0x0 0x000000d8>;
276 + d-cache-size = <0x8000>;
277 + d-cache-line-size = <64>;
278 + d-cache-sets = <128>; // 32KiB(size)/64(line-size)=512ways/4-way set
279 + i-cache-size = <0x8000>;
280 + i-cache-line-size = <64>;
281 + i-cache-sets = <256>; // 32KiB(size)/64(line-size)=512ways/2-way set
282 + next-level-cache = <&l2>;
283 };
284
285 cpu1: cpu@1 {
286 @@ -45,6 +59,13 @@
287 reg = <1>;
288 enable-method = "spin-table";
289 cpu-release-addr = <0x0 0x000000e0>;
290 + d-cache-size = <0x8000>;
291 + d-cache-line-size = <64>;
292 + d-cache-sets = <128>; // 32KiB(size)/64(line-size)=512ways/4-way set
293 + i-cache-size = <0x8000>;
294 + i-cache-line-size = <64>;
295 + i-cache-sets = <256>; // 32KiB(size)/64(line-size)=512ways/2-way set
296 + next-level-cache = <&l2>;
297 };
298
299 cpu2: cpu@2 {
300 @@ -53,6 +74,13 @@
301 reg = <2>;
302 enable-method = "spin-table";
303 cpu-release-addr = <0x0 0x000000e8>;
304 + d-cache-size = <0x8000>;
305 + d-cache-line-size = <64>;
306 + d-cache-sets = <128>; // 32KiB(size)/64(line-size)=512ways/4-way set
307 + i-cache-size = <0x8000>;
308 + i-cache-line-size = <64>;
309 + i-cache-sets = <256>; // 32KiB(size)/64(line-size)=512ways/2-way set
310 + next-level-cache = <&l2>;
311 };
312
313 cpu3: cpu@3 {
314 @@ -61,6 +89,27 @@
315 reg = <3>;
316 enable-method = "spin-table";
317 cpu-release-addr = <0x0 0x000000f0>;
318 + d-cache-size = <0x8000>;
319 + d-cache-line-size = <64>;
320 + d-cache-sets = <128>; // 32KiB(size)/64(line-size)=512ways/4-way set
321 + i-cache-size = <0x8000>;
322 + i-cache-line-size = <64>;
323 + i-cache-sets = <256>; // 32KiB(size)/64(line-size)=512ways/2-way set
324 + next-level-cache = <&l2>;
325 + };
326 +
327 + /* Source for cache-line-size + cache-sets
328 + * https://developer.arm.com/documentation/ddi0500
329 + * /e/level-2-memory-system/about-the-l2-memory-system?lang=en
330 + * Source for cache-size
331 + * https://datasheets.raspberrypi.com/cm/cm1-and-cm3-datasheet.pdf
332 + */
333 + l2: l2-cache0 {
334 + compatible = "cache";
335 + cache-size = <0x80000>;
336 + cache-line-size = <64>;
337 + cache-sets = <512>; // 512KiB(size)/64(line-size)=8192ways/16-way set
338 + cache-level = <2>;
339 };
340 };
341 };
342 diff --git a/arch/arm64/boot/dts/broadcom/ns2-svk.dts b/arch/arm64/boot/dts/broadcom/ns2-svk.dts
343 index b09f3bc5c6c16..58114b842a592 100644
344 --- a/arch/arm64/boot/dts/broadcom/ns2-svk.dts
345 +++ b/arch/arm64/boot/dts/broadcom/ns2-svk.dts
346 @@ -103,8 +103,8 @@
347 compatible = "silabs,si3226x";
348 reg = <0>;
349 spi-max-frequency = <5000000>;
350 - spi-cpha = <1>;
351 - spi-cpol = <1>;
352 + spi-cpha;
353 + spi-cpol;
354 pl022,hierarchy = <0>;
355 pl022,interface = <0>;
356 pl022,slave-tx-disable = <0>;
357 @@ -127,8 +127,8 @@
358 at25,byte-len = <0x8000>;
359 at25,addr-mode = <2>;
360 at25,page-size = <64>;
361 - spi-cpha = <1>;
362 - spi-cpol = <1>;
363 + spi-cpha;
364 + spi-cpol;
365 pl022,hierarchy = <0>;
366 pl022,interface = <0>;
367 pl022,slave-tx-disable = <0>;
368 diff --git a/arch/arm64/boot/dts/broadcom/ns2.dtsi b/arch/arm64/boot/dts/broadcom/ns2.dtsi
369 index 8a94ec8035d38..83c1718dac292 100644
370 --- a/arch/arm64/boot/dts/broadcom/ns2.dtsi
371 +++ b/arch/arm64/boot/dts/broadcom/ns2.dtsi
372 @@ -514,7 +514,7 @@
373 };
374 };
375
376 - sata: ahci@663f2000 {
377 + sata: sata@663f2000 {
378 compatible = "brcm,iproc-ahci", "generic-ahci";
379 reg = <0x663f2000 0x1000>;
380 reg-names = "ahci";
381 diff --git a/arch/arm64/kernel/insn.c b/arch/arm64/kernel/insn.c
382 index 755b3dd3073e5..fbfad5a83526b 100644
383 --- a/arch/arm64/kernel/insn.c
384 +++ b/arch/arm64/kernel/insn.c
385 @@ -234,8 +234,8 @@ static int __kprobes aarch64_insn_patch_text_cb(void *arg)
386 int i, ret = 0;
387 struct aarch64_insn_patch *pp = arg;
388
389 - /* The first CPU becomes master */
390 - if (atomic_inc_return(&pp->cpu_count) == 1) {
391 + /* The last CPU becomes master */
392 + if (atomic_inc_return(&pp->cpu_count) == num_online_cpus()) {
393 for (i = 0; ret == 0 && i < pp->insn_cnt; i++)
394 ret = aarch64_insn_patch_text_nosync(pp->text_addrs[i],
395 pp->new_insns[i]);
396 diff --git a/arch/arm64/kernel/module.lds b/arch/arm64/kernel/module.lds
397 index 8949f6c6f729d..05881e2b414c5 100644
398 --- a/arch/arm64/kernel/module.lds
399 +++ b/arch/arm64/kernel/module.lds
400 @@ -1,3 +1,3 @@
401 SECTIONS {
402 - .plt (NOLOAD) : { BYTE(0) }
403 + .plt : { BYTE(0) }
404 }
405 diff --git a/arch/mips/dec/prom/Makefile b/arch/mips/dec/prom/Makefile
406 index ae73e42ac20b1..4c369359cdab5 100644
407 --- a/arch/mips/dec/prom/Makefile
408 +++ b/arch/mips/dec/prom/Makefile
409 @@ -5,4 +5,4 @@
410
411 lib-y += init.o memory.o cmdline.o identify.o console.o
412
413 -lib-$(CONFIG_32BIT) += locore.o
414 +lib-$(CONFIG_CPU_R3000) += locore.o
415 diff --git a/arch/mips/include/asm/dec/prom.h b/arch/mips/include/asm/dec/prom.h
416 index b59a2103b61a3..09538ff5e9245 100644
417 --- a/arch/mips/include/asm/dec/prom.h
418 +++ b/arch/mips/include/asm/dec/prom.h
419 @@ -47,16 +47,11 @@
420 */
421 #define REX_PROM_MAGIC 0x30464354
422
423 -#ifdef CONFIG_64BIT
424 -
425 -#define prom_is_rex(magic) 1 /* KN04 and KN05 are REX PROMs. */
426 -
427 -#else /* !CONFIG_64BIT */
428 -
429 -#define prom_is_rex(magic) ((magic) == REX_PROM_MAGIC)
430 -
431 -#endif /* !CONFIG_64BIT */
432 -
433 +/* KN04 and KN05 are REX PROMs, so only do the check for R3k systems. */
434 +static inline bool prom_is_rex(u32 magic)
435 +{
436 + return !IS_ENABLED(CONFIG_CPU_R3000) || magic == REX_PROM_MAGIC;
437 +}
438
439 /*
440 * 3MIN/MAXINE PROM entry points for DS5000/1xx's, DS5000/xx's and
441 diff --git a/arch/mips/include/asm/setup.h b/arch/mips/include/asm/setup.h
442 index 4f5279a8308d7..e301967fcffdd 100644
443 --- a/arch/mips/include/asm/setup.h
444 +++ b/arch/mips/include/asm/setup.h
445 @@ -13,7 +13,7 @@ static inline void setup_8250_early_printk_port(unsigned long base,
446 unsigned int reg_shift, unsigned int timeout) {}
447 #endif
448
449 -extern void set_handler(unsigned long offset, void *addr, unsigned long len);
450 +void set_handler(unsigned long offset, const void *addr, unsigned long len);
451 extern void set_uncached_handler(unsigned long offset, void *addr, unsigned long len);
452
453 typedef void (*vi_handler_t)(void);
454 diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
455 index 5f717473d08e7..278e81c9e6143 100644
456 --- a/arch/mips/kernel/traps.c
457 +++ b/arch/mips/kernel/traps.c
458 @@ -2019,19 +2019,19 @@ static void *set_vi_srs_handler(int n, vi_handler_t addr, int srs)
459 * If no shadow set is selected then use the default handler
460 * that does normal register saving and standard interrupt exit
461 */
462 - extern char except_vec_vi, except_vec_vi_lui;
463 - extern char except_vec_vi_ori, except_vec_vi_end;
464 - extern char rollback_except_vec_vi;
465 - char *vec_start = using_rollback_handler() ?
466 - &rollback_except_vec_vi : &except_vec_vi;
467 + extern const u8 except_vec_vi[], except_vec_vi_lui[];
468 + extern const u8 except_vec_vi_ori[], except_vec_vi_end[];
469 + extern const u8 rollback_except_vec_vi[];
470 + const u8 *vec_start = using_rollback_handler() ?
471 + rollback_except_vec_vi : except_vec_vi;
472 #if defined(CONFIG_CPU_MICROMIPS) || defined(CONFIG_CPU_BIG_ENDIAN)
473 - const int lui_offset = &except_vec_vi_lui - vec_start + 2;
474 - const int ori_offset = &except_vec_vi_ori - vec_start + 2;
475 + const int lui_offset = except_vec_vi_lui - vec_start + 2;
476 + const int ori_offset = except_vec_vi_ori - vec_start + 2;
477 #else
478 - const int lui_offset = &except_vec_vi_lui - vec_start;
479 - const int ori_offset = &except_vec_vi_ori - vec_start;
480 + const int lui_offset = except_vec_vi_lui - vec_start;
481 + const int ori_offset = except_vec_vi_ori - vec_start;
482 #endif
483 - const int handler_len = &except_vec_vi_end - vec_start;
484 + const int handler_len = except_vec_vi_end - vec_start;
485
486 if (handler_len > VECTORSPACING) {
487 /*
488 @@ -2251,7 +2251,7 @@ void per_cpu_trap_init(bool is_boot_cpu)
489 }
490
491 /* Install CPU exception handler */
492 -void set_handler(unsigned long offset, void *addr, unsigned long size)
493 +void set_handler(unsigned long offset, const void *addr, unsigned long size)
494 {
495 #ifdef CONFIG_CPU_MICROMIPS
496 memcpy((void *)(ebase + offset), ((unsigned char *)addr - 1), size);
497 diff --git a/arch/mips/rb532/devices.c b/arch/mips/rb532/devices.c
498 index 0966adccf5200..ed921f7b43648 100644
499 --- a/arch/mips/rb532/devices.c
500 +++ b/arch/mips/rb532/devices.c
501 @@ -313,11 +313,9 @@ static int __init plat_setup_devices(void)
502 static int __init setup_kmac(char *s)
503 {
504 printk(KERN_INFO "korina mac = %s\n", s);
505 - if (!mac_pton(s, korina_dev0_data.mac)) {
506 + if (!mac_pton(s, korina_dev0_data.mac))
507 printk(KERN_ERR "Invalid mac\n");
508 - return -EINVAL;
509 - }
510 - return 0;
511 + return 1;
512 }
513
514 __setup("kmac=", setup_kmac);
515 diff --git a/arch/powerpc/boot/dts/fsl/t104xrdb.dtsi b/arch/powerpc/boot/dts/fsl/t104xrdb.dtsi
516 index 5fdddbd2a62b2..b0a9beab1c26d 100644
517 --- a/arch/powerpc/boot/dts/fsl/t104xrdb.dtsi
518 +++ b/arch/powerpc/boot/dts/fsl/t104xrdb.dtsi
519 @@ -139,12 +139,12 @@
520 fman@400000 {
521 ethernet@e6000 {
522 phy-handle = <&phy_rgmii_0>;
523 - phy-connection-type = "rgmii";
524 + phy-connection-type = "rgmii-id";
525 };
526
527 ethernet@e8000 {
528 phy-handle = <&phy_rgmii_1>;
529 - phy-connection-type = "rgmii";
530 + phy-connection-type = "rgmii-id";
531 };
532
533 mdio0: mdio@fc000 {
534 diff --git a/arch/powerpc/sysdev/fsl_gtm.c b/arch/powerpc/sysdev/fsl_gtm.c
535 index a6f0b96ce2c94..97dee7c99aa02 100644
536 --- a/arch/powerpc/sysdev/fsl_gtm.c
537 +++ b/arch/powerpc/sysdev/fsl_gtm.c
538 @@ -90,7 +90,7 @@ static LIST_HEAD(gtms);
539 */
540 struct gtm_timer *gtm_get_timer16(void)
541 {
542 - struct gtm *gtm = NULL;
543 + struct gtm *gtm;
544 int i;
545
546 list_for_each_entry(gtm, &gtms, list_node) {
547 @@ -107,7 +107,7 @@ struct gtm_timer *gtm_get_timer16(void)
548 spin_unlock_irq(&gtm->lock);
549 }
550
551 - if (gtm)
552 + if (!list_empty(&gtms))
553 return ERR_PTR(-EBUSY);
554 return ERR_PTR(-ENODEV);
555 }
556 diff --git a/arch/x86/events/intel/pt.c b/arch/x86/events/intel/pt.c
557 index 1808c57ce1614..2539aaddd1373 100644
558 --- a/arch/x86/events/intel/pt.c
559 +++ b/arch/x86/events/intel/pt.c
560 @@ -410,7 +410,7 @@ static u64 pt_config_filters(struct perf_event *event)
561 pt->filters.filter[range].msr_b = filter->msr_b;
562 }
563
564 - rtit_ctl |= filter->config << pt_address_ranges[range].reg_off;
565 + rtit_ctl |= (u64)filter->config << pt_address_ranges[range].reg_off;
566 }
567
568 return rtit_ctl;
569 diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
570 index 2e5553091f902..3edafdffa687c 100644
571 --- a/arch/x86/kvm/emulate.c
572 +++ b/arch/x86/kvm/emulate.c
573 @@ -1674,11 +1674,6 @@ static int __load_segment_descriptor(struct x86_emulate_ctxt *ctxt,
574 goto exception;
575 }
576
577 - if (!seg_desc.p) {
578 - err_vec = (seg == VCPU_SREG_SS) ? SS_VECTOR : NP_VECTOR;
579 - goto exception;
580 - }
581 -
582 dpl = seg_desc.dpl;
583
584 switch (seg) {
585 @@ -1718,6 +1713,10 @@ static int __load_segment_descriptor(struct x86_emulate_ctxt *ctxt,
586 case VCPU_SREG_TR:
587 if (seg_desc.s || (seg_desc.type != 1 && seg_desc.type != 9))
588 goto exception;
589 + if (!seg_desc.p) {
590 + err_vec = NP_VECTOR;
591 + goto exception;
592 + }
593 old_desc = seg_desc;
594 seg_desc.type |= 2; /* busy */
595 ret = ctxt->ops->cmpxchg_emulated(ctxt, desc_addr, &old_desc, &seg_desc,
596 @@ -1742,6 +1741,11 @@ static int __load_segment_descriptor(struct x86_emulate_ctxt *ctxt,
597 break;
598 }
599
600 + if (!seg_desc.p) {
601 + err_vec = (seg == VCPU_SREG_SS) ? SS_VECTOR : NP_VECTOR;
602 + goto exception;
603 + }
604 +
605 if (seg_desc.s) {
606 /* mark segment as accessed */
607 if (!(seg_desc.type & 1)) {
608 diff --git a/arch/x86/kvm/hyperv.c b/arch/x86/kvm/hyperv.c
609 index 5e837c96e93f2..56feb7d8f96d5 100644
610 --- a/arch/x86/kvm/hyperv.c
611 +++ b/arch/x86/kvm/hyperv.c
612 @@ -244,6 +244,9 @@ static int synic_set_msr(struct kvm_vcpu_hv_synic *synic,
613 case HV_X64_MSR_EOM: {
614 int i;
615
616 + if (!synic->active)
617 + break;
618 +
619 for (i = 0; i < ARRAY_SIZE(synic->sint); i++)
620 kvm_hv_notify_acked_sint(vcpu, i);
621 break;
622 @@ -504,6 +507,12 @@ static int stimer_start(struct kvm_vcpu_hv_stimer *stimer)
623 static int stimer_set_config(struct kvm_vcpu_hv_stimer *stimer, u64 config,
624 bool host)
625 {
626 + struct kvm_vcpu *vcpu = stimer_to_vcpu(stimer);
627 + struct kvm_vcpu_hv_synic *synic = vcpu_to_synic(vcpu);
628 +
629 + if (!synic->active && (!host || config))
630 + return 1;
631 +
632 trace_kvm_hv_stimer_set_config(stimer_to_vcpu(stimer)->vcpu_id,
633 stimer->index, config, host);
634
635 @@ -518,6 +527,12 @@ static int stimer_set_config(struct kvm_vcpu_hv_stimer *stimer, u64 config,
636 static int stimer_set_count(struct kvm_vcpu_hv_stimer *stimer, u64 count,
637 bool host)
638 {
639 + struct kvm_vcpu *vcpu = stimer_to_vcpu(stimer);
640 + struct kvm_vcpu_hv_synic *synic = vcpu_to_synic(vcpu);
641 +
642 + if (!synic->active && (!host || count))
643 + return 1;
644 +
645 trace_kvm_hv_stimer_set_count(stimer_to_vcpu(stimer)->vcpu_id,
646 stimer->index, count, host);
647
648 diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
649 index bfed29a4c2cec..e5f92488c3cde 100644
650 --- a/arch/x86/kvm/lapic.c
651 +++ b/arch/x86/kvm/lapic.c
652 @@ -1767,10 +1767,7 @@ void kvm_set_lapic_tscdeadline_msr(struct kvm_vcpu *vcpu, u64 data)
653
654 void kvm_lapic_set_tpr(struct kvm_vcpu *vcpu, unsigned long cr8)
655 {
656 - struct kvm_lapic *apic = vcpu->arch.apic;
657 -
658 - apic_set_tpr(apic, ((cr8 & 0x0f) << 4)
659 - | (kvm_lapic_get_reg(apic, APIC_TASKPRI) & 4));
660 + apic_set_tpr(vcpu->arch.apic, (cr8 & 0x0f) << 4);
661 }
662
663 u64 kvm_lapic_get_cr8(struct kvm_vcpu *vcpu)
664 diff --git a/arch/x86/kvm/pmu_amd.c b/arch/x86/kvm/pmu_amd.c
665 index cd944435dfbd7..e0473c72062e2 100644
666 --- a/arch/x86/kvm/pmu_amd.c
667 +++ b/arch/x86/kvm/pmu_amd.c
668 @@ -139,12 +139,10 @@ static int amd_pmu_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
669 /* MSR_K7_EVNTSELn */
670 pmc = get_gp_pmc(pmu, msr, MSR_K7_EVNTSEL0);
671 if (pmc) {
672 - if (data == pmc->eventsel)
673 - return 0;
674 - if (!(data & pmu->reserved_bits)) {
675 + data &= ~pmu->reserved_bits;
676 + if (data != pmc->eventsel)
677 reprogram_gp_counter(pmc, data);
678 - return 0;
679 - }
680 + return 0;
681 }
682
683 return 1;
684 diff --git a/arch/x86/power/cpu.c b/arch/x86/power/cpu.c
685 index c8f947a4aaf20..357b3e6a2f7b1 100644
686 --- a/arch/x86/power/cpu.c
687 +++ b/arch/x86/power/cpu.c
688 @@ -41,7 +41,8 @@ static void msr_save_context(struct saved_context *ctxt)
689 struct saved_msr *end = msr + ctxt->saved_msrs.num;
690
691 while (msr < end) {
692 - msr->valid = !rdmsrl_safe(msr->info.msr_no, &msr->info.reg.q);
693 + if (msr->valid)
694 + rdmsrl(msr->info.msr_no, msr->info.reg.q);
695 msr++;
696 }
697 }
698 @@ -419,8 +420,10 @@ static int msr_build_context(const u32 *msr_id, const int num)
699 }
700
701 for (i = saved_msrs->num, j = 0; i < total_num; i++, j++) {
702 + u64 dummy;
703 +
704 msr_array[i].info.msr_no = msr_id[j];
705 - msr_array[i].valid = false;
706 + msr_array[i].valid = !rdmsrl_safe(msr_id[j], &dummy);
707 msr_array[i].info.reg.q = 0;
708 }
709 saved_msrs->num = total_num;
710 @@ -507,10 +510,24 @@ static int pm_cpu_check(const struct x86_cpu_id *c)
711 return ret;
712 }
713
714 +static void pm_save_spec_msr(void)
715 +{
716 + u32 spec_msr_id[] = {
717 + MSR_IA32_SPEC_CTRL,
718 + MSR_IA32_TSX_CTRL,
719 + MSR_TSX_FORCE_ABORT,
720 + MSR_IA32_MCU_OPT_CTRL,
721 + MSR_AMD64_LS_CFG,
722 + };
723 +
724 + msr_build_context(spec_msr_id, ARRAY_SIZE(spec_msr_id));
725 +}
726 +
727 static int pm_check_save_msr(void)
728 {
729 dmi_check_system(msr_save_dmi_table);
730 pm_cpu_check(msr_save_cpu_table);
731 + pm_save_spec_msr();
732
733 return 0;
734 }
735 diff --git a/arch/xtensa/boot/dts/xtfpga-flash-128m.dtsi b/arch/xtensa/boot/dts/xtfpga-flash-128m.dtsi
736 index d3a88e029873d..d9b399b57bcdc 100644
737 --- a/arch/xtensa/boot/dts/xtfpga-flash-128m.dtsi
738 +++ b/arch/xtensa/boot/dts/xtfpga-flash-128m.dtsi
739 @@ -7,19 +7,19 @@
740 reg = <0x00000000 0x08000000>;
741 bank-width = <2>;
742 device-width = <2>;
743 - partition@0x0 {
744 + partition@0 {
745 label = "data";
746 reg = <0x00000000 0x06000000>;
747 };
748 - partition@0x6000000 {
749 + partition@6000000 {
750 label = "boot loader area";
751 reg = <0x06000000 0x00800000>;
752 };
753 - partition@0x6800000 {
754 + partition@6800000 {
755 label = "kernel image";
756 reg = <0x06800000 0x017e0000>;
757 };
758 - partition@0x7fe0000 {
759 + partition@7fe0000 {
760 label = "boot environment";
761 reg = <0x07fe0000 0x00020000>;
762 };
763 diff --git a/arch/xtensa/boot/dts/xtfpga-flash-16m.dtsi b/arch/xtensa/boot/dts/xtfpga-flash-16m.dtsi
764 index 1d97203c18e7f..c9d0fc0b62657 100644
765 --- a/arch/xtensa/boot/dts/xtfpga-flash-16m.dtsi
766 +++ b/arch/xtensa/boot/dts/xtfpga-flash-16m.dtsi
767 @@ -7,19 +7,19 @@
768 reg = <0x08000000 0x01000000>;
769 bank-width = <2>;
770 device-width = <2>;
771 - partition@0x0 {
772 + partition@0 {
773 label = "boot loader area";
774 reg = <0x00000000 0x00400000>;
775 };
776 - partition@0x400000 {
777 + partition@400000 {
778 label = "kernel image";
779 reg = <0x00400000 0x00600000>;
780 };
781 - partition@0xa00000 {
782 + partition@a00000 {
783 label = "data";
784 reg = <0x00a00000 0x005e0000>;
785 };
786 - partition@0xfe0000 {
787 + partition@fe0000 {
788 label = "boot environment";
789 reg = <0x00fe0000 0x00020000>;
790 };
791 diff --git a/arch/xtensa/boot/dts/xtfpga-flash-4m.dtsi b/arch/xtensa/boot/dts/xtfpga-flash-4m.dtsi
792 index d1c621ca8be10..332892315f92b 100644
793 --- a/arch/xtensa/boot/dts/xtfpga-flash-4m.dtsi
794 +++ b/arch/xtensa/boot/dts/xtfpga-flash-4m.dtsi
795 @@ -7,11 +7,11 @@
796 reg = <0x08000000 0x00400000>;
797 bank-width = <2>;
798 device-width = <2>;
799 - partition@0x0 {
800 + partition@0 {
801 label = "boot loader area";
802 reg = <0x00000000 0x003f0000>;
803 };
804 - partition@0x3f0000 {
805 + partition@3f0000 {
806 label = "boot environment";
807 reg = <0x003f0000 0x00010000>;
808 };
809 diff --git a/crypto/authenc.c b/crypto/authenc.c
810 index 6bfec690ca5be..f9ab04aa6dd59 100644
811 --- a/crypto/authenc.c
812 +++ b/crypto/authenc.c
813 @@ -268,7 +268,7 @@ static int crypto_authenc_decrypt_tail(struct aead_request *req,
814 dst = scatterwalk_ffwd(areq_ctx->dst, req->dst, req->assoclen);
815
816 skcipher_request_set_tfm(skreq, ctx->enc);
817 - skcipher_request_set_callback(skreq, aead_request_flags(req),
818 + skcipher_request_set_callback(skreq, flags,
819 req->base.complete, req->base.data);
820 skcipher_request_set_crypt(skreq, src, dst,
821 req->cryptlen - authsize, req->iv);
822 diff --git a/drivers/acpi/acpica/nswalk.c b/drivers/acpi/acpica/nswalk.c
823 index ebd731fe8e457..6902c2a01f6f7 100644
824 --- a/drivers/acpi/acpica/nswalk.c
825 +++ b/drivers/acpi/acpica/nswalk.c
826 @@ -203,6 +203,9 @@ acpi_ns_walk_namespace(acpi_object_type type,
827
828 if (start_node == ACPI_ROOT_OBJECT) {
829 start_node = acpi_gbl_root_node;
830 + if (!start_node) {
831 + return_ACPI_STATUS(AE_NO_NAMESPACE);
832 + }
833 }
834
835 /* Null child means "get first node" */
836 diff --git a/drivers/acpi/apei/bert.c b/drivers/acpi/apei/bert.c
837 index a05b5c0cf181a..e22f3d89b84b0 100644
838 --- a/drivers/acpi/apei/bert.c
839 +++ b/drivers/acpi/apei/bert.c
840 @@ -31,6 +31,7 @@
841
842 #undef pr_fmt
843 #define pr_fmt(fmt) "BERT: " fmt
844 +#define ACPI_BERT_PRINT_MAX_LEN 1024
845
846 static int bert_disable;
847
848 @@ -59,8 +60,11 @@ static void __init bert_print_all(struct acpi_bert_region *region,
849 }
850
851 pr_info_once("Error records from previous boot:\n");
852 -
853 - cper_estatus_print(KERN_INFO HW_ERR, estatus);
854 + if (region_len < ACPI_BERT_PRINT_MAX_LEN)
855 + cper_estatus_print(KERN_INFO HW_ERR, estatus);
856 + else
857 + pr_info_once("Max print length exceeded, table data is available at:\n"
858 + "/sys/firmware/acpi/tables/data/BERT");
859
860 /*
861 * Because the boot error source is "one-time polled" type,
862 diff --git a/drivers/acpi/cppc_acpi.c b/drivers/acpi/cppc_acpi.c
863 index 318bdfb8703cc..b27a405a0f87d 100644
864 --- a/drivers/acpi/cppc_acpi.c
865 +++ b/drivers/acpi/cppc_acpi.c
866 @@ -681,6 +681,11 @@ int acpi_cppc_processor_probe(struct acpi_processor *pr)
867 cpc_obj = &out_obj->package.elements[0];
868 if (cpc_obj->type == ACPI_TYPE_INTEGER) {
869 num_ent = cpc_obj->integer.value;
870 + if (num_ent <= 1) {
871 + pr_debug("Unexpected _CPC NumEntries value (%d) for CPU:%d\n",
872 + num_ent, pr->id);
873 + goto out_free;
874 + }
875 } else {
876 pr_debug("Unexpected entry type(%d) for NumEntries\n",
877 cpc_obj->type);
878 diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c
879 index d707cd16ed014..b4d50c5dcbf86 100644
880 --- a/drivers/base/power/main.c
881 +++ b/drivers/base/power/main.c
882 @@ -1766,7 +1766,9 @@ static bool pm_ops_is_empty(const struct dev_pm_ops *ops)
883
884 void device_pm_check_callbacks(struct device *dev)
885 {
886 - spin_lock_irq(&dev->power.lock);
887 + unsigned long flags;
888 +
889 + spin_lock_irqsave(&dev->power.lock, flags);
890 dev->power.no_pm_callbacks =
891 (!dev->bus || (pm_ops_is_empty(dev->bus->pm) &&
892 !dev->bus->suspend && !dev->bus->resume)) &&
893 @@ -1776,5 +1778,5 @@ void device_pm_check_callbacks(struct device *dev)
894 (!dev->pm_domain || pm_ops_is_empty(&dev->pm_domain->ops)) &&
895 (!dev->driver || (pm_ops_is_empty(dev->driver->pm) &&
896 !dev->driver->suspend && !dev->driver->resume));
897 - spin_unlock_irq(&dev->power.lock);
898 + spin_unlock_irqrestore(&dev->power.lock, flags);
899 }
900 diff --git a/drivers/block/drbd/drbd_int.h b/drivers/block/drbd/drbd_int.h
901 index 4cb8f21ff4eff..4a7be81e7de9a 100644
902 --- a/drivers/block/drbd/drbd_int.h
903 +++ b/drivers/block/drbd/drbd_int.h
904 @@ -1696,22 +1696,22 @@ struct sib_info {
905 };
906 void drbd_bcast_event(struct drbd_device *device, const struct sib_info *sib);
907
908 -extern void notify_resource_state(struct sk_buff *,
909 +extern int notify_resource_state(struct sk_buff *,
910 unsigned int,
911 struct drbd_resource *,
912 struct resource_info *,
913 enum drbd_notification_type);
914 -extern void notify_device_state(struct sk_buff *,
915 +extern int notify_device_state(struct sk_buff *,
916 unsigned int,
917 struct drbd_device *,
918 struct device_info *,
919 enum drbd_notification_type);
920 -extern void notify_connection_state(struct sk_buff *,
921 +extern int notify_connection_state(struct sk_buff *,
922 unsigned int,
923 struct drbd_connection *,
924 struct connection_info *,
925 enum drbd_notification_type);
926 -extern void notify_peer_device_state(struct sk_buff *,
927 +extern int notify_peer_device_state(struct sk_buff *,
928 unsigned int,
929 struct drbd_peer_device *,
930 struct peer_device_info *,
931 diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c
932 index b809f325c2bea..3c9cee9520ed5 100644
933 --- a/drivers/block/drbd/drbd_nl.c
934 +++ b/drivers/block/drbd/drbd_nl.c
935 @@ -4611,7 +4611,7 @@ static int nla_put_notification_header(struct sk_buff *msg,
936 return drbd_notification_header_to_skb(msg, &nh, true);
937 }
938
939 -void notify_resource_state(struct sk_buff *skb,
940 +int notify_resource_state(struct sk_buff *skb,
941 unsigned int seq,
942 struct drbd_resource *resource,
943 struct resource_info *resource_info,
944 @@ -4653,16 +4653,17 @@ void notify_resource_state(struct sk_buff *skb,
945 if (err && err != -ESRCH)
946 goto failed;
947 }
948 - return;
949 + return 0;
950
951 nla_put_failure:
952 nlmsg_free(skb);
953 failed:
954 drbd_err(resource, "Error %d while broadcasting event. Event seq:%u\n",
955 err, seq);
956 + return err;
957 }
958
959 -void notify_device_state(struct sk_buff *skb,
960 +int notify_device_state(struct sk_buff *skb,
961 unsigned int seq,
962 struct drbd_device *device,
963 struct device_info *device_info,
964 @@ -4702,16 +4703,17 @@ void notify_device_state(struct sk_buff *skb,
965 if (err && err != -ESRCH)
966 goto failed;
967 }
968 - return;
969 + return 0;
970
971 nla_put_failure:
972 nlmsg_free(skb);
973 failed:
974 drbd_err(device, "Error %d while broadcasting event. Event seq:%u\n",
975 err, seq);
976 + return err;
977 }
978
979 -void notify_connection_state(struct sk_buff *skb,
980 +int notify_connection_state(struct sk_buff *skb,
981 unsigned int seq,
982 struct drbd_connection *connection,
983 struct connection_info *connection_info,
984 @@ -4751,16 +4753,17 @@ void notify_connection_state(struct sk_buff *skb,
985 if (err && err != -ESRCH)
986 goto failed;
987 }
988 - return;
989 + return 0;
990
991 nla_put_failure:
992 nlmsg_free(skb);
993 failed:
994 drbd_err(connection, "Error %d while broadcasting event. Event seq:%u\n",
995 err, seq);
996 + return err;
997 }
998
999 -void notify_peer_device_state(struct sk_buff *skb,
1000 +int notify_peer_device_state(struct sk_buff *skb,
1001 unsigned int seq,
1002 struct drbd_peer_device *peer_device,
1003 struct peer_device_info *peer_device_info,
1004 @@ -4801,13 +4804,14 @@ void notify_peer_device_state(struct sk_buff *skb,
1005 if (err && err != -ESRCH)
1006 goto failed;
1007 }
1008 - return;
1009 + return 0;
1010
1011 nla_put_failure:
1012 nlmsg_free(skb);
1013 failed:
1014 drbd_err(peer_device, "Error %d while broadcasting event. Event seq:%u\n",
1015 err, seq);
1016 + return err;
1017 }
1018
1019 void notify_helper(enum drbd_notification_type type,
1020 @@ -4858,7 +4862,7 @@ fail:
1021 err, seq);
1022 }
1023
1024 -static void notify_initial_state_done(struct sk_buff *skb, unsigned int seq)
1025 +static int notify_initial_state_done(struct sk_buff *skb, unsigned int seq)
1026 {
1027 struct drbd_genlmsghdr *dh;
1028 int err;
1029 @@ -4872,11 +4876,12 @@ static void notify_initial_state_done(struct sk_buff *skb, unsigned int seq)
1030 if (nla_put_notification_header(skb, NOTIFY_EXISTS))
1031 goto nla_put_failure;
1032 genlmsg_end(skb, dh);
1033 - return;
1034 + return 0;
1035
1036 nla_put_failure:
1037 nlmsg_free(skb);
1038 pr_err("Error %d sending event. Event seq:%u\n", err, seq);
1039 + return err;
1040 }
1041
1042 static void free_state_changes(struct list_head *list)
1043 @@ -4903,6 +4908,7 @@ static int get_initial_state(struct sk_buff *skb, struct netlink_callback *cb)
1044 unsigned int seq = cb->args[2];
1045 unsigned int n;
1046 enum drbd_notification_type flags = 0;
1047 + int err = 0;
1048
1049 /* There is no need for taking notification_mutex here: it doesn't
1050 matter if the initial state events mix with later state chage
1051 @@ -4911,32 +4917,32 @@ static int get_initial_state(struct sk_buff *skb, struct netlink_callback *cb)
1052
1053 cb->args[5]--;
1054 if (cb->args[5] == 1) {
1055 - notify_initial_state_done(skb, seq);
1056 + err = notify_initial_state_done(skb, seq);
1057 goto out;
1058 }
1059 n = cb->args[4]++;
1060 if (cb->args[4] < cb->args[3])
1061 flags |= NOTIFY_CONTINUES;
1062 if (n < 1) {
1063 - notify_resource_state_change(skb, seq, state_change->resource,
1064 + err = notify_resource_state_change(skb, seq, state_change->resource,
1065 NOTIFY_EXISTS | flags);
1066 goto next;
1067 }
1068 n--;
1069 if (n < state_change->n_connections) {
1070 - notify_connection_state_change(skb, seq, &state_change->connections[n],
1071 + err = notify_connection_state_change(skb, seq, &state_change->connections[n],
1072 NOTIFY_EXISTS | flags);
1073 goto next;
1074 }
1075 n -= state_change->n_connections;
1076 if (n < state_change->n_devices) {
1077 - notify_device_state_change(skb, seq, &state_change->devices[n],
1078 + err = notify_device_state_change(skb, seq, &state_change->devices[n],
1079 NOTIFY_EXISTS | flags);
1080 goto next;
1081 }
1082 n -= state_change->n_devices;
1083 if (n < state_change->n_devices * state_change->n_connections) {
1084 - notify_peer_device_state_change(skb, seq, &state_change->peer_devices[n],
1085 + err = notify_peer_device_state_change(skb, seq, &state_change->peer_devices[n],
1086 NOTIFY_EXISTS | flags);
1087 goto next;
1088 }
1089 @@ -4951,7 +4957,10 @@ next:
1090 cb->args[4] = 0;
1091 }
1092 out:
1093 - return skb->len;
1094 + if (err)
1095 + return err;
1096 + else
1097 + return skb->len;
1098 }
1099
1100 int drbd_adm_get_initial_state(struct sk_buff *skb, struct netlink_callback *cb)
1101 diff --git a/drivers/block/drbd/drbd_state.c b/drivers/block/drbd/drbd_state.c
1102 index eea0c4aec9789..b636d9c08c0e0 100644
1103 --- a/drivers/block/drbd/drbd_state.c
1104 +++ b/drivers/block/drbd/drbd_state.c
1105 @@ -1505,7 +1505,7 @@ int drbd_bitmap_io_from_worker(struct drbd_device *device,
1106 return rv;
1107 }
1108
1109 -void notify_resource_state_change(struct sk_buff *skb,
1110 +int notify_resource_state_change(struct sk_buff *skb,
1111 unsigned int seq,
1112 struct drbd_resource_state_change *resource_state_change,
1113 enum drbd_notification_type type)
1114 @@ -1518,10 +1518,10 @@ void notify_resource_state_change(struct sk_buff *skb,
1115 .res_susp_fen = resource_state_change->susp_fen[NEW],
1116 };
1117
1118 - notify_resource_state(skb, seq, resource, &resource_info, type);
1119 + return notify_resource_state(skb, seq, resource, &resource_info, type);
1120 }
1121
1122 -void notify_connection_state_change(struct sk_buff *skb,
1123 +int notify_connection_state_change(struct sk_buff *skb,
1124 unsigned int seq,
1125 struct drbd_connection_state_change *connection_state_change,
1126 enum drbd_notification_type type)
1127 @@ -1532,10 +1532,10 @@ void notify_connection_state_change(struct sk_buff *skb,
1128 .conn_role = connection_state_change->peer_role[NEW],
1129 };
1130
1131 - notify_connection_state(skb, seq, connection, &connection_info, type);
1132 + return notify_connection_state(skb, seq, connection, &connection_info, type);
1133 }
1134
1135 -void notify_device_state_change(struct sk_buff *skb,
1136 +int notify_device_state_change(struct sk_buff *skb,
1137 unsigned int seq,
1138 struct drbd_device_state_change *device_state_change,
1139 enum drbd_notification_type type)
1140 @@ -1545,10 +1545,10 @@ void notify_device_state_change(struct sk_buff *skb,
1141 .dev_disk_state = device_state_change->disk_state[NEW],
1142 };
1143
1144 - notify_device_state(skb, seq, device, &device_info, type);
1145 + return notify_device_state(skb, seq, device, &device_info, type);
1146 }
1147
1148 -void notify_peer_device_state_change(struct sk_buff *skb,
1149 +int notify_peer_device_state_change(struct sk_buff *skb,
1150 unsigned int seq,
1151 struct drbd_peer_device_state_change *p,
1152 enum drbd_notification_type type)
1153 @@ -1562,7 +1562,7 @@ void notify_peer_device_state_change(struct sk_buff *skb,
1154 .peer_resync_susp_dependency = p->resync_susp_dependency[NEW],
1155 };
1156
1157 - notify_peer_device_state(skb, seq, peer_device, &peer_device_info, type);
1158 + return notify_peer_device_state(skb, seq, peer_device, &peer_device_info, type);
1159 }
1160
1161 static void broadcast_state_change(struct drbd_state_change *state_change)
1162 @@ -1570,7 +1570,7 @@ static void broadcast_state_change(struct drbd_state_change *state_change)
1163 struct drbd_resource_state_change *resource_state_change = &state_change->resource[0];
1164 bool resource_state_has_changed;
1165 unsigned int n_device, n_connection, n_peer_device, n_peer_devices;
1166 - void (*last_func)(struct sk_buff *, unsigned int, void *,
1167 + int (*last_func)(struct sk_buff *, unsigned int, void *,
1168 enum drbd_notification_type) = NULL;
1169 void *uninitialized_var(last_arg);
1170
1171 diff --git a/drivers/block/drbd/drbd_state_change.h b/drivers/block/drbd/drbd_state_change.h
1172 index 9e503a1a0bfbc..e5a956d268664 100644
1173 --- a/drivers/block/drbd/drbd_state_change.h
1174 +++ b/drivers/block/drbd/drbd_state_change.h
1175 @@ -43,19 +43,19 @@ extern struct drbd_state_change *remember_old_state(struct drbd_resource *, gfp_
1176 extern void copy_old_to_new_state_change(struct drbd_state_change *);
1177 extern void forget_state_change(struct drbd_state_change *);
1178
1179 -extern void notify_resource_state_change(struct sk_buff *,
1180 +extern int notify_resource_state_change(struct sk_buff *,
1181 unsigned int,
1182 struct drbd_resource_state_change *,
1183 enum drbd_notification_type type);
1184 -extern void notify_connection_state_change(struct sk_buff *,
1185 +extern int notify_connection_state_change(struct sk_buff *,
1186 unsigned int,
1187 struct drbd_connection_state_change *,
1188 enum drbd_notification_type type);
1189 -extern void notify_device_state_change(struct sk_buff *,
1190 +extern int notify_device_state_change(struct sk_buff *,
1191 unsigned int,
1192 struct drbd_device_state_change *,
1193 enum drbd_notification_type type);
1194 -extern void notify_peer_device_state_change(struct sk_buff *,
1195 +extern int notify_peer_device_state_change(struct sk_buff *,
1196 unsigned int,
1197 struct drbd_peer_device_state_change *,
1198 enum drbd_notification_type type);
1199 diff --git a/drivers/block/loop.c b/drivers/block/loop.c
1200 index f236b7984b946..2ff17b397cd2f 100644
1201 --- a/drivers/block/loop.c
1202 +++ b/drivers/block/loop.c
1203 @@ -773,33 +773,33 @@ static ssize_t loop_attr_backing_file_show(struct loop_device *lo, char *buf)
1204
1205 static ssize_t loop_attr_offset_show(struct loop_device *lo, char *buf)
1206 {
1207 - return sprintf(buf, "%llu\n", (unsigned long long)lo->lo_offset);
1208 + return sysfs_emit(buf, "%llu\n", (unsigned long long)lo->lo_offset);
1209 }
1210
1211 static ssize_t loop_attr_sizelimit_show(struct loop_device *lo, char *buf)
1212 {
1213 - return sprintf(buf, "%llu\n", (unsigned long long)lo->lo_sizelimit);
1214 + return sysfs_emit(buf, "%llu\n", (unsigned long long)lo->lo_sizelimit);
1215 }
1216
1217 static ssize_t loop_attr_autoclear_show(struct loop_device *lo, char *buf)
1218 {
1219 int autoclear = (lo->lo_flags & LO_FLAGS_AUTOCLEAR);
1220
1221 - return sprintf(buf, "%s\n", autoclear ? "1" : "0");
1222 + return sysfs_emit(buf, "%s\n", autoclear ? "1" : "0");
1223 }
1224
1225 static ssize_t loop_attr_partscan_show(struct loop_device *lo, char *buf)
1226 {
1227 int partscan = (lo->lo_flags & LO_FLAGS_PARTSCAN);
1228
1229 - return sprintf(buf, "%s\n", partscan ? "1" : "0");
1230 + return sysfs_emit(buf, "%s\n", partscan ? "1" : "0");
1231 }
1232
1233 static ssize_t loop_attr_dio_show(struct loop_device *lo, char *buf)
1234 {
1235 int dio = (lo->lo_flags & LO_FLAGS_DIRECT_IO);
1236
1237 - return sprintf(buf, "%s\n", dio ? "1" : "0");
1238 + return sysfs_emit(buf, "%s\n", dio ? "1" : "0");
1239 }
1240
1241 LOOP_ATTR_RO(backing_file);
1242 diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
1243 index 302260e9002c7..45bd0d7d6a942 100644
1244 --- a/drivers/block/virtio_blk.c
1245 +++ b/drivers/block/virtio_blk.c
1246 @@ -692,9 +692,17 @@ static int virtblk_probe(struct virtio_device *vdev)
1247 err = virtio_cread_feature(vdev, VIRTIO_BLK_F_BLK_SIZE,
1248 struct virtio_blk_config, blk_size,
1249 &blk_size);
1250 - if (!err)
1251 + if (!err) {
1252 + err = blk_validate_block_size(blk_size);
1253 + if (err) {
1254 + dev_err(&vdev->dev,
1255 + "virtio_blk: invalid block size: 0x%x\n",
1256 + blk_size);
1257 + goto out_free_tags;
1258 + }
1259 +
1260 blk_queue_logical_block_size(q, blk_size);
1261 - else
1262 + } else
1263 blk_size = queue_logical_block_size(q);
1264
1265 /* Use topology information if available */
1266 diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c
1267 index 2632b0fdb1b53..ba4c546db756f 100644
1268 --- a/drivers/char/virtio_console.c
1269 +++ b/drivers/char/virtio_console.c
1270 @@ -2004,6 +2004,13 @@ static void virtcons_remove(struct virtio_device *vdev)
1271 list_del(&portdev->list);
1272 spin_unlock_irq(&pdrvdata_lock);
1273
1274 + /* Device is going away, exit any polling for buffers */
1275 + virtio_break_device(vdev);
1276 + if (use_multiport(portdev))
1277 + flush_work(&portdev->control_work);
1278 + else
1279 + flush_work(&portdev->config_work);
1280 +
1281 /* Disable interrupts for vqs */
1282 vdev->config->reset(vdev);
1283 /* Finish up work that's lined up */
1284 @@ -2277,7 +2284,7 @@ static struct virtio_driver virtio_rproc_serial = {
1285 .remove = virtcons_remove,
1286 };
1287
1288 -static int __init init(void)
1289 +static int __init virtio_console_init(void)
1290 {
1291 int err;
1292
1293 @@ -2314,7 +2321,7 @@ free:
1294 return err;
1295 }
1296
1297 -static void __exit fini(void)
1298 +static void __exit virtio_console_fini(void)
1299 {
1300 reclaim_dma_bufs();
1301
1302 @@ -2324,8 +2331,8 @@ static void __exit fini(void)
1303 class_destroy(pdrvdata.class);
1304 debugfs_remove_recursive(pdrvdata.debugfs_dir);
1305 }
1306 -module_init(init);
1307 -module_exit(fini);
1308 +module_init(virtio_console_init);
1309 +module_exit(virtio_console_fini);
1310
1311 MODULE_DESCRIPTION("Virtio console driver");
1312 MODULE_LICENSE("GPL");
1313 diff --git a/drivers/clk/clk-clps711x.c b/drivers/clk/clk-clps711x.c
1314 index 9193f64561f6f..4dcf15a882699 100644
1315 --- a/drivers/clk/clk-clps711x.c
1316 +++ b/drivers/clk/clk-clps711x.c
1317 @@ -32,11 +32,13 @@ static const struct clk_div_table spi_div_table[] = {
1318 { .val = 1, .div = 8, },
1319 { .val = 2, .div = 2, },
1320 { .val = 3, .div = 1, },
1321 + { /* sentinel */ }
1322 };
1323
1324 static const struct clk_div_table timer_div_table[] = {
1325 { .val = 0, .div = 256, },
1326 { .val = 1, .div = 1, },
1327 + { /* sentinel */ }
1328 };
1329
1330 struct clps711x_clk {
1331 diff --git a/drivers/clk/loongson1/clk-loongson1c.c b/drivers/clk/loongson1/clk-loongson1c.c
1332 index 3466f7320b40b..e3aa502761a31 100644
1333 --- a/drivers/clk/loongson1/clk-loongson1c.c
1334 +++ b/drivers/clk/loongson1/clk-loongson1c.c
1335 @@ -40,6 +40,7 @@ static const struct clk_div_table ahb_div_table[] = {
1336 [1] = { .val = 1, .div = 4 },
1337 [2] = { .val = 2, .div = 3 },
1338 [3] = { .val = 3, .div = 3 },
1339 + [4] = { /* sentinel */ }
1340 };
1341
1342 void __init ls1x_clk_init(void)
1343 diff --git a/drivers/clk/qcom/clk-rcg2.c b/drivers/clk/qcom/clk-rcg2.c
1344 index 29abb600d7e15..e4d605dcc03db 100644
1345 --- a/drivers/clk/qcom/clk-rcg2.c
1346 +++ b/drivers/clk/qcom/clk-rcg2.c
1347 @@ -644,6 +644,7 @@ static const struct frac_entry frac_table_pixel[] = {
1348 { 2, 9 },
1349 { 4, 9 },
1350 { 1, 1 },
1351 + { 2, 3 },
1352 { }
1353 };
1354
1355 diff --git a/drivers/clk/tegra/clk-emc.c b/drivers/clk/tegra/clk-emc.c
1356 index 74e7544f861ba..348e7196b7b93 100644
1357 --- a/drivers/clk/tegra/clk-emc.c
1358 +++ b/drivers/clk/tegra/clk-emc.c
1359 @@ -190,6 +190,7 @@ static struct tegra_emc *emc_ensure_emc_driver(struct tegra_clk_emc *tegra)
1360
1361 tegra->emc = platform_get_drvdata(pdev);
1362 if (!tegra->emc) {
1363 + put_device(&pdev->dev);
1364 pr_err("%s: cannot find EMC driver\n", __func__);
1365 return NULL;
1366 }
1367 diff --git a/drivers/clk/uniphier/clk-uniphier-fixed-rate.c b/drivers/clk/uniphier/clk-uniphier-fixed-rate.c
1368 index 0ad0d46173c0e..225de2302cb76 100644
1369 --- a/drivers/clk/uniphier/clk-uniphier-fixed-rate.c
1370 +++ b/drivers/clk/uniphier/clk-uniphier-fixed-rate.c
1371 @@ -33,6 +33,7 @@ struct clk_hw *uniphier_clk_register_fixed_rate(struct device *dev,
1372
1373 init.name = name;
1374 init.ops = &clk_fixed_rate_ops;
1375 + init.flags = 0;
1376 init.parent_names = NULL;
1377 init.num_parents = 0;
1378
1379 diff --git a/drivers/clocksource/acpi_pm.c b/drivers/clocksource/acpi_pm.c
1380 index 28037d0b8dcd1..55348e7c1e6f7 100644
1381 --- a/drivers/clocksource/acpi_pm.c
1382 +++ b/drivers/clocksource/acpi_pm.c
1383 @@ -230,8 +230,10 @@ static int __init parse_pmtmr(char *arg)
1384 int ret;
1385
1386 ret = kstrtouint(arg, 16, &base);
1387 - if (ret)
1388 - return ret;
1389 + if (ret) {
1390 + pr_warn("PMTMR: invalid 'pmtmr=' value: '%s'\n", arg);
1391 + return 1;
1392 + }
1393
1394 pr_info("PMTMR IOPort override: 0x%04x -> 0x%04x\n", pmtmr_ioport,
1395 base);
1396 diff --git a/drivers/crypto/ccp/ccp-dmaengine.c b/drivers/crypto/ccp/ccp-dmaengine.c
1397 index c4581510c3a14..6f9e228fc8adb 100644
1398 --- a/drivers/crypto/ccp/ccp-dmaengine.c
1399 +++ b/drivers/crypto/ccp/ccp-dmaengine.c
1400 @@ -621,6 +621,20 @@ static int ccp_terminate_all(struct dma_chan *dma_chan)
1401 return 0;
1402 }
1403
1404 +static void ccp_dma_release(struct ccp_device *ccp)
1405 +{
1406 + struct ccp_dma_chan *chan;
1407 + struct dma_chan *dma_chan;
1408 + unsigned int i;
1409 +
1410 + for (i = 0; i < ccp->cmd_q_count; i++) {
1411 + chan = ccp->ccp_dma_chan + i;
1412 + dma_chan = &chan->dma_chan;
1413 + tasklet_kill(&chan->cleanup_tasklet);
1414 + list_del_rcu(&dma_chan->device_node);
1415 + }
1416 +}
1417 +
1418 int ccp_dmaengine_register(struct ccp_device *ccp)
1419 {
1420 struct ccp_dma_chan *chan;
1421 @@ -715,6 +729,7 @@ int ccp_dmaengine_register(struct ccp_device *ccp)
1422 return 0;
1423
1424 err_reg:
1425 + ccp_dma_release(ccp);
1426 kmem_cache_destroy(ccp->dma_desc_cache);
1427
1428 err_cache:
1429 @@ -728,6 +743,7 @@ void ccp_dmaengine_unregister(struct ccp_device *ccp)
1430 struct dma_device *dma_dev = &ccp->dma_dev;
1431
1432 dma_async_device_unregister(dma_dev);
1433 + ccp_dma_release(ccp);
1434
1435 kmem_cache_destroy(ccp->dma_desc_cache);
1436 kmem_cache_destroy(ccp->dma_cmd_cache);
1437 diff --git a/drivers/crypto/mxs-dcp.c b/drivers/crypto/mxs-dcp.c
1438 index 0e14a6642de42..ad714798f5d86 100644
1439 --- a/drivers/crypto/mxs-dcp.c
1440 +++ b/drivers/crypto/mxs-dcp.c
1441 @@ -328,7 +328,7 @@ static int mxs_dcp_aes_block_crypt(struct crypto_async_request *arq)
1442 memset(key + AES_KEYSIZE_128, 0, AES_KEYSIZE_128);
1443 }
1444
1445 - for_each_sg(req->src, src, sg_nents(src), i) {
1446 + for_each_sg(req->src, src, sg_nents(req->src), i) {
1447 src_buf = sg_virt(src);
1448 len = sg_dma_len(src);
1449 tlen += len;
1450 diff --git a/drivers/crypto/vmx/Kconfig b/drivers/crypto/vmx/Kconfig
1451 index c3d524ea69987..f39eeca87932e 100644
1452 --- a/drivers/crypto/vmx/Kconfig
1453 +++ b/drivers/crypto/vmx/Kconfig
1454 @@ -1,7 +1,11 @@
1455 config CRYPTO_DEV_VMX_ENCRYPT
1456 tristate "Encryption acceleration support on P8 CPU"
1457 depends on CRYPTO_DEV_VMX
1458 + select CRYPTO_AES
1459 + select CRYPTO_CBC
1460 + select CRYPTO_CTR
1461 select CRYPTO_GHASH
1462 + select CRYPTO_XTS
1463 default m
1464 help
1465 Support for VMX cryptographic acceleration instructions on Power8 CPU.
1466 diff --git a/drivers/dma/sh/shdma-base.c b/drivers/dma/sh/shdma-base.c
1467 index 4f8dfe77da3c5..12fa48e380cf5 100644
1468 --- a/drivers/dma/sh/shdma-base.c
1469 +++ b/drivers/dma/sh/shdma-base.c
1470 @@ -118,10 +118,8 @@ static dma_cookie_t shdma_tx_submit(struct dma_async_tx_descriptor *tx)
1471 ret = pm_runtime_get(schan->dev);
1472
1473 spin_unlock_irq(&schan->chan_lock);
1474 - if (ret < 0) {
1475 + if (ret < 0)
1476 dev_err(schan->dev, "%s(): GET = %d\n", __func__, ret);
1477 - pm_runtime_put(schan->dev);
1478 - }
1479
1480 pm_runtime_barrier(schan->dev);
1481
1482 diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_events.c b/drivers/gpu/drm/amd/amdkfd/kfd_events.c
1483 index 6a3470f849989..732713ff3190d 100644
1484 --- a/drivers/gpu/drm/amd/amdkfd/kfd_events.c
1485 +++ b/drivers/gpu/drm/amd/amdkfd/kfd_events.c
1486 @@ -607,6 +607,8 @@ static struct kfd_event_waiter *alloc_event_waiters(uint32_t num_events)
1487 event_waiters = kmalloc_array(num_events,
1488 sizeof(struct kfd_event_waiter),
1489 GFP_KERNEL);
1490 + if (!event_waiters)
1491 + return NULL;
1492
1493 for (i = 0; (event_waiters) && (i < num_events) ; i++) {
1494 INIT_LIST_HEAD(&event_waiters[i].waiters);
1495 diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
1496 index b07b32eb0c4bb..6f93250518e3e 100644
1497 --- a/drivers/gpu/drm/drm_edid.c
1498 +++ b/drivers/gpu/drm/drm_edid.c
1499 @@ -3791,16 +3791,8 @@ static void drm_parse_hdmi_deep_color_info(struct drm_connector *connector,
1500 connector->name, dc_bpc);
1501 info->bpc = dc_bpc;
1502
1503 - /*
1504 - * Deep color support mandates RGB444 support for all video
1505 - * modes and forbids YCRCB422 support for all video modes per
1506 - * HDMI 1.3 spec.
1507 - */
1508 - info->color_formats = DRM_COLOR_FORMAT_RGB444;
1509 -
1510 /* YCRCB444 is optional according to spec. */
1511 if (hdmi[6] & DRM_EDID_HDMI_DC_Y444) {
1512 - info->color_formats |= DRM_COLOR_FORMAT_YCRCB444;
1513 DRM_DEBUG("%s: HDMI sink does YCRCB444 in deep color.\n",
1514 connector->name);
1515 }
1516 diff --git a/drivers/gpu/drm/imx/parallel-display.c b/drivers/gpu/drm/imx/parallel-display.c
1517 index d796ada2a47ab..924a11232b843 100644
1518 --- a/drivers/gpu/drm/imx/parallel-display.c
1519 +++ b/drivers/gpu/drm/imx/parallel-display.c
1520 @@ -83,8 +83,10 @@ static int imx_pd_connector_get_modes(struct drm_connector *connector)
1521 ret = of_get_drm_display_mode(np, &imxpd->mode,
1522 &imxpd->bus_flags,
1523 OF_USE_NATIVE_MODE);
1524 - if (ret)
1525 + if (ret) {
1526 + drm_mode_destroy(connector->dev, mode);
1527 return ret;
1528 + }
1529
1530 drm_mode_copy(mode, &imxpd->mode);
1531 mode->type |= DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED,
1532 diff --git a/drivers/gpu/drm/tegra/dsi.c b/drivers/gpu/drm/tegra/dsi.c
1533 index 3dea1216bafdc..dfd9e0b9582d8 100644
1534 --- a/drivers/gpu/drm/tegra/dsi.c
1535 +++ b/drivers/gpu/drm/tegra/dsi.c
1536 @@ -1475,8 +1475,10 @@ static int tegra_dsi_ganged_probe(struct tegra_dsi *dsi)
1537 dsi->slave = platform_get_drvdata(gangster);
1538 of_node_put(np);
1539
1540 - if (!dsi->slave)
1541 + if (!dsi->slave) {
1542 + put_device(&gangster->dev);
1543 return -EPROBE_DEFER;
1544 + }
1545
1546 dsi->slave->master = dsi;
1547 }
1548 diff --git a/drivers/gpu/ipu-v3/ipu-di.c b/drivers/gpu/ipu-v3/ipu-di.c
1549 index a8d87ddd8a176..dc0511b22600c 100644
1550 --- a/drivers/gpu/ipu-v3/ipu-di.c
1551 +++ b/drivers/gpu/ipu-v3/ipu-di.c
1552 @@ -460,8 +460,9 @@ static void ipu_di_config_clock(struct ipu_di *di,
1553
1554 error = rate / (sig->mode.pixelclock / 1000);
1555
1556 - dev_dbg(di->ipu->dev, " IPU clock can give %lu with divider %u, error %d.%u%%\n",
1557 - rate, div, (signed)(error - 1000) / 10, error % 10);
1558 + dev_dbg(di->ipu->dev, " IPU clock can give %lu with divider %u, error %c%d.%d%%\n",
1559 + rate, div, error < 1000 ? '-' : '+',
1560 + abs(error - 1000) / 10, abs(error - 1000) % 10);
1561
1562 /* Allow a 1% error */
1563 if (error < 1010 && error >= 990) {
1564 diff --git a/drivers/hid/i2c-hid/i2c-hid-core.c b/drivers/hid/i2c-hid/i2c-hid-core.c
1565 index 518ccf15188ef..26c7701fb188d 100644
1566 --- a/drivers/hid/i2c-hid/i2c-hid-core.c
1567 +++ b/drivers/hid/i2c-hid/i2c-hid-core.c
1568 @@ -643,6 +643,17 @@ static int i2c_hid_get_raw_report(struct hid_device *hid,
1569 if (report_type == HID_OUTPUT_REPORT)
1570 return -EINVAL;
1571
1572 + /*
1573 + * In case of unnumbered reports the response from the device will
1574 + * not have the report ID that the upper layers expect, so we need
1575 + * to stash it the buffer ourselves and adjust the data size.
1576 + */
1577 + if (!report_number) {
1578 + buf[0] = 0;
1579 + buf++;
1580 + count--;
1581 + }
1582 +
1583 /* +2 bytes to include the size of the reply in the query buffer */
1584 ask_count = min(count + 2, (size_t)ihid->bufsize);
1585
1586 @@ -664,6 +675,9 @@ static int i2c_hid_get_raw_report(struct hid_device *hid,
1587 count = min(count, ret_count - 2);
1588 memcpy(buf, ihid->rawbuf + 2, count);
1589
1590 + if (!report_number)
1591 + count++;
1592 +
1593 return count;
1594 }
1595
1596 @@ -680,17 +694,19 @@ static int i2c_hid_output_raw_report(struct hid_device *hid, __u8 *buf,
1597
1598 mutex_lock(&ihid->reset_lock);
1599
1600 - if (report_id) {
1601 - buf++;
1602 - count--;
1603 - }
1604 -
1605 + /*
1606 + * Note that both numbered and unnumbered reports passed here
1607 + * are supposed to have report ID stored in the 1st byte of the
1608 + * buffer, so we strip it off unconditionally before passing payload
1609 + * to i2c_hid_set_or_send_report which takes care of encoding
1610 + * everything properly.
1611 + */
1612 ret = i2c_hid_set_or_send_report(client,
1613 report_type == HID_FEATURE_REPORT ? 0x03 : 0x02,
1614 - report_id, buf, count, use_data);
1615 + report_id, buf + 1, count - 1, use_data);
1616
1617 - if (report_id && ret >= 0)
1618 - ret++; /* add report_id to the number of transfered bytes */
1619 + if (ret >= 0)
1620 + ret++; /* add report_id to the number of transferred bytes */
1621
1622 mutex_unlock(&ihid->reset_lock);
1623
1624 diff --git a/drivers/hwmon/pmbus/pmbus.h b/drivers/hwmon/pmbus/pmbus.h
1625 index bfcb13bae34bd..8b6acb7497e2e 100644
1626 --- a/drivers/hwmon/pmbus/pmbus.h
1627 +++ b/drivers/hwmon/pmbus/pmbus.h
1628 @@ -262,6 +262,7 @@ enum pmbus_regs {
1629 /*
1630 * STATUS_VOUT, STATUS_INPUT
1631 */
1632 +#define PB_VOLTAGE_VIN_OFF BIT(3)
1633 #define PB_VOLTAGE_UV_FAULT BIT(4)
1634 #define PB_VOLTAGE_UV_WARNING BIT(5)
1635 #define PB_VOLTAGE_OV_WARNING BIT(6)
1636 diff --git a/drivers/hwmon/pmbus/pmbus_core.c b/drivers/hwmon/pmbus/pmbus_core.c
1637 index 0d75bc7b50657..a662702632a8c 100644
1638 --- a/drivers/hwmon/pmbus/pmbus_core.c
1639 +++ b/drivers/hwmon/pmbus/pmbus_core.c
1640 @@ -1133,7 +1133,7 @@ static const struct pmbus_limit_attr vin_limit_attrs[] = {
1641 .reg = PMBUS_VIN_UV_FAULT_LIMIT,
1642 .attr = "lcrit",
1643 .alarm = "lcrit_alarm",
1644 - .sbit = PB_VOLTAGE_UV_FAULT,
1645 + .sbit = PB_VOLTAGE_UV_FAULT | PB_VOLTAGE_VIN_OFF,
1646 }, {
1647 .reg = PMBUS_VIN_OV_WARN_LIMIT,
1648 .attr = "max",
1649 @@ -1818,10 +1818,14 @@ static int pmbus_regulator_is_enabled(struct regulator_dev *rdev)
1650 {
1651 struct device *dev = rdev_get_dev(rdev);
1652 struct i2c_client *client = to_i2c_client(dev->parent);
1653 + struct pmbus_data *data = i2c_get_clientdata(client);
1654 u8 page = rdev_get_id(rdev);
1655 int ret;
1656
1657 + mutex_lock(&data->update_lock);
1658 ret = pmbus_read_byte_data(client, page, PMBUS_OPERATION);
1659 + mutex_unlock(&data->update_lock);
1660 +
1661 if (ret < 0)
1662 return ret;
1663
1664 @@ -1832,11 +1836,17 @@ static int _pmbus_regulator_on_off(struct regulator_dev *rdev, bool enable)
1665 {
1666 struct device *dev = rdev_get_dev(rdev);
1667 struct i2c_client *client = to_i2c_client(dev->parent);
1668 + struct pmbus_data *data = i2c_get_clientdata(client);
1669 u8 page = rdev_get_id(rdev);
1670 + int ret;
1671
1672 - return pmbus_update_byte_data(client, page, PMBUS_OPERATION,
1673 - PB_OPERATION_CONTROL_ON,
1674 - enable ? PB_OPERATION_CONTROL_ON : 0);
1675 + mutex_lock(&data->update_lock);
1676 + ret = pmbus_update_byte_data(client, page, PMBUS_OPERATION,
1677 + PB_OPERATION_CONTROL_ON,
1678 + enable ? PB_OPERATION_CONTROL_ON : 0);
1679 + mutex_unlock(&data->update_lock);
1680 +
1681 + return ret;
1682 }
1683
1684 static int pmbus_regulator_enable(struct regulator_dev *rdev)
1685 diff --git a/drivers/hwmon/sch56xx-common.c b/drivers/hwmon/sch56xx-common.c
1686 index 68c350c704fba..5fd9b6769d420 100644
1687 --- a/drivers/hwmon/sch56xx-common.c
1688 +++ b/drivers/hwmon/sch56xx-common.c
1689 @@ -438,7 +438,7 @@ struct sch56xx_watchdog_data *sch56xx_watchdog_register(struct device *parent,
1690 if (nowayout)
1691 set_bit(WDOG_NO_WAY_OUT, &data->wddev.status);
1692 if (output_enable & SCH56XX_WDOG_OUTPUT_ENABLE)
1693 - set_bit(WDOG_ACTIVE, &data->wddev.status);
1694 + set_bit(WDOG_HW_RUNNING, &data->wddev.status);
1695
1696 /* Since the watchdog uses a downcounter there is no register to read
1697 the BIOS set timeout from (if any was set at all) ->
1698 diff --git a/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c b/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c
1699 index 00904c6b5b5e5..1bf107af8ce00 100644
1700 --- a/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c
1701 +++ b/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c
1702 @@ -379,8 +379,12 @@ static ssize_t mode_store(struct device *dev,
1703 mode = ETM_MODE_QELEM(config->mode);
1704 /* start by clearing QE bits */
1705 config->cfg &= ~(BIT(13) | BIT(14));
1706 - /* if supported, Q elements with instruction counts are enabled */
1707 - if ((mode & BIT(0)) && (drvdata->q_support & BIT(0)))
1708 + /*
1709 + * if supported, Q elements with instruction counts are enabled.
1710 + * Always set the low bit for any requested mode. Valid combos are
1711 + * 0b00, 0b01 and 0b11.
1712 + */
1713 + if (mode && drvdata->q_support)
1714 config->cfg |= BIT(13);
1715 /*
1716 * if supported, Q elements with and without instruction
1717 diff --git a/drivers/i2c/busses/i2c-pasemi.c b/drivers/i2c/busses/i2c-pasemi.c
1718 index df1dbc92a0244..25c877654c32a 100644
1719 --- a/drivers/i2c/busses/i2c-pasemi.c
1720 +++ b/drivers/i2c/busses/i2c-pasemi.c
1721 @@ -145,6 +145,12 @@ static int pasemi_i2c_xfer_msg(struct i2c_adapter *adapter,
1722
1723 TXFIFO_WR(smbus, msg->buf[msg->len-1] |
1724 (stop ? MTXFIFO_STOP : 0));
1725 +
1726 + if (stop) {
1727 + err = pasemi_smb_waitready(smbus);
1728 + if (err)
1729 + goto reset_out;
1730 + }
1731 }
1732
1733 return 0;
1734 diff --git a/drivers/i2c/busses/i2c-xiic.c b/drivers/i2c/busses/i2c-xiic.c
1735 index b72cf2f8da5cb..c65a5d0af555b 100644
1736 --- a/drivers/i2c/busses/i2c-xiic.c
1737 +++ b/drivers/i2c/busses/i2c-xiic.c
1738 @@ -727,7 +727,6 @@ static const struct i2c_algorithm xiic_algorithm = {
1739
1740 static struct i2c_adapter xiic_adapter = {
1741 .owner = THIS_MODULE,
1742 - .name = DRIVER_NAME,
1743 .class = I2C_CLASS_DEPRECATED,
1744 .algo = &xiic_algorithm,
1745 };
1746 @@ -763,6 +762,8 @@ static int xiic_i2c_probe(struct platform_device *pdev)
1747 i2c_set_adapdata(&i2c->adap, i2c);
1748 i2c->adap.dev.parent = &pdev->dev;
1749 i2c->adap.dev.of_node = pdev->dev.of_node;
1750 + snprintf(i2c->adap.name, sizeof(i2c->adap.name),
1751 + DRIVER_NAME " %s", pdev->name);
1752
1753 mutex_init(&i2c->lock);
1754 init_waitqueue_head(&i2c->wait);
1755 diff --git a/drivers/i2c/muxes/i2c-demux-pinctrl.c b/drivers/i2c/muxes/i2c-demux-pinctrl.c
1756 index a86c511c29e0e..c347860b3690f 100644
1757 --- a/drivers/i2c/muxes/i2c-demux-pinctrl.c
1758 +++ b/drivers/i2c/muxes/i2c-demux-pinctrl.c
1759 @@ -259,7 +259,7 @@ static int i2c_demux_pinctrl_probe(struct platform_device *pdev)
1760
1761 err = device_create_file(&pdev->dev, &dev_attr_available_masters);
1762 if (err)
1763 - goto err_rollback;
1764 + goto err_rollback_activation;
1765
1766 err = device_create_file(&pdev->dev, &dev_attr_current_master);
1767 if (err)
1768 @@ -269,8 +269,9 @@ static int i2c_demux_pinctrl_probe(struct platform_device *pdev)
1769
1770 err_rollback_available:
1771 device_remove_file(&pdev->dev, &dev_attr_available_masters);
1772 -err_rollback:
1773 +err_rollback_activation:
1774 i2c_demux_deactivate_master(priv);
1775 +err_rollback:
1776 for (j = 0; j < i; j++) {
1777 of_node_put(priv->chan[j].parent_np);
1778 of_changeset_destroy(&priv->chan[j].chgset);
1779 diff --git a/drivers/iio/adc/twl6030-gpadc.c b/drivers/iio/adc/twl6030-gpadc.c
1780 index becbb0aef232b..5075f594d97f7 100644
1781 --- a/drivers/iio/adc/twl6030-gpadc.c
1782 +++ b/drivers/iio/adc/twl6030-gpadc.c
1783 @@ -927,6 +927,8 @@ static int twl6030_gpadc_probe(struct platform_device *pdev)
1784 ret = devm_request_threaded_irq(dev, irq, NULL,
1785 twl6030_gpadc_irq_handler,
1786 IRQF_ONESHOT, "twl6030_gpadc", indio_dev);
1787 + if (ret)
1788 + return ret;
1789
1790 ret = twl6030_gpadc_enable_irq(TWL6030_GPADC_RT_SW1_EOC_MASK);
1791 if (ret < 0) {
1792 diff --git a/drivers/iio/inkern.c b/drivers/iio/inkern.c
1793 index c4757e6367e7a..218cf4567ab58 100644
1794 --- a/drivers/iio/inkern.c
1795 +++ b/drivers/iio/inkern.c
1796 @@ -591,13 +591,35 @@ EXPORT_SYMBOL_GPL(iio_read_channel_average_raw);
1797 static int iio_convert_raw_to_processed_unlocked(struct iio_channel *chan,
1798 int raw, int *processed, unsigned int scale)
1799 {
1800 - int scale_type, scale_val, scale_val2, offset;
1801 + int scale_type, scale_val, scale_val2;
1802 + int offset_type, offset_val, offset_val2;
1803 s64 raw64 = raw;
1804 - int ret;
1805
1806 - ret = iio_channel_read(chan, &offset, NULL, IIO_CHAN_INFO_OFFSET);
1807 - if (ret >= 0)
1808 - raw64 += offset;
1809 + offset_type = iio_channel_read(chan, &offset_val, &offset_val2,
1810 + IIO_CHAN_INFO_OFFSET);
1811 + if (offset_type >= 0) {
1812 + switch (offset_type) {
1813 + case IIO_VAL_INT:
1814 + break;
1815 + case IIO_VAL_INT_PLUS_MICRO:
1816 + case IIO_VAL_INT_PLUS_NANO:
1817 + /*
1818 + * Both IIO_VAL_INT_PLUS_MICRO and IIO_VAL_INT_PLUS_NANO
1819 + * implicitely truncate the offset to it's integer form.
1820 + */
1821 + break;
1822 + case IIO_VAL_FRACTIONAL:
1823 + offset_val /= offset_val2;
1824 + break;
1825 + case IIO_VAL_FRACTIONAL_LOG2:
1826 + offset_val >>= offset_val2;
1827 + break;
1828 + default:
1829 + return -EINVAL;
1830 + }
1831 +
1832 + raw64 += offset_val;
1833 + }
1834
1835 scale_type = iio_channel_read(chan, &scale_val, &scale_val2,
1836 IIO_CHAN_INFO_SCALE);
1837 @@ -606,7 +628,7 @@ static int iio_convert_raw_to_processed_unlocked(struct iio_channel *chan,
1838
1839 switch (scale_type) {
1840 case IIO_VAL_INT:
1841 - *processed = raw64 * scale_val;
1842 + *processed = raw64 * scale_val * scale;
1843 break;
1844 case IIO_VAL_INT_PLUS_MICRO:
1845 if (scale_val2 < 0)
1846 diff --git a/drivers/input/input.c b/drivers/input/input.c
1847 index cb31236425a11..5d94fc3fce0bb 100644
1848 --- a/drivers/input/input.c
1849 +++ b/drivers/input/input.c
1850 @@ -2112,12 +2112,6 @@ int input_register_device(struct input_dev *dev)
1851 /* KEY_RESERVED is not supposed to be transmitted to userspace. */
1852 __clear_bit(KEY_RESERVED, dev->keybit);
1853
1854 - /* Buttonpads should not map BTN_RIGHT and/or BTN_MIDDLE. */
1855 - if (test_bit(INPUT_PROP_BUTTONPAD, dev->propbit)) {
1856 - __clear_bit(BTN_RIGHT, dev->keybit);
1857 - __clear_bit(BTN_MIDDLE, dev->keybit);
1858 - }
1859 -
1860 /* Make sure that bitmasks not mentioned in dev->evbit are clean. */
1861 input_cleanse_bitmasks(dev);
1862
1863 diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c
1864 index 48d3820087881..db40ce599e974 100644
1865 --- a/drivers/iommu/arm-smmu-v3.c
1866 +++ b/drivers/iommu/arm-smmu-v3.c
1867 @@ -1171,6 +1171,7 @@ static irqreturn_t arm_smmu_evtq_thread(int irq, void *dev)
1868 dev_info(smmu->dev, "\t0x%016llx\n",
1869 (unsigned long long)evt[i]);
1870
1871 + cond_resched();
1872 }
1873
1874 /*
1875 diff --git a/drivers/irqchip/irq-nvic.c b/drivers/irqchip/irq-nvic.c
1876 index 9694529b709de..330beb62d015c 100644
1877 --- a/drivers/irqchip/irq-nvic.c
1878 +++ b/drivers/irqchip/irq-nvic.c
1879 @@ -108,6 +108,7 @@ static int __init nvic_of_init(struct device_node *node,
1880
1881 if (!nvic_irq_domain) {
1882 pr_warn("Failed to allocate irq domain\n");
1883 + iounmap(nvic_base);
1884 return -ENOMEM;
1885 }
1886
1887 @@ -117,6 +118,7 @@ static int __init nvic_of_init(struct device_node *node,
1888 if (ret) {
1889 pr_warn("Failed to allocate irq chips\n");
1890 irq_domain_remove(nvic_irq_domain);
1891 + iounmap(nvic_base);
1892 return ret;
1893 }
1894
1895 diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c
1896 index eb2659a123108..70245782e7f60 100644
1897 --- a/drivers/md/dm-ioctl.c
1898 +++ b/drivers/md/dm-ioctl.c
1899 @@ -16,6 +16,7 @@
1900 #include <linux/dm-ioctl.h>
1901 #include <linux/hdreg.h>
1902 #include <linux/compat.h>
1903 +#include <linux/nospec.h>
1904
1905 #include <asm/uaccess.h>
1906
1907 @@ -1642,6 +1643,7 @@ static ioctl_fn lookup_ioctl(unsigned int cmd, int *ioctl_flags)
1908 if (unlikely(cmd >= ARRAY_SIZE(_ioctls)))
1909 return NULL;
1910
1911 + cmd = array_index_nospec(cmd, ARRAY_SIZE(_ioctls));
1912 *ioctl_flags = _ioctls[cmd].flags;
1913 return _ioctls[cmd].fn;
1914 }
1915 diff --git a/drivers/media/pci/cx88/cx88-mpeg.c b/drivers/media/pci/cx88/cx88-mpeg.c
1916 index 245357adbc250..37d4512f3eb80 100644
1917 --- a/drivers/media/pci/cx88/cx88-mpeg.c
1918 +++ b/drivers/media/pci/cx88/cx88-mpeg.c
1919 @@ -175,6 +175,9 @@ int cx8802_start_dma(struct cx8802_dev *dev,
1920 cx_write(MO_TS_GPCNTRL, GP_COUNT_CONTROL_RESET);
1921 q->count = 0;
1922
1923 + /* clear interrupt status register */
1924 + cx_write(MO_TS_INTSTAT, 0x1f1111);
1925 +
1926 /* enable irqs */
1927 dprintk( 1, "setting the interrupt mask\n" );
1928 cx_set(MO_PCI_INTMSK, core->pci_irqmask | PCI_INT_TSINT);
1929 diff --git a/drivers/media/platform/davinci/vpif.c b/drivers/media/platform/davinci/vpif.c
1930 index 0380cf2e5775d..736719d6d648d 100644
1931 --- a/drivers/media/platform/davinci/vpif.c
1932 +++ b/drivers/media/platform/davinci/vpif.c
1933 @@ -437,6 +437,7 @@ static int vpif_probe(struct platform_device *pdev)
1934
1935 static int vpif_remove(struct platform_device *pdev)
1936 {
1937 + pm_runtime_put(&pdev->dev);
1938 pm_runtime_disable(&pdev->dev);
1939 return 0;
1940 }
1941 diff --git a/drivers/media/usb/go7007/s2250-board.c b/drivers/media/usb/go7007/s2250-board.c
1942 index 1466db150d82c..625e77f4dbd2e 100644
1943 --- a/drivers/media/usb/go7007/s2250-board.c
1944 +++ b/drivers/media/usb/go7007/s2250-board.c
1945 @@ -512,6 +512,7 @@ static int s2250_probe(struct i2c_client *client,
1946 u8 *data;
1947 struct go7007 *go = i2c_get_adapdata(adapter);
1948 struct go7007_usb *usb = go->hpi_context;
1949 + int err = -EIO;
1950
1951 audio = i2c_new_dummy(adapter, TLV320_ADDRESS >> 1);
1952 if (audio == NULL)
1953 @@ -540,11 +541,8 @@ static int s2250_probe(struct i2c_client *client,
1954 V4L2_CID_HUE, -512, 511, 1, 0);
1955 sd->ctrl_handler = &state->hdl;
1956 if (state->hdl.error) {
1957 - int err = state->hdl.error;
1958 -
1959 - v4l2_ctrl_handler_free(&state->hdl);
1960 - kfree(state);
1961 - return err;
1962 + err = state->hdl.error;
1963 + goto fail;
1964 }
1965
1966 state->std = V4L2_STD_NTSC;
1967 @@ -608,7 +606,7 @@ fail:
1968 i2c_unregister_device(audio);
1969 v4l2_ctrl_handler_free(&state->hdl);
1970 kfree(state);
1971 - return -EIO;
1972 + return err;
1973 }
1974
1975 static int s2250_remove(struct i2c_client *client)
1976 diff --git a/drivers/media/usb/hdpvr/hdpvr-video.c b/drivers/media/usb/hdpvr/hdpvr-video.c
1977 index 474c11e1d4951..cfd8c09f9ded7 100644
1978 --- a/drivers/media/usb/hdpvr/hdpvr-video.c
1979 +++ b/drivers/media/usb/hdpvr/hdpvr-video.c
1980 @@ -312,7 +312,6 @@ static int hdpvr_start_streaming(struct hdpvr_device *dev)
1981
1982 dev->status = STATUS_STREAMING;
1983
1984 - INIT_WORK(&dev->worker, hdpvr_transmit_buffers);
1985 schedule_work(&dev->worker);
1986
1987 v4l2_dbg(MSG_BUFFER, hdpvr_debug, &dev->v4l2_dev,
1988 @@ -1156,6 +1155,9 @@ int hdpvr_register_videodev(struct hdpvr_device *dev, struct device *parent,
1989 bool ac3 = dev->flags & HDPVR_FLAG_AC3_CAP;
1990 int res;
1991
1992 + // initialize dev->worker
1993 + INIT_WORK(&dev->worker, hdpvr_transmit_buffers);
1994 +
1995 dev->cur_std = V4L2_STD_525_60;
1996 dev->width = 720;
1997 dev->height = 480;
1998 diff --git a/drivers/memory/emif.c b/drivers/memory/emif.c
1999 index 88c32b8dc88a1..9f293b931144e 100644
2000 --- a/drivers/memory/emif.c
2001 +++ b/drivers/memory/emif.c
2002 @@ -1425,7 +1425,7 @@ static struct emif_data *__init_or_module get_device_details(
2003 temp = devm_kzalloc(dev, sizeof(*pd), GFP_KERNEL);
2004 dev_info = devm_kzalloc(dev, sizeof(*dev_info), GFP_KERNEL);
2005
2006 - if (!emif || !pd || !dev_info) {
2007 + if (!emif || !temp || !dev_info) {
2008 dev_err(dev, "%s:%d: allocation error\n", __func__, __LINE__);
2009 goto error;
2010 }
2011 @@ -1517,7 +1517,7 @@ static int __init_or_module emif_probe(struct platform_device *pdev)
2012 {
2013 struct emif_data *emif;
2014 struct resource *res;
2015 - int irq;
2016 + int irq, ret;
2017
2018 if (pdev->dev.of_node)
2019 emif = of_get_memory_device_details(pdev->dev.of_node, &pdev->dev);
2020 @@ -1551,7 +1551,9 @@ static int __init_or_module emif_probe(struct platform_device *pdev)
2021 emif_onetime_settings(emif);
2022 emif_debugfs_init(emif);
2023 disable_and_clear_all_interrupts(emif);
2024 - setup_interrupts(emif, irq);
2025 + ret = setup_interrupts(emif, irq);
2026 + if (ret)
2027 + goto error;
2028
2029 /* One-time actions taken on probing the first device */
2030 if (!emif1) {
2031 diff --git a/drivers/mfd/asic3.c b/drivers/mfd/asic3.c
2032 index 0413c8159551e..34270e237726f 100644
2033 --- a/drivers/mfd/asic3.c
2034 +++ b/drivers/mfd/asic3.c
2035 @@ -915,14 +915,14 @@ static int __init asic3_mfd_probe(struct platform_device *pdev,
2036 ret = mfd_add_devices(&pdev->dev, pdev->id,
2037 &asic3_cell_ds1wm, 1, mem, asic->irq_base, NULL);
2038 if (ret < 0)
2039 - goto out;
2040 + goto out_unmap;
2041 }
2042
2043 if (mem_sdio && (irq >= 0)) {
2044 ret = mfd_add_devices(&pdev->dev, pdev->id,
2045 &asic3_cell_mmc, 1, mem_sdio, irq, NULL);
2046 if (ret < 0)
2047 - goto out;
2048 + goto out_unmap;
2049 }
2050
2051 ret = 0;
2052 @@ -936,8 +936,12 @@ static int __init asic3_mfd_probe(struct platform_device *pdev,
2053 ret = mfd_add_devices(&pdev->dev, 0,
2054 asic3_cell_leds, ASIC3_NUM_LEDS, NULL, 0, NULL);
2055 }
2056 + return ret;
2057
2058 - out:
2059 +out_unmap:
2060 + if (asic->tmio_cnf)
2061 + iounmap(asic->tmio_cnf);
2062 +out:
2063 return ret;
2064 }
2065
2066 diff --git a/drivers/mfd/mc13xxx-core.c b/drivers/mfd/mc13xxx-core.c
2067 index 75d52034f89da..5b4faebdcae23 100644
2068 --- a/drivers/mfd/mc13xxx-core.c
2069 +++ b/drivers/mfd/mc13xxx-core.c
2070 @@ -313,8 +313,10 @@ int mc13xxx_adc_do_conversion(struct mc13xxx *mc13xxx, unsigned int mode,
2071 adc1 |= MC13783_ADC1_ATOX;
2072
2073 dev_dbg(mc13xxx->dev, "%s: request irq\n", __func__);
2074 - mc13xxx_irq_request(mc13xxx, MC13XXX_IRQ_ADCDONE,
2075 + ret = mc13xxx_irq_request(mc13xxx, MC13XXX_IRQ_ADCDONE,
2076 mc13xxx_handler_adcdone, __func__, &adcdone_data);
2077 + if (ret)
2078 + goto out;
2079
2080 mc13xxx_reg_write(mc13xxx, MC13XXX_ADC0, adc0);
2081 mc13xxx_reg_write(mc13xxx, MC13XXX_ADC1, adc1);
2082 diff --git a/drivers/misc/kgdbts.c b/drivers/misc/kgdbts.c
2083 index ab2184003c29d..d75686c1c6e85 100644
2084 --- a/drivers/misc/kgdbts.c
2085 +++ b/drivers/misc/kgdbts.c
2086 @@ -1066,10 +1066,10 @@ static int kgdbts_option_setup(char *opt)
2087 {
2088 if (strlen(opt) >= MAX_CONFIG_LEN) {
2089 printk(KERN_ERR "kgdbts: config string too long\n");
2090 - return -ENOSPC;
2091 + return 1;
2092 }
2093 strcpy(config, opt);
2094 - return 0;
2095 + return 1;
2096 }
2097
2098 __setup("kgdbts=", kgdbts_option_setup);
2099 diff --git a/drivers/mmc/core/host.c b/drivers/mmc/core/host.c
2100 index 848b3453517ea..60c2ca58dec34 100644
2101 --- a/drivers/mmc/core/host.c
2102 +++ b/drivers/mmc/core/host.c
2103 @@ -403,6 +403,16 @@ again:
2104
2105 EXPORT_SYMBOL(mmc_alloc_host);
2106
2107 +static int mmc_validate_host_caps(struct mmc_host *host)
2108 +{
2109 + if (host->caps & MMC_CAP_SDIO_IRQ && !host->ops->enable_sdio_irq) {
2110 + dev_warn(host->parent, "missing ->enable_sdio_irq() ops\n");
2111 + return -EINVAL;
2112 + }
2113 +
2114 + return 0;
2115 +}
2116 +
2117 /**
2118 * mmc_add_host - initialise host hardware
2119 * @host: mmc host
2120 @@ -415,8 +425,9 @@ int mmc_add_host(struct mmc_host *host)
2121 {
2122 int err;
2123
2124 - WARN_ON((host->caps & MMC_CAP_SDIO_IRQ) &&
2125 - !host->ops->enable_sdio_irq);
2126 + err = mmc_validate_host_caps(host);
2127 + if (err)
2128 + return err;
2129
2130 err = device_add(&host->class_dev);
2131 if (err)
2132 diff --git a/drivers/mtd/onenand/generic.c b/drivers/mtd/onenand/generic.c
2133 index 125da34d8ff95..23a878e7974e0 100644
2134 --- a/drivers/mtd/onenand/generic.c
2135 +++ b/drivers/mtd/onenand/generic.c
2136 @@ -58,7 +58,12 @@ static int generic_onenand_probe(struct platform_device *pdev)
2137 }
2138
2139 info->onenand.mmcontrol = pdata ? pdata->mmcontrol : NULL;
2140 - info->onenand.irq = platform_get_irq(pdev, 0);
2141 +
2142 + err = platform_get_irq(pdev, 0);
2143 + if (err < 0)
2144 + goto out_iounmap;
2145 +
2146 + info->onenand.irq = err;
2147
2148 info->mtd.dev.parent = &pdev->dev;
2149 info->mtd.priv = &info->onenand;
2150 diff --git a/drivers/mtd/ubi/fastmap.c b/drivers/mtd/ubi/fastmap.c
2151 index e7b177c61642f..1486f9af8f1e8 100644
2152 --- a/drivers/mtd/ubi/fastmap.c
2153 +++ b/drivers/mtd/ubi/fastmap.c
2154 @@ -478,7 +478,9 @@ static int scan_pool(struct ubi_device *ubi, struct ubi_attach_info *ai,
2155 if (err == UBI_IO_FF_BITFLIPS)
2156 scrub = 1;
2157
2158 - add_aeb(ai, free, pnum, ec, scrub);
2159 + ret = add_aeb(ai, free, pnum, ec, scrub);
2160 + if (ret)
2161 + goto out;
2162 continue;
2163 } else if (err == 0 || err == UBI_IO_BITFLIPS) {
2164 dbg_bld("Found non empty PEB:%i in pool", pnum);
2165 @@ -648,8 +650,10 @@ static int ubi_attach_fastmap(struct ubi_device *ubi,
2166 if (fm_pos >= fm_size)
2167 goto fail_bad;
2168
2169 - add_aeb(ai, &ai->free, be32_to_cpu(fmec->pnum),
2170 - be32_to_cpu(fmec->ec), 0);
2171 + ret = add_aeb(ai, &ai->free, be32_to_cpu(fmec->pnum),
2172 + be32_to_cpu(fmec->ec), 0);
2173 + if (ret)
2174 + goto fail;
2175 }
2176
2177 /* read EC values from used list */
2178 @@ -659,8 +663,10 @@ static int ubi_attach_fastmap(struct ubi_device *ubi,
2179 if (fm_pos >= fm_size)
2180 goto fail_bad;
2181
2182 - add_aeb(ai, &used, be32_to_cpu(fmec->pnum),
2183 - be32_to_cpu(fmec->ec), 0);
2184 + ret = add_aeb(ai, &used, be32_to_cpu(fmec->pnum),
2185 + be32_to_cpu(fmec->ec), 0);
2186 + if (ret)
2187 + goto fail;
2188 }
2189
2190 /* read EC values from scrub list */
2191 @@ -670,8 +676,10 @@ static int ubi_attach_fastmap(struct ubi_device *ubi,
2192 if (fm_pos >= fm_size)
2193 goto fail_bad;
2194
2195 - add_aeb(ai, &used, be32_to_cpu(fmec->pnum),
2196 - be32_to_cpu(fmec->ec), 1);
2197 + ret = add_aeb(ai, &used, be32_to_cpu(fmec->pnum),
2198 + be32_to_cpu(fmec->ec), 1);
2199 + if (ret)
2200 + goto fail;
2201 }
2202
2203 /* read EC values from erase list */
2204 @@ -681,8 +689,10 @@ static int ubi_attach_fastmap(struct ubi_device *ubi,
2205 if (fm_pos >= fm_size)
2206 goto fail_bad;
2207
2208 - add_aeb(ai, &ai->erase, be32_to_cpu(fmec->pnum),
2209 - be32_to_cpu(fmec->ec), 1);
2210 + ret = add_aeb(ai, &ai->erase, be32_to_cpu(fmec->pnum),
2211 + be32_to_cpu(fmec->ec), 1);
2212 + if (ret)
2213 + goto fail;
2214 }
2215
2216 ai->mean_ec = div_u64(ai->ec_sum, ai->ec_count);
2217 diff --git a/drivers/net/can/usb/ems_usb.c b/drivers/net/can/usb/ems_usb.c
2218 index d62d61d734ea1..4d01b6cbf0ebf 100644
2219 --- a/drivers/net/can/usb/ems_usb.c
2220 +++ b/drivers/net/can/usb/ems_usb.c
2221 @@ -834,7 +834,6 @@ static netdev_tx_t ems_usb_start_xmit(struct sk_buff *skb, struct net_device *ne
2222
2223 usb_unanchor_urb(urb);
2224 usb_free_coherent(dev->udev, size, buf, urb->transfer_dma);
2225 - dev_kfree_skb(skb);
2226
2227 atomic_dec(&dev->active_tx_urbs);
2228
2229 diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
2230 index 9e5251c427a36..401d9718841fc 100644
2231 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
2232 +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
2233 @@ -1008,9 +1008,7 @@ static int bnxt_set_pauseparam(struct net_device *dev,
2234 }
2235
2236 link_info->autoneg |= BNXT_AUTONEG_FLOW_CTRL;
2237 - if (bp->hwrm_spec_code >= 0x10201)
2238 - link_info->req_flow_ctrl =
2239 - PORT_PHY_CFG_REQ_AUTO_PAUSE_AUTONEG_PAUSE;
2240 + link_info->req_flow_ctrl = 0;
2241 } else {
2242 /* when transition from auto pause to force pause,
2243 * force a link change
2244 diff --git a/drivers/net/ethernet/micrel/Kconfig b/drivers/net/ethernet/micrel/Kconfig
2245 index b7e2f49696b74..aa12bace8673e 100644
2246 --- a/drivers/net/ethernet/micrel/Kconfig
2247 +++ b/drivers/net/ethernet/micrel/Kconfig
2248 @@ -45,6 +45,7 @@ config KS8851
2249 config KS8851_MLL
2250 tristate "Micrel KS8851 MLL"
2251 depends on HAS_IOMEM
2252 + depends on PTP_1588_CLOCK_OPTIONAL
2253 select MII
2254 ---help---
2255 This platform driver is for Micrel KS8851 Address/data bus
2256 diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.h b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.h
2257 index f4aa6331b367b..0a9d24e86715d 100644
2258 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.h
2259 +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.h
2260 @@ -52,7 +52,7 @@ static inline int qlcnic_dcb_get_hw_capability(struct qlcnic_dcb *dcb)
2261 if (dcb && dcb->ops->get_hw_capability)
2262 return dcb->ops->get_hw_capability(dcb);
2263
2264 - return 0;
2265 + return -EOPNOTSUPP;
2266 }
2267
2268 static inline void qlcnic_dcb_free(struct qlcnic_dcb *dcb)
2269 @@ -66,7 +66,7 @@ static inline int qlcnic_dcb_attach(struct qlcnic_dcb *dcb)
2270 if (dcb && dcb->ops->attach)
2271 return dcb->ops->attach(dcb);
2272
2273 - return 0;
2274 + return -EOPNOTSUPP;
2275 }
2276
2277 static inline int
2278 @@ -75,7 +75,7 @@ qlcnic_dcb_query_hw_capability(struct qlcnic_dcb *dcb, char *buf)
2279 if (dcb && dcb->ops->query_hw_capability)
2280 return dcb->ops->query_hw_capability(dcb, buf);
2281
2282 - return 0;
2283 + return -EOPNOTSUPP;
2284 }
2285
2286 static inline void qlcnic_dcb_get_info(struct qlcnic_dcb *dcb)
2287 @@ -90,7 +90,7 @@ qlcnic_dcb_query_cee_param(struct qlcnic_dcb *dcb, char *buf, u8 type)
2288 if (dcb && dcb->ops->query_cee_param)
2289 return dcb->ops->query_cee_param(dcb, buf, type);
2290
2291 - return 0;
2292 + return -EOPNOTSUPP;
2293 }
2294
2295 static inline int qlcnic_dcb_get_cee_cfg(struct qlcnic_dcb *dcb)
2296 @@ -98,7 +98,7 @@ static inline int qlcnic_dcb_get_cee_cfg(struct qlcnic_dcb *dcb)
2297 if (dcb && dcb->ops->get_cee_cfg)
2298 return dcb->ops->get_cee_cfg(dcb);
2299
2300 - return 0;
2301 + return -EOPNOTSUPP;
2302 }
2303
2304 static inline void qlcnic_dcb_aen_handler(struct qlcnic_dcb *dcb, void *msg)
2305 diff --git a/drivers/net/ethernet/stmicro/stmmac/altr_tse_pcs.c b/drivers/net/ethernet/stmicro/stmmac/altr_tse_pcs.c
2306 index 6a9c954492f22..6ca428a702f16 100644
2307 --- a/drivers/net/ethernet/stmicro/stmmac/altr_tse_pcs.c
2308 +++ b/drivers/net/ethernet/stmicro/stmmac/altr_tse_pcs.c
2309 @@ -68,10 +68,6 @@
2310 #define TSE_PCS_USE_SGMII_ENA BIT(0)
2311 #define TSE_PCS_IF_USE_SGMII 0x03
2312
2313 -#define SGMII_ADAPTER_CTRL_REG 0x00
2314 -#define SGMII_ADAPTER_DISABLE 0x0001
2315 -#define SGMII_ADAPTER_ENABLE 0x0000
2316 -
2317 #define AUTONEGO_LINK_TIMER 20
2318
2319 static int tse_pcs_reset(void __iomem *base, struct tse_pcs *pcs)
2320 @@ -215,12 +211,8 @@ void tse_pcs_fix_mac_speed(struct tse_pcs *pcs, struct phy_device *phy_dev,
2321 unsigned int speed)
2322 {
2323 void __iomem *tse_pcs_base = pcs->tse_pcs_base;
2324 - void __iomem *sgmii_adapter_base = pcs->sgmii_adapter_base;
2325 u32 val;
2326
2327 - writew(SGMII_ADAPTER_ENABLE,
2328 - sgmii_adapter_base + SGMII_ADAPTER_CTRL_REG);
2329 -
2330 pcs->autoneg = phy_dev->autoneg;
2331
2332 if (phy_dev->autoneg == AUTONEG_ENABLE) {
2333 diff --git a/drivers/net/ethernet/stmicro/stmmac/altr_tse_pcs.h b/drivers/net/ethernet/stmicro/stmmac/altr_tse_pcs.h
2334 index 2f5882450b06a..254199f2efdbf 100644
2335 --- a/drivers/net/ethernet/stmicro/stmmac/altr_tse_pcs.h
2336 +++ b/drivers/net/ethernet/stmicro/stmmac/altr_tse_pcs.h
2337 @@ -21,6 +21,10 @@
2338 #include <linux/phy.h>
2339 #include <linux/timer.h>
2340
2341 +#define SGMII_ADAPTER_CTRL_REG 0x00
2342 +#define SGMII_ADAPTER_ENABLE 0x0000
2343 +#define SGMII_ADAPTER_DISABLE 0x0001
2344 +
2345 struct tse_pcs {
2346 struct device *dev;
2347 void __iomem *tse_pcs_base;
2348 diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c
2349 index c3a78c1134240..b138968b8672a 100644
2350 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c
2351 +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c
2352 @@ -29,9 +29,6 @@
2353
2354 #include "altr_tse_pcs.h"
2355
2356 -#define SGMII_ADAPTER_CTRL_REG 0x00
2357 -#define SGMII_ADAPTER_DISABLE 0x0001
2358 -
2359 #define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_GMII_MII 0x0
2360 #define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_RGMII 0x1
2361 #define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_RMII 0x2
2362 @@ -65,16 +62,14 @@ static void socfpga_dwmac_fix_mac_speed(void *priv, unsigned int speed)
2363 {
2364 struct socfpga_dwmac *dwmac = (struct socfpga_dwmac *)priv;
2365 void __iomem *splitter_base = dwmac->splitter_base;
2366 - void __iomem *tse_pcs_base = dwmac->pcs.tse_pcs_base;
2367 void __iomem *sgmii_adapter_base = dwmac->pcs.sgmii_adapter_base;
2368 struct device *dev = dwmac->dev;
2369 struct net_device *ndev = dev_get_drvdata(dev);
2370 struct phy_device *phy_dev = ndev->phydev;
2371 u32 val;
2372
2373 - if ((tse_pcs_base) && (sgmii_adapter_base))
2374 - writew(SGMII_ADAPTER_DISABLE,
2375 - sgmii_adapter_base + SGMII_ADAPTER_CTRL_REG);
2376 + writew(SGMII_ADAPTER_DISABLE,
2377 + sgmii_adapter_base + SGMII_ADAPTER_CTRL_REG);
2378
2379 if (splitter_base) {
2380 val = readl(splitter_base + EMAC_SPLITTER_CTRL_REG);
2381 @@ -96,7 +91,9 @@ static void socfpga_dwmac_fix_mac_speed(void *priv, unsigned int speed)
2382 writel(val, splitter_base + EMAC_SPLITTER_CTRL_REG);
2383 }
2384
2385 - if (tse_pcs_base && sgmii_adapter_base)
2386 + writew(SGMII_ADAPTER_ENABLE,
2387 + sgmii_adapter_base + SGMII_ADAPTER_CTRL_REG);
2388 + if (phy_dev)
2389 tse_pcs_fix_mac_speed(&dwmac->pcs, phy_dev, speed);
2390 }
2391
2392 diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
2393 index 2019e163e0e9e..cbdd0deb7c565 100644
2394 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
2395 +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
2396 @@ -221,8 +221,7 @@ stmmac_probe_config_dt(struct platform_device *pdev, const char **mac)
2397 plat->interface = of_get_phy_mode(np);
2398
2399 /* Get max speed of operation from device tree */
2400 - if (of_property_read_u32(np, "max-speed", &plat->max_speed))
2401 - plat->max_speed = -1;
2402 + of_property_read_u32(np, "max-speed", &plat->max_speed);
2403
2404 plat->bus_id = of_alias_get_id(np, "ethernet");
2405 if (plat->bus_id < 0)
2406 diff --git a/drivers/net/ethernet/sun/sunhme.c b/drivers/net/ethernet/sun/sunhme.c
2407 index cf4dcff051d5b..b38106a7cb5d8 100644
2408 --- a/drivers/net/ethernet/sun/sunhme.c
2409 +++ b/drivers/net/ethernet/sun/sunhme.c
2410 @@ -3160,7 +3160,7 @@ static int happy_meal_pci_probe(struct pci_dev *pdev,
2411 if (err) {
2412 printk(KERN_ERR "happymeal(PCI): Cannot register net device, "
2413 "aborting.\n");
2414 - goto err_out_iounmap;
2415 + goto err_out_free_coherent;
2416 }
2417
2418 pci_set_drvdata(pdev, hp);
2419 @@ -3193,6 +3193,10 @@ static int happy_meal_pci_probe(struct pci_dev *pdev,
2420
2421 return 0;
2422
2423 +err_out_free_coherent:
2424 + dma_free_coherent(hp->dma_dev, PAGE_SIZE,
2425 + hp->happy_block, hp->hblock_dvma);
2426 +
2427 err_out_iounmap:
2428 iounmap(hp->gregs);
2429
2430 diff --git a/drivers/net/hamradio/6pack.c b/drivers/net/hamradio/6pack.c
2431 index 96fb2a2a59f02..f829233a911a6 100644
2432 --- a/drivers/net/hamradio/6pack.c
2433 +++ b/drivers/net/hamradio/6pack.c
2434 @@ -685,14 +685,14 @@ static void sixpack_close(struct tty_struct *tty)
2435 */
2436 netif_stop_queue(sp->dev);
2437
2438 + unregister_netdev(sp->dev);
2439 +
2440 del_timer_sync(&sp->tx_t);
2441 del_timer_sync(&sp->resync_t);
2442
2443 /* Free all 6pack frame buffers. */
2444 kfree(sp->rbuff);
2445 kfree(sp->xbuff);
2446 -
2447 - unregister_netdev(sp->dev);
2448 }
2449
2450 /* Perform I/O control on an active 6pack channel. */
2451 diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c
2452 index 870327efccf78..6bea2b219e007 100644
2453 --- a/drivers/net/phy/broadcom.c
2454 +++ b/drivers/net/phy/broadcom.c
2455 @@ -15,6 +15,7 @@
2456 */
2457
2458 #include "bcm-phy-lib.h"
2459 +#include <linux/delay.h>
2460 #include <linux/module.h>
2461 #include <linux/phy.h>
2462 #include <linux/brcmphy.h>
2463 @@ -357,6 +358,26 @@ static int brcm_fet_config_init(struct phy_device *phydev)
2464 if (err < 0)
2465 return err;
2466
2467 + /* The datasheet indicates the PHY needs up to 1us to complete a reset,
2468 + * build some slack here.
2469 + */
2470 + usleep_range(1000, 2000);
2471 +
2472 + /* The PHY requires 65 MDC clock cycles to complete a write operation
2473 + * and turnaround the line properly.
2474 + *
2475 + * We ignore -EIO here as the MDIO controller (e.g.: mdio-bcm-unimac)
2476 + * may flag the lack of turn-around as a read failure. This is
2477 + * particularly true with this combination since the MDIO controller
2478 + * only used 64 MDC cycles. This is not a critical failure in this
2479 + * specific case and it has no functional impact otherwise, so we let
2480 + * that one go through. If there is a genuine bus error, the next read
2481 + * of MII_BRCM_FET_INTREG will error out.
2482 + */
2483 + err = phy_read(phydev, MII_BMCR);
2484 + if (err < 0 && err != -EIO)
2485 + return err;
2486 +
2487 reg = phy_read(phydev, MII_BRCM_FET_INTREG);
2488 if (reg < 0)
2489 return reg;
2490 diff --git a/drivers/net/slip/slip.c b/drivers/net/slip/slip.c
2491 index f870396e05e15..ba26fa0ceba89 100644
2492 --- a/drivers/net/slip/slip.c
2493 +++ b/drivers/net/slip/slip.c
2494 @@ -471,7 +471,7 @@ static void sl_tx_timeout(struct net_device *dev)
2495 spin_lock(&sl->lock);
2496
2497 if (netif_queue_stopped(dev)) {
2498 - if (!netif_running(dev))
2499 + if (!netif_running(dev) || !sl->tty)
2500 goto out;
2501
2502 /* May be we must check transmitter timeout here ?
2503 diff --git a/drivers/net/veth.c b/drivers/net/veth.c
2504 index ee7460ee3d050..57ff2fd95f75b 100644
2505 --- a/drivers/net/veth.c
2506 +++ b/drivers/net/veth.c
2507 @@ -114,7 +114,7 @@ static netdev_tx_t veth_xmit(struct sk_buff *skb, struct net_device *dev)
2508
2509 rcu_read_lock();
2510 rcv = rcu_dereference(priv->peer);
2511 - if (unlikely(!rcv)) {
2512 + if (unlikely(!rcv) || !pskb_may_pull(skb, ETH_HLEN)) {
2513 kfree_skb(skb);
2514 goto drop;
2515 }
2516 diff --git a/drivers/net/wireless/ath/ath5k/eeprom.c b/drivers/net/wireless/ath/ath5k/eeprom.c
2517 index 94d34ee02265d..01163b3339451 100644
2518 --- a/drivers/net/wireless/ath/ath5k/eeprom.c
2519 +++ b/drivers/net/wireless/ath/ath5k/eeprom.c
2520 @@ -746,6 +746,9 @@ ath5k_eeprom_convert_pcal_info_5111(struct ath5k_hw *ah, int mode,
2521 }
2522 }
2523
2524 + if (idx == AR5K_EEPROM_N_PD_CURVES)
2525 + goto err_out;
2526 +
2527 ee->ee_pd_gains[mode] = 1;
2528
2529 pd = &chinfo[pier].pd_curves[idx];
2530 diff --git a/drivers/net/wireless/ath/ath9k/htc_hst.c b/drivers/net/wireless/ath/ath9k/htc_hst.c
2531 index 625823e45d8f0..06a6e74435502 100644
2532 --- a/drivers/net/wireless/ath/ath9k/htc_hst.c
2533 +++ b/drivers/net/wireless/ath/ath9k/htc_hst.c
2534 @@ -31,6 +31,7 @@ static int htc_issue_send(struct htc_target *target, struct sk_buff* skb,
2535 hdr->endpoint_id = epid;
2536 hdr->flags = flags;
2537 hdr->payload_len = cpu_to_be16(len);
2538 + memset(hdr->control, 0, sizeof(hdr->control));
2539
2540 status = target->hif->send(target->hif_dev, endpoint->ul_pipeid, skb);
2541
2542 @@ -278,6 +279,10 @@ int htc_connect_service(struct htc_target *target,
2543 conn_msg->dl_pipeid = endpoint->dl_pipeid;
2544 conn_msg->ul_pipeid = endpoint->ul_pipeid;
2545
2546 + /* To prevent infoleak */
2547 + conn_msg->svc_meta_len = 0;
2548 + conn_msg->pad = 0;
2549 +
2550 ret = htc_issue_send(target, skb, skb->len, 0, ENDPOINT0);
2551 if (ret)
2552 goto err;
2553 diff --git a/drivers/net/wireless/ath/carl9170/main.c b/drivers/net/wireless/ath/carl9170/main.c
2554 index 202f421e0e375..1ea80d004d463 100644
2555 --- a/drivers/net/wireless/ath/carl9170/main.c
2556 +++ b/drivers/net/wireless/ath/carl9170/main.c
2557 @@ -1920,7 +1920,7 @@ static int carl9170_parse_eeprom(struct ar9170 *ar)
2558 WARN_ON(!(tx_streams >= 1 && tx_streams <=
2559 IEEE80211_HT_MCS_TX_MAX_STREAMS));
2560
2561 - tx_params = (tx_streams - 1) <<
2562 + tx_params |= (tx_streams - 1) <<
2563 IEEE80211_HT_MCS_TX_MAX_STREAMS_SHIFT;
2564
2565 carl9170_band_2GHz.ht_cap.mcs.tx_params |= tx_params;
2566 diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
2567 index d231042f19d64..33a7378164b88 100644
2568 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
2569 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
2570 @@ -216,6 +216,8 @@ static int brcmf_init_nvram_parser(struct nvram_parser *nvp,
2571 size = BRCMF_FW_MAX_NVRAM_SIZE;
2572 else
2573 size = data_len;
2574 + /* Add space for properties we may add */
2575 + size += strlen(BRCMF_FW_DEFAULT_BOARDREV) + 1;
2576 /* Alloc for extra 0 byte + roundup by 4 + length field */
2577 size += 1 + 3 + sizeof(u32);
2578 nvp->nvram = kzalloc(size, GFP_KERNEL);
2579 diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
2580 index d3d79219fbb05..9e90737f4d494 100644
2581 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
2582 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
2583 @@ -22,6 +22,7 @@
2584 #include <linux/interrupt.h>
2585 #include <linux/bcma/bcma.h>
2586 #include <linux/sched.h>
2587 +#include <linux/io.h>
2588 #include <asm/unaligned.h>
2589
2590 #include <soc.h>
2591 @@ -406,47 +407,6 @@ brcmf_pcie_write_ram32(struct brcmf_pciedev_info *devinfo, u32 mem_offset,
2592 }
2593
2594
2595 -static void
2596 -brcmf_pcie_copy_mem_todev(struct brcmf_pciedev_info *devinfo, u32 mem_offset,
2597 - void *srcaddr, u32 len)
2598 -{
2599 - void __iomem *address = devinfo->tcm + mem_offset;
2600 - __le32 *src32;
2601 - __le16 *src16;
2602 - u8 *src8;
2603 -
2604 - if (((ulong)address & 4) || ((ulong)srcaddr & 4) || (len & 4)) {
2605 - if (((ulong)address & 2) || ((ulong)srcaddr & 2) || (len & 2)) {
2606 - src8 = (u8 *)srcaddr;
2607 - while (len) {
2608 - iowrite8(*src8, address);
2609 - address++;
2610 - src8++;
2611 - len--;
2612 - }
2613 - } else {
2614 - len = len / 2;
2615 - src16 = (__le16 *)srcaddr;
2616 - while (len) {
2617 - iowrite16(le16_to_cpu(*src16), address);
2618 - address += 2;
2619 - src16++;
2620 - len--;
2621 - }
2622 - }
2623 - } else {
2624 - len = len / 4;
2625 - src32 = (__le32 *)srcaddr;
2626 - while (len) {
2627 - iowrite32(le32_to_cpu(*src32), address);
2628 - address += 4;
2629 - src32++;
2630 - len--;
2631 - }
2632 - }
2633 -}
2634 -
2635 -
2636 static void
2637 brcmf_pcie_copy_dev_tomem(struct brcmf_pciedev_info *devinfo, u32 mem_offset,
2638 void *dstaddr, u32 len)
2639 @@ -1422,8 +1382,8 @@ static int brcmf_pcie_download_fw_nvram(struct brcmf_pciedev_info *devinfo,
2640 return err;
2641
2642 brcmf_dbg(PCIE, "Download FW %s\n", devinfo->fw_name);
2643 - brcmf_pcie_copy_mem_todev(devinfo, devinfo->ci->rambase,
2644 - (void *)fw->data, fw->size);
2645 + memcpy_toio(devinfo->tcm + devinfo->ci->rambase,
2646 + (void *)fw->data, fw->size);
2647
2648 resetintr = get_unaligned_le32(fw->data);
2649 release_firmware(fw);
2650 @@ -1437,7 +1397,7 @@ static int brcmf_pcie_download_fw_nvram(struct brcmf_pciedev_info *devinfo,
2651 brcmf_dbg(PCIE, "Download NVRAM %s\n", devinfo->nvram_name);
2652 address = devinfo->ci->rambase + devinfo->ci->ramsize -
2653 nvram_len;
2654 - brcmf_pcie_copy_mem_todev(devinfo, address, nvram, nvram_len);
2655 + memcpy_toio(devinfo->tcm + address, nvram, nvram_len);
2656 brcmf_fw_nvram_free(nvram);
2657 } else {
2658 brcmf_dbg(PCIE, "No matching NVRAM file found %s\n",
2659 diff --git a/drivers/net/wireless/intel/iwlwifi/dvm/mac80211.c b/drivers/net/wireless/intel/iwlwifi/dvm/mac80211.c
2660 index 8c0719468d005..6bd2486f617e1 100644
2661 --- a/drivers/net/wireless/intel/iwlwifi/dvm/mac80211.c
2662 +++ b/drivers/net/wireless/intel/iwlwifi/dvm/mac80211.c
2663 @@ -315,7 +315,7 @@ static int iwlagn_mac_start(struct ieee80211_hw *hw)
2664
2665 priv->is_open = 1;
2666 IWL_DEBUG_MAC80211(priv, "leave\n");
2667 - return 0;
2668 + return ret;
2669 }
2670
2671 static void iwlagn_mac_stop(struct ieee80211_hw *hw)
2672 diff --git a/drivers/net/wireless/ray_cs.c b/drivers/net/wireless/ray_cs.c
2673 index c78abfc7bd96d..784063b1e60f7 100644
2674 --- a/drivers/net/wireless/ray_cs.c
2675 +++ b/drivers/net/wireless/ray_cs.c
2676 @@ -396,6 +396,8 @@ static int ray_config(struct pcmcia_device *link)
2677 goto failed;
2678 local->sram = ioremap(link->resource[2]->start,
2679 resource_size(link->resource[2]));
2680 + if (!local->sram)
2681 + goto failed;
2682
2683 /*** Set up 16k window for shared memory (receive buffer) ***************/
2684 link->resource[3]->flags |=
2685 @@ -410,6 +412,8 @@ static int ray_config(struct pcmcia_device *link)
2686 goto failed;
2687 local->rmem = ioremap(link->resource[3]->start,
2688 resource_size(link->resource[3]));
2689 + if (!local->rmem)
2690 + goto failed;
2691
2692 /*** Set up window for attribute memory ***********************************/
2693 link->resource[4]->flags |=
2694 @@ -424,6 +428,8 @@ static int ray_config(struct pcmcia_device *link)
2695 goto failed;
2696 local->amem = ioremap(link->resource[4]->start,
2697 resource_size(link->resource[4]));
2698 + if (!local->amem)
2699 + goto failed;
2700
2701 dev_dbg(&link->dev, "ray_config sram=%p\n", local->sram);
2702 dev_dbg(&link->dev, "ray_config rmem=%p\n", local->rmem);
2703 diff --git a/drivers/pci/hotplug/pciehp_hpc.c b/drivers/pci/hotplug/pciehp_hpc.c
2704 index 8b8b096167d7a..31be1c69fd706 100644
2705 --- a/drivers/pci/hotplug/pciehp_hpc.c
2706 +++ b/drivers/pci/hotplug/pciehp_hpc.c
2707 @@ -120,6 +120,8 @@ static int pcie_poll_cmd(struct controller *ctrl, int timeout)
2708 if (slot_status & PCI_EXP_SLTSTA_CC) {
2709 pcie_capability_write_word(pdev, PCI_EXP_SLTSTA,
2710 PCI_EXP_SLTSTA_CC);
2711 + ctrl->cmd_busy = 0;
2712 + smp_mb();
2713 return 1;
2714 }
2715 if (timeout < 0)
2716 diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
2717 index f9aef2ac03a1e..4cce720171093 100644
2718 --- a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
2719 +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
2720 @@ -1355,6 +1355,7 @@ int mtk_pctrl_init(struct platform_device *pdev,
2721 node = of_parse_phandle(np, "mediatek,pctl-regmap", 0);
2722 if (node) {
2723 pctl->regmap1 = syscon_node_to_regmap(node);
2724 + of_node_put(node);
2725 if (IS_ERR(pctl->regmap1))
2726 return PTR_ERR(pctl->regmap1);
2727 } else if (regmap) {
2728 @@ -1368,6 +1369,7 @@ int mtk_pctrl_init(struct platform_device *pdev,
2729 node = of_parse_phandle(np, "mediatek,pctl-regmap", 1);
2730 if (node) {
2731 pctl->regmap2 = syscon_node_to_regmap(node);
2732 + of_node_put(node);
2733 if (IS_ERR(pctl->regmap2))
2734 return PTR_ERR(pctl->regmap2);
2735 }
2736 diff --git a/drivers/pinctrl/nomadik/pinctrl-nomadik.c b/drivers/pinctrl/nomadik/pinctrl-nomadik.c
2737 index d318ca0554894..6e237c46e1bd9 100644
2738 --- a/drivers/pinctrl/nomadik/pinctrl-nomadik.c
2739 +++ b/drivers/pinctrl/nomadik/pinctrl-nomadik.c
2740 @@ -1916,8 +1916,10 @@ static int nmk_pinctrl_probe(struct platform_device *pdev)
2741 }
2742
2743 prcm_np = of_parse_phandle(np, "prcm", 0);
2744 - if (prcm_np)
2745 + if (prcm_np) {
2746 npct->prcm_base = of_iomap(prcm_np, 0);
2747 + of_node_put(prcm_np);
2748 + }
2749 if (!npct->prcm_base) {
2750 if (version == PINCTRL_NMK_STN8815) {
2751 dev_info(&pdev->dev,
2752 diff --git a/drivers/pinctrl/pinconf-generic.c b/drivers/pinctrl/pinconf-generic.c
2753 index 5020ae5344794..074a7e044e250 100644
2754 --- a/drivers/pinctrl/pinconf-generic.c
2755 +++ b/drivers/pinctrl/pinconf-generic.c
2756 @@ -31,10 +31,10 @@ static const struct pin_config_item conf_items[] = {
2757 PCONFDUMP(PIN_CONFIG_BIAS_BUS_HOLD, "input bias bus hold", NULL, false),
2758 PCONFDUMP(PIN_CONFIG_BIAS_DISABLE, "input bias disabled", NULL, false),
2759 PCONFDUMP(PIN_CONFIG_BIAS_HIGH_IMPEDANCE, "input bias high impedance", NULL, false),
2760 - PCONFDUMP(PIN_CONFIG_BIAS_PULL_DOWN, "input bias pull down", NULL, false),
2761 + PCONFDUMP(PIN_CONFIG_BIAS_PULL_DOWN, "input bias pull down", "ohms", true),
2762 PCONFDUMP(PIN_CONFIG_BIAS_PULL_PIN_DEFAULT,
2763 - "input bias pull to pin specific state", NULL, false),
2764 - PCONFDUMP(PIN_CONFIG_BIAS_PULL_UP, "input bias pull up", NULL, false),
2765 + "input bias pull to pin specific state", "ohms", true),
2766 + PCONFDUMP(PIN_CONFIG_BIAS_PULL_UP, "input bias pull up", "ohms", true),
2767 PCONFDUMP(PIN_CONFIG_DRIVE_OPEN_DRAIN, "output drive open drain", NULL, false),
2768 PCONFDUMP(PIN_CONFIG_DRIVE_OPEN_SOURCE, "output drive open source", NULL, false),
2769 PCONFDUMP(PIN_CONFIG_DRIVE_PUSH_PULL, "output drive push pull", NULL, false),
2770 diff --git a/drivers/pinctrl/pinctrl-rockchip.c b/drivers/pinctrl/pinctrl-rockchip.c
2771 index 17827a88b85e1..9bcb238c2e12e 100644
2772 --- a/drivers/pinctrl/pinctrl-rockchip.c
2773 +++ b/drivers/pinctrl/pinctrl-rockchip.c
2774 @@ -2414,6 +2414,7 @@ static int rockchip_pinctrl_probe(struct platform_device *pdev)
2775 node = of_parse_phandle(np, "rockchip,grf", 0);
2776 if (node) {
2777 info->regmap_base = syscon_node_to_regmap(node);
2778 + of_node_put(node);
2779 if (IS_ERR(info->regmap_base))
2780 return PTR_ERR(info->regmap_base);
2781 } else {
2782 @@ -2450,6 +2451,7 @@ static int rockchip_pinctrl_probe(struct platform_device *pdev)
2783 node = of_parse_phandle(np, "rockchip,pmu", 0);
2784 if (node) {
2785 info->regmap_pmu = syscon_node_to_regmap(node);
2786 + of_node_put(node);
2787 if (IS_ERR(info->regmap_pmu))
2788 return PTR_ERR(info->regmap_pmu);
2789 }
2790 diff --git a/drivers/power/supply/ab8500_fg.c b/drivers/power/supply/ab8500_fg.c
2791 index d6079e892e11f..c07437ad1b852 100644
2792 --- a/drivers/power/supply/ab8500_fg.c
2793 +++ b/drivers/power/supply/ab8500_fg.c
2794 @@ -2545,8 +2545,10 @@ static int ab8500_fg_sysfs_init(struct ab8500_fg *di)
2795 ret = kobject_init_and_add(&di->fg_kobject,
2796 &ab8500_fg_ktype,
2797 NULL, "battery");
2798 - if (ret < 0)
2799 + if (ret < 0) {
2800 + kobject_put(&di->fg_kobject);
2801 dev_err(di->dev, "failed to create sysfs entry\n");
2802 + }
2803
2804 return ret;
2805 }
2806 diff --git a/drivers/power/supply/wm8350_power.c b/drivers/power/supply/wm8350_power.c
2807 index 5c5880664e09b..28c7102fb24e8 100644
2808 --- a/drivers/power/supply/wm8350_power.c
2809 +++ b/drivers/power/supply/wm8350_power.c
2810 @@ -410,44 +410,112 @@ static const struct power_supply_desc wm8350_usb_desc = {
2811 * Initialisation
2812 *********************************************************************/
2813
2814 -static void wm8350_init_charger(struct wm8350 *wm8350)
2815 +static int wm8350_init_charger(struct wm8350 *wm8350)
2816 {
2817 + int ret;
2818 +
2819 /* register our interest in charger events */
2820 - wm8350_register_irq(wm8350, WM8350_IRQ_CHG_BAT_HOT,
2821 + ret = wm8350_register_irq(wm8350, WM8350_IRQ_CHG_BAT_HOT,
2822 wm8350_charger_handler, 0, "Battery hot", wm8350);
2823 - wm8350_register_irq(wm8350, WM8350_IRQ_CHG_BAT_COLD,
2824 + if (ret)
2825 + goto err;
2826 +
2827 + ret = wm8350_register_irq(wm8350, WM8350_IRQ_CHG_BAT_COLD,
2828 wm8350_charger_handler, 0, "Battery cold", wm8350);
2829 - wm8350_register_irq(wm8350, WM8350_IRQ_CHG_BAT_FAIL,
2830 + if (ret)
2831 + goto free_chg_bat_hot;
2832 +
2833 + ret = wm8350_register_irq(wm8350, WM8350_IRQ_CHG_BAT_FAIL,
2834 wm8350_charger_handler, 0, "Battery fail", wm8350);
2835 - wm8350_register_irq(wm8350, WM8350_IRQ_CHG_TO,
2836 + if (ret)
2837 + goto free_chg_bat_cold;
2838 +
2839 + ret = wm8350_register_irq(wm8350, WM8350_IRQ_CHG_TO,
2840 wm8350_charger_handler, 0,
2841 "Charger timeout", wm8350);
2842 - wm8350_register_irq(wm8350, WM8350_IRQ_CHG_END,
2843 + if (ret)
2844 + goto free_chg_bat_fail;
2845 +
2846 + ret = wm8350_register_irq(wm8350, WM8350_IRQ_CHG_END,
2847 wm8350_charger_handler, 0,
2848 "Charge end", wm8350);
2849 - wm8350_register_irq(wm8350, WM8350_IRQ_CHG_START,
2850 + if (ret)
2851 + goto free_chg_to;
2852 +
2853 + ret = wm8350_register_irq(wm8350, WM8350_IRQ_CHG_START,
2854 wm8350_charger_handler, 0,
2855 "Charge start", wm8350);
2856 - wm8350_register_irq(wm8350, WM8350_IRQ_CHG_FAST_RDY,
2857 + if (ret)
2858 + goto free_chg_end;
2859 +
2860 + ret = wm8350_register_irq(wm8350, WM8350_IRQ_CHG_FAST_RDY,
2861 wm8350_charger_handler, 0,
2862 "Fast charge ready", wm8350);
2863 - wm8350_register_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P9,
2864 + if (ret)
2865 + goto free_chg_start;
2866 +
2867 + ret = wm8350_register_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P9,
2868 wm8350_charger_handler, 0,
2869 "Battery <3.9V", wm8350);
2870 - wm8350_register_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P1,
2871 + if (ret)
2872 + goto free_chg_fast_rdy;
2873 +
2874 + ret = wm8350_register_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P1,
2875 wm8350_charger_handler, 0,
2876 "Battery <3.1V", wm8350);
2877 - wm8350_register_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_2P85,
2878 + if (ret)
2879 + goto free_chg_vbatt_lt_3p9;
2880 +
2881 + ret = wm8350_register_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_2P85,
2882 wm8350_charger_handler, 0,
2883 "Battery <2.85V", wm8350);
2884 + if (ret)
2885 + goto free_chg_vbatt_lt_3p1;
2886
2887 /* and supply change events */
2888 - wm8350_register_irq(wm8350, WM8350_IRQ_EXT_USB_FB,
2889 + ret = wm8350_register_irq(wm8350, WM8350_IRQ_EXT_USB_FB,
2890 wm8350_charger_handler, 0, "USB", wm8350);
2891 - wm8350_register_irq(wm8350, WM8350_IRQ_EXT_WALL_FB,
2892 + if (ret)
2893 + goto free_chg_vbatt_lt_2p85;
2894 +
2895 + ret = wm8350_register_irq(wm8350, WM8350_IRQ_EXT_WALL_FB,
2896 wm8350_charger_handler, 0, "Wall", wm8350);
2897 - wm8350_register_irq(wm8350, WM8350_IRQ_EXT_BAT_FB,
2898 + if (ret)
2899 + goto free_ext_usb_fb;
2900 +
2901 + ret = wm8350_register_irq(wm8350, WM8350_IRQ_EXT_BAT_FB,
2902 wm8350_charger_handler, 0, "Battery", wm8350);
2903 + if (ret)
2904 + goto free_ext_wall_fb;
2905 +
2906 + return 0;
2907 +
2908 +free_ext_wall_fb:
2909 + wm8350_free_irq(wm8350, WM8350_IRQ_EXT_WALL_FB, wm8350);
2910 +free_ext_usb_fb:
2911 + wm8350_free_irq(wm8350, WM8350_IRQ_EXT_USB_FB, wm8350);
2912 +free_chg_vbatt_lt_2p85:
2913 + wm8350_free_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_2P85, wm8350);
2914 +free_chg_vbatt_lt_3p1:
2915 + wm8350_free_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P1, wm8350);
2916 +free_chg_vbatt_lt_3p9:
2917 + wm8350_free_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P9, wm8350);
2918 +free_chg_fast_rdy:
2919 + wm8350_free_irq(wm8350, WM8350_IRQ_CHG_FAST_RDY, wm8350);
2920 +free_chg_start:
2921 + wm8350_free_irq(wm8350, WM8350_IRQ_CHG_START, wm8350);
2922 +free_chg_end:
2923 + wm8350_free_irq(wm8350, WM8350_IRQ_CHG_END, wm8350);
2924 +free_chg_to:
2925 + wm8350_free_irq(wm8350, WM8350_IRQ_CHG_TO, wm8350);
2926 +free_chg_bat_fail:
2927 + wm8350_free_irq(wm8350, WM8350_IRQ_CHG_BAT_FAIL, wm8350);
2928 +free_chg_bat_cold:
2929 + wm8350_free_irq(wm8350, WM8350_IRQ_CHG_BAT_COLD, wm8350);
2930 +free_chg_bat_hot:
2931 + wm8350_free_irq(wm8350, WM8350_IRQ_CHG_BAT_HOT, wm8350);
2932 +err:
2933 + return ret;
2934 }
2935
2936 static void free_charger_irq(struct wm8350 *wm8350)
2937 @@ -458,6 +526,7 @@ static void free_charger_irq(struct wm8350 *wm8350)
2938 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_TO, wm8350);
2939 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_END, wm8350);
2940 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_START, wm8350);
2941 + wm8350_free_irq(wm8350, WM8350_IRQ_CHG_FAST_RDY, wm8350);
2942 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P9, wm8350);
2943 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P1, wm8350);
2944 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_2P85, wm8350);
2945 diff --git a/drivers/ptp/ptp_sysfs.c b/drivers/ptp/ptp_sysfs.c
2946 index 731d0423c8aa7..b690621b4fc8d 100644
2947 --- a/drivers/ptp/ptp_sysfs.c
2948 +++ b/drivers/ptp/ptp_sysfs.c
2949 @@ -26,7 +26,7 @@ static ssize_t clock_name_show(struct device *dev,
2950 struct device_attribute *attr, char *page)
2951 {
2952 struct ptp_clock *ptp = dev_get_drvdata(dev);
2953 - return snprintf(page, PAGE_SIZE-1, "%s\n", ptp->info->name);
2954 + return sysfs_emit(page, "%s\n", ptp->info->name);
2955 }
2956 static DEVICE_ATTR(clock_name, 0444, clock_name_show, NULL);
2957
2958 @@ -240,7 +240,7 @@ static ssize_t ptp_pin_show(struct device *dev, struct device_attribute *attr,
2959
2960 mutex_unlock(&ptp->pincfg_mux);
2961
2962 - return snprintf(page, PAGE_SIZE, "%u %u\n", func, chan);
2963 + return sysfs_emit(page, "%u %u\n", func, chan);
2964 }
2965
2966 static ssize_t ptp_pin_store(struct device *dev, struct device_attribute *attr,
2967 diff --git a/drivers/pwm/pwm-lpc18xx-sct.c b/drivers/pwm/pwm-lpc18xx-sct.c
2968 index d7f5f7de030dd..8b3aad06e2360 100644
2969 --- a/drivers/pwm/pwm-lpc18xx-sct.c
2970 +++ b/drivers/pwm/pwm-lpc18xx-sct.c
2971 @@ -406,12 +406,6 @@ static int lpc18xx_pwm_probe(struct platform_device *pdev)
2972 lpc18xx_pwm_writel(lpc18xx_pwm, LPC18XX_PWM_LIMIT,
2973 BIT(lpc18xx_pwm->period_event));
2974
2975 - ret = pwmchip_add(&lpc18xx_pwm->chip);
2976 - if (ret < 0) {
2977 - dev_err(&pdev->dev, "pwmchip_add failed: %d\n", ret);
2978 - goto disable_pwmclk;
2979 - }
2980 -
2981 for (i = 0; i < lpc18xx_pwm->chip.npwm; i++) {
2982 struct lpc18xx_pwm_data *data;
2983
2984 @@ -421,14 +415,12 @@ static int lpc18xx_pwm_probe(struct platform_device *pdev)
2985 GFP_KERNEL);
2986 if (!data) {
2987 ret = -ENOMEM;
2988 - goto remove_pwmchip;
2989 + goto disable_pwmclk;
2990 }
2991
2992 pwm_set_chip_data(pwm, data);
2993 }
2994
2995 - platform_set_drvdata(pdev, lpc18xx_pwm);
2996 -
2997 val = lpc18xx_pwm_readl(lpc18xx_pwm, LPC18XX_PWM_CTRL);
2998 val &= ~LPC18XX_PWM_BIDIR;
2999 val &= ~LPC18XX_PWM_CTRL_HALT;
3000 @@ -436,10 +428,16 @@ static int lpc18xx_pwm_probe(struct platform_device *pdev)
3001 val |= LPC18XX_PWM_PRE(0);
3002 lpc18xx_pwm_writel(lpc18xx_pwm, LPC18XX_PWM_CTRL, val);
3003
3004 + ret = pwmchip_add(&lpc18xx_pwm->chip);
3005 + if (ret < 0) {
3006 + dev_err(&pdev->dev, "pwmchip_add failed: %d\n", ret);
3007 + goto disable_pwmclk;
3008 + }
3009 +
3010 + platform_set_drvdata(pdev, lpc18xx_pwm);
3011 +
3012 return 0;
3013
3014 -remove_pwmchip:
3015 - pwmchip_remove(&lpc18xx_pwm->chip);
3016 disable_pwmclk:
3017 clk_disable_unprepare(lpc18xx_pwm->pwm_clk);
3018 return ret;
3019 diff --git a/drivers/remoteproc/qcom_wcnss.c b/drivers/remoteproc/qcom_wcnss.c
3020 index 323b629474a6b..9f76ad9e959dc 100644
3021 --- a/drivers/remoteproc/qcom_wcnss.c
3022 +++ b/drivers/remoteproc/qcom_wcnss.c
3023 @@ -472,6 +472,7 @@ static int wcnss_alloc_memory_region(struct qcom_wcnss *wcnss)
3024 }
3025
3026 ret = of_address_to_resource(node, 0, &r);
3027 + of_node_put(node);
3028 if (ret)
3029 return ret;
3030
3031 diff --git a/drivers/rtc/rtc-wm8350.c b/drivers/rtc/rtc-wm8350.c
3032 index fa247deb9cf40..b45d7d9b8c062 100644
3033 --- a/drivers/rtc/rtc-wm8350.c
3034 +++ b/drivers/rtc/rtc-wm8350.c
3035 @@ -443,14 +443,21 @@ static int wm8350_rtc_probe(struct platform_device *pdev)
3036 return ret;
3037 }
3038
3039 - wm8350_register_irq(wm8350, WM8350_IRQ_RTC_SEC,
3040 + ret = wm8350_register_irq(wm8350, WM8350_IRQ_RTC_SEC,
3041 wm8350_rtc_update_handler, 0,
3042 "RTC Seconds", wm8350);
3043 + if (ret)
3044 + return ret;
3045 +
3046 wm8350_mask_irq(wm8350, WM8350_IRQ_RTC_SEC);
3047
3048 - wm8350_register_irq(wm8350, WM8350_IRQ_RTC_ALM,
3049 + ret = wm8350_register_irq(wm8350, WM8350_IRQ_RTC_ALM,
3050 wm8350_rtc_alarm_handler, 0,
3051 "RTC Alarm", wm8350);
3052 + if (ret) {
3053 + wm8350_free_irq(wm8350, WM8350_IRQ_RTC_SEC, wm8350);
3054 + return ret;
3055 + }
3056
3057 return 0;
3058 }
3059 diff --git a/drivers/scsi/aha152x.c b/drivers/scsi/aha152x.c
3060 index f44d0487236e3..bd850c5faf77d 100644
3061 --- a/drivers/scsi/aha152x.c
3062 +++ b/drivers/scsi/aha152x.c
3063 @@ -3381,13 +3381,11 @@ static int __init aha152x_setup(char *str)
3064 setup[setup_count].synchronous = ints[0] >= 6 ? ints[6] : 1;
3065 setup[setup_count].delay = ints[0] >= 7 ? ints[7] : DELAY_DEFAULT;
3066 setup[setup_count].ext_trans = ints[0] >= 8 ? ints[8] : 0;
3067 - if (ints[0] > 8) { /*}*/
3068 + if (ints[0] > 8)
3069 printk(KERN_NOTICE "aha152x: usage: aha152x=<IOBASE>[,<IRQ>[,<SCSI ID>"
3070 "[,<RECONNECT>[,<PARITY>[,<SYNCHRONOUS>[,<DELAY>[,<EXT_TRANS>]]]]]]]\n");
3071 - } else {
3072 + else
3073 setup_count++;
3074 - return 0;
3075 - }
3076
3077 return 1;
3078 }
3079 diff --git a/drivers/scsi/bfa/bfad_attr.c b/drivers/scsi/bfa/bfad_attr.c
3080 index 0a70d54a4df68..47e5993524685 100644
3081 --- a/drivers/scsi/bfa/bfad_attr.c
3082 +++ b/drivers/scsi/bfa/bfad_attr.c
3083 @@ -722,7 +722,7 @@ bfad_im_serial_num_show(struct device *dev, struct device_attribute *attr,
3084 char serial_num[BFA_ADAPTER_SERIAL_NUM_LEN];
3085
3086 bfa_get_adapter_serial_num(&bfad->bfa, serial_num);
3087 - return snprintf(buf, PAGE_SIZE, "%s\n", serial_num);
3088 + return sysfs_emit(buf, "%s\n", serial_num);
3089 }
3090
3091 static ssize_t
3092 @@ -736,7 +736,7 @@ bfad_im_model_show(struct device *dev, struct device_attribute *attr,
3093 char model[BFA_ADAPTER_MODEL_NAME_LEN];
3094
3095 bfa_get_adapter_model(&bfad->bfa, model);
3096 - return snprintf(buf, PAGE_SIZE, "%s\n", model);
3097 + return sysfs_emit(buf, "%s\n", model);
3098 }
3099
3100 static ssize_t
3101 @@ -816,7 +816,7 @@ bfad_im_model_desc_show(struct device *dev, struct device_attribute *attr,
3102 snprintf(model_descr, BFA_ADAPTER_MODEL_DESCR_LEN,
3103 "Invalid Model");
3104
3105 - return snprintf(buf, PAGE_SIZE, "%s\n", model_descr);
3106 + return sysfs_emit(buf, "%s\n", model_descr);
3107 }
3108
3109 static ssize_t
3110 @@ -830,7 +830,7 @@ bfad_im_node_name_show(struct device *dev, struct device_attribute *attr,
3111 u64 nwwn;
3112
3113 nwwn = bfa_fcs_lport_get_nwwn(port->fcs_port);
3114 - return snprintf(buf, PAGE_SIZE, "0x%llx\n", cpu_to_be64(nwwn));
3115 + return sysfs_emit(buf, "0x%llx\n", cpu_to_be64(nwwn));
3116 }
3117
3118 static ssize_t
3119 @@ -847,7 +847,7 @@ bfad_im_symbolic_name_show(struct device *dev, struct device_attribute *attr,
3120 bfa_fcs_lport_get_attr(&bfad->bfa_fcs.fabric.bport, &port_attr);
3121 strlcpy(symname, port_attr.port_cfg.sym_name.symname,
3122 BFA_SYMNAME_MAXLEN);
3123 - return snprintf(buf, PAGE_SIZE, "%s\n", symname);
3124 + return sysfs_emit(buf, "%s\n", symname);
3125 }
3126
3127 static ssize_t
3128 @@ -861,14 +861,14 @@ bfad_im_hw_version_show(struct device *dev, struct device_attribute *attr,
3129 char hw_ver[BFA_VERSION_LEN];
3130
3131 bfa_get_pci_chip_rev(&bfad->bfa, hw_ver);
3132 - return snprintf(buf, PAGE_SIZE, "%s\n", hw_ver);
3133 + return sysfs_emit(buf, "%s\n", hw_ver);
3134 }
3135
3136 static ssize_t
3137 bfad_im_drv_version_show(struct device *dev, struct device_attribute *attr,
3138 char *buf)
3139 {
3140 - return snprintf(buf, PAGE_SIZE, "%s\n", BFAD_DRIVER_VERSION);
3141 + return sysfs_emit(buf, "%s\n", BFAD_DRIVER_VERSION);
3142 }
3143
3144 static ssize_t
3145 @@ -882,7 +882,7 @@ bfad_im_optionrom_version_show(struct device *dev,
3146 char optrom_ver[BFA_VERSION_LEN];
3147
3148 bfa_get_adapter_optrom_ver(&bfad->bfa, optrom_ver);
3149 - return snprintf(buf, PAGE_SIZE, "%s\n", optrom_ver);
3150 + return sysfs_emit(buf, "%s\n", optrom_ver);
3151 }
3152
3153 static ssize_t
3154 @@ -896,7 +896,7 @@ bfad_im_fw_version_show(struct device *dev, struct device_attribute *attr,
3155 char fw_ver[BFA_VERSION_LEN];
3156
3157 bfa_get_adapter_fw_ver(&bfad->bfa, fw_ver);
3158 - return snprintf(buf, PAGE_SIZE, "%s\n", fw_ver);
3159 + return sysfs_emit(buf, "%s\n", fw_ver);
3160 }
3161
3162 static ssize_t
3163 @@ -908,7 +908,7 @@ bfad_im_num_of_ports_show(struct device *dev, struct device_attribute *attr,
3164 (struct bfad_im_port_s *) shost->hostdata[0];
3165 struct bfad_s *bfad = im_port->bfad;
3166
3167 - return snprintf(buf, PAGE_SIZE, "%d\n",
3168 + return sysfs_emit(buf, "%d\n",
3169 bfa_get_nports(&bfad->bfa));
3170 }
3171
3172 @@ -916,7 +916,7 @@ static ssize_t
3173 bfad_im_drv_name_show(struct device *dev, struct device_attribute *attr,
3174 char *buf)
3175 {
3176 - return snprintf(buf, PAGE_SIZE, "%s\n", BFAD_DRIVER_NAME);
3177 + return sysfs_emit(buf, "%s\n", BFAD_DRIVER_NAME);
3178 }
3179
3180 static ssize_t
3181 @@ -935,14 +935,14 @@ bfad_im_num_of_discovered_ports_show(struct device *dev,
3182 rports = kzalloc(sizeof(struct bfa_rport_qualifier_s) * nrports,
3183 GFP_ATOMIC);
3184 if (rports == NULL)
3185 - return snprintf(buf, PAGE_SIZE, "Failed\n");
3186 + return sysfs_emit(buf, "Failed\n");
3187
3188 spin_lock_irqsave(&bfad->bfad_lock, flags);
3189 bfa_fcs_lport_get_rport_quals(port->fcs_port, rports, &nrports);
3190 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
3191 kfree(rports);
3192
3193 - return snprintf(buf, PAGE_SIZE, "%d\n", nrports);
3194 + return sysfs_emit(buf, "%d\n", nrports);
3195 }
3196
3197 static DEVICE_ATTR(serial_number, S_IRUGO,
3198 diff --git a/drivers/scsi/ibmvscsi_tgt/ibmvscsi_tgt.c b/drivers/scsi/ibmvscsi_tgt/ibmvscsi_tgt.c
3199 index 5ed28111c3c33..569b662e19e7f 100644
3200 --- a/drivers/scsi/ibmvscsi_tgt/ibmvscsi_tgt.c
3201 +++ b/drivers/scsi/ibmvscsi_tgt/ibmvscsi_tgt.c
3202 @@ -43,7 +43,7 @@
3203
3204 #define IBMVSCSIS_VERSION "v0.2"
3205
3206 -#define INITIAL_SRP_LIMIT 800
3207 +#define INITIAL_SRP_LIMIT 1024
3208 #define DEFAULT_MAX_SECTORS 256
3209 #define MAX_TXU 1024 * 1024
3210
3211 diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c
3212 index 59fd6101f188b..177e494b5e477 100644
3213 --- a/drivers/scsi/libfc/fc_exch.c
3214 +++ b/drivers/scsi/libfc/fc_exch.c
3215 @@ -1663,6 +1663,7 @@ static void fc_exch_abts_resp(struct fc_exch *ep, struct fc_frame *fp)
3216 if (cancel_delayed_work_sync(&ep->timeout_work)) {
3217 FC_EXCH_DBG(ep, "Exchange timer canceled due to ABTS response\n");
3218 fc_exch_release(ep); /* release from pending timer hold */
3219 + return;
3220 }
3221
3222 spin_lock_bh(&ep->ex_lock);
3223 diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c
3224 index 8800ff615bdd4..af2c7e7878b1f 100644
3225 --- a/drivers/scsi/libsas/sas_ata.c
3226 +++ b/drivers/scsi/libsas/sas_ata.c
3227 @@ -220,7 +220,7 @@ static unsigned int sas_ata_qc_issue(struct ata_queued_cmd *qc)
3228 task->total_xfer_len = qc->nbytes;
3229 task->num_scatter = qc->n_elem;
3230 task->data_dir = qc->dma_dir;
3231 - } else if (qc->tf.protocol == ATA_PROT_NODATA) {
3232 + } else if (!ata_is_data(qc->tf.protocol)) {
3233 task->data_dir = DMA_NONE;
3234 } else {
3235 for_each_sg(qc->sg, sg, qc->n_elem, si)
3236 diff --git a/drivers/scsi/mvsas/mv_init.c b/drivers/scsi/mvsas/mv_init.c
3237 index 8280046fd1f0d..359fd39c6345d 100644
3238 --- a/drivers/scsi/mvsas/mv_init.c
3239 +++ b/drivers/scsi/mvsas/mv_init.c
3240 @@ -679,6 +679,7 @@ static struct pci_device_id mvs_pci_table[] = {
3241 { PCI_VDEVICE(ARECA, PCI_DEVICE_ID_ARECA_1300), chip_1300 },
3242 { PCI_VDEVICE(ARECA, PCI_DEVICE_ID_ARECA_1320), chip_1320 },
3243 { PCI_VDEVICE(ADAPTEC2, 0x0450), chip_6440 },
3244 + { PCI_VDEVICE(TTI, 0x2640), chip_6440 },
3245 { PCI_VDEVICE(TTI, 0x2710), chip_9480 },
3246 { PCI_VDEVICE(TTI, 0x2720), chip_9480 },
3247 { PCI_VDEVICE(TTI, 0x2721), chip_9480 },
3248 @@ -730,7 +731,7 @@ static ssize_t
3249 mvs_show_driver_version(struct device *cdev,
3250 struct device_attribute *attr, char *buffer)
3251 {
3252 - return snprintf(buffer, PAGE_SIZE, "%s\n", DRV_VERSION);
3253 + return sysfs_emit(buffer, "%s\n", DRV_VERSION);
3254 }
3255
3256 static DEVICE_ATTR(driver_version,
3257 @@ -782,7 +783,7 @@ mvs_store_interrupt_coalescing(struct device *cdev,
3258 static ssize_t mvs_show_interrupt_coalescing(struct device *cdev,
3259 struct device_attribute *attr, char *buffer)
3260 {
3261 - return snprintf(buffer, PAGE_SIZE, "%d\n", interrupt_coalescing);
3262 + return sysfs_emit(buffer, "%d\n", interrupt_coalescing);
3263 }
3264
3265 static DEVICE_ATTR(interrupt_coalescing,
3266 diff --git a/drivers/scsi/pm8001/pm8001_hwi.c b/drivers/scsi/pm8001/pm8001_hwi.c
3267 index f374abfb7f1f8..cc90b5c8d4625 100644
3268 --- a/drivers/scsi/pm8001/pm8001_hwi.c
3269 +++ b/drivers/scsi/pm8001/pm8001_hwi.c
3270 @@ -1748,6 +1748,7 @@ static void pm8001_send_abort_all(struct pm8001_hba_info *pm8001_ha,
3271 ccb->device = pm8001_ha_dev;
3272 ccb->ccb_tag = ccb_tag;
3273 ccb->task = task;
3274 + ccb->n_elem = 0;
3275
3276 circularQ = &pm8001_ha->inbnd_q_tbl[0];
3277
3278 @@ -1810,6 +1811,7 @@ static void pm8001_send_read_log(struct pm8001_hba_info *pm8001_ha,
3279 ccb->device = pm8001_ha_dev;
3280 ccb->ccb_tag = ccb_tag;
3281 ccb->task = task;
3282 + ccb->n_elem = 0;
3283 pm8001_ha_dev->id |= NCQ_READ_LOG_FLAG;
3284 pm8001_ha_dev->id |= NCQ_2ND_RLE_FLAG;
3285
3286 @@ -1826,7 +1828,7 @@ static void pm8001_send_read_log(struct pm8001_hba_info *pm8001_ha,
3287
3288 sata_cmd.tag = cpu_to_le32(ccb_tag);
3289 sata_cmd.device_id = cpu_to_le32(pm8001_ha_dev->device_id);
3290 - sata_cmd.ncqtag_atap_dir_m |= ((0x1 << 7) | (0x5 << 9));
3291 + sata_cmd.ncqtag_atap_dir_m = cpu_to_le32((0x1 << 7) | (0x5 << 9));
3292 memcpy(&sata_cmd.sata_fis, &fis, sizeof(struct host_to_dev_fis));
3293
3294 res = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &sata_cmd, 0);
3295 @@ -3766,12 +3768,11 @@ int pm8001_mpi_task_abort_resp(struct pm8001_hba_info *pm8001_ha, void *piomb)
3296 mb();
3297
3298 if (pm8001_dev->id & NCQ_ABORT_ALL_FLAG) {
3299 - pm8001_tag_free(pm8001_ha, tag);
3300 sas_free_task(t);
3301 - /* clear the flag */
3302 - pm8001_dev->id &= 0xBFFFFFFF;
3303 - } else
3304 + pm8001_dev->id &= ~NCQ_ABORT_ALL_FLAG;
3305 + } else {
3306 t->task_done(t);
3307 + }
3308
3309 return 0;
3310 }
3311 @@ -4718,7 +4719,7 @@ int pm8001_chip_ssp_tm_req(struct pm8001_hba_info *pm8001_ha,
3312 memcpy(sspTMCmd.lun, task->ssp_task.LUN, 8);
3313 sspTMCmd.tag = cpu_to_le32(ccb->ccb_tag);
3314 if (pm8001_ha->chip_id != chip_8001)
3315 - sspTMCmd.ds_ads_m = 0x08;
3316 + sspTMCmd.ds_ads_m = cpu_to_le32(0x08);
3317 circularQ = &pm8001_ha->inbnd_q_tbl[0];
3318 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &sspTMCmd, 0);
3319 return ret;
3320 diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c
3321 index df5f0bc295875..4eae727ccfbc8 100644
3322 --- a/drivers/scsi/pm8001/pm80xx_hwi.c
3323 +++ b/drivers/scsi/pm8001/pm80xx_hwi.c
3324 @@ -870,9 +870,11 @@ pm80xx_set_thermal_config(struct pm8001_hba_info *pm8001_ha)
3325 else
3326 page_code = THERMAL_PAGE_CODE_8H;
3327
3328 - payload.cfg_pg[0] = (THERMAL_LOG_ENABLE << 9) |
3329 - (THERMAL_ENABLE << 8) | page_code;
3330 - payload.cfg_pg[1] = (LTEMPHIL << 24) | (RTEMPHIL << 8);
3331 + payload.cfg_pg[0] =
3332 + cpu_to_le32((THERMAL_LOG_ENABLE << 9) |
3333 + (THERMAL_ENABLE << 8) | page_code);
3334 + payload.cfg_pg[1] =
3335 + cpu_to_le32((LTEMPHIL << 24) | (RTEMPHIL << 8));
3336
3337 rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0);
3338 if (rc)
3339 @@ -1424,6 +1426,7 @@ static void pm80xx_send_abort_all(struct pm8001_hba_info *pm8001_ha,
3340 ccb->device = pm8001_ha_dev;
3341 ccb->ccb_tag = ccb_tag;
3342 ccb->task = task;
3343 + ccb->n_elem = 0;
3344
3345 circularQ = &pm8001_ha->inbnd_q_tbl[0];
3346
3347 @@ -1504,7 +1507,7 @@ static void pm80xx_send_read_log(struct pm8001_hba_info *pm8001_ha,
3348
3349 sata_cmd.tag = cpu_to_le32(ccb_tag);
3350 sata_cmd.device_id = cpu_to_le32(pm8001_ha_dev->device_id);
3351 - sata_cmd.ncqtag_atap_dir_m_dad |= ((0x1 << 7) | (0x5 << 9));
3352 + sata_cmd.ncqtag_atap_dir_m_dad = cpu_to_le32(((0x1 << 7) | (0x5 << 9)));
3353 memcpy(&sata_cmd.sata_fis, &fis, sizeof(struct host_to_dev_fis));
3354
3355 res = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &sata_cmd, 0);
3356 diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
3357 index 17b1525d492bf..c41491472d445 100644
3358 --- a/drivers/scsi/qla2xxx/qla_isr.c
3359 +++ b/drivers/scsi/qla2xxx/qla_isr.c
3360 @@ -1618,6 +1618,7 @@ qla24xx_tm_iocb_entry(scsi_qla_host_t *vha, struct req_que *req, void *tsk)
3361 iocb->u.tmf.data = QLA_FUNCTION_FAILED;
3362 } else if ((le16_to_cpu(sts->scsi_status) &
3363 SS_RESPONSE_INFO_LEN_VALID)) {
3364 + host_to_fcp_swap(sts->data, sizeof(sts->data));
3365 if (le32_to_cpu(sts->rsp_data_len) < 4) {
3366 ql_log(ql_log_warn, fcport->vha, 0x503b,
3367 "Async-%s error - hdl=%x not enough response(%d).\n",
3368 diff --git a/drivers/scsi/zorro7xx.c b/drivers/scsi/zorro7xx.c
3369 index aff31991aea98..ee6d974738532 100644
3370 --- a/drivers/scsi/zorro7xx.c
3371 +++ b/drivers/scsi/zorro7xx.c
3372 @@ -158,6 +158,8 @@ static void zorro7xx_remove_one(struct zorro_dev *z)
3373 scsi_remove_host(host);
3374
3375 NCR_700_release(host);
3376 + if (host->base > 0x01000000)
3377 + iounmap(hostdata->base);
3378 kfree(hostdata);
3379 free_irq(host->irq, host);
3380 zorro_release_device(z);
3381 diff --git a/drivers/soc/ti/wkup_m3_ipc.c b/drivers/soc/ti/wkup_m3_ipc.c
3382 index fc33bfdc957cc..ead96fe2e7f5a 100644
3383 --- a/drivers/soc/ti/wkup_m3_ipc.c
3384 +++ b/drivers/soc/ti/wkup_m3_ipc.c
3385 @@ -405,9 +405,9 @@ static int wkup_m3_ipc_probe(struct platform_device *pdev)
3386 }
3387
3388 irq = platform_get_irq(pdev, 0);
3389 - if (!irq) {
3390 + if (irq < 0) {
3391 dev_err(&pdev->dev, "no irq resource\n");
3392 - return -ENXIO;
3393 + return irq;
3394 }
3395
3396 ret = devm_request_irq(dev, irq, wkup_m3_txev_handler,
3397 diff --git a/drivers/spi/spi-tegra114.c b/drivers/spi/spi-tegra114.c
3398 index d1ca8f619b828..89a3121f4f254 100644
3399 --- a/drivers/spi/spi-tegra114.c
3400 +++ b/drivers/spi/spi-tegra114.c
3401 @@ -1098,6 +1098,10 @@ static int tegra_spi_probe(struct platform_device *pdev)
3402 tspi->phys = r->start;
3403
3404 spi_irq = platform_get_irq(pdev, 0);
3405 + if (spi_irq < 0) {
3406 + ret = spi_irq;
3407 + goto exit_free_master;
3408 + }
3409 tspi->irq = spi_irq;
3410
3411 tspi->clk = devm_clk_get(&pdev->dev, "spi");
3412 diff --git a/drivers/spi/spi-tegra20-slink.c b/drivers/spi/spi-tegra20-slink.c
3413 index 88bfe7682a9eb..b8a3a78730b5e 100644
3414 --- a/drivers/spi/spi-tegra20-slink.c
3415 +++ b/drivers/spi/spi-tegra20-slink.c
3416 @@ -1016,14 +1016,8 @@ static int tegra_slink_probe(struct platform_device *pdev)
3417 struct resource *r;
3418 int ret, spi_irq;
3419 const struct tegra_slink_chip_data *cdata = NULL;
3420 - const struct of_device_id *match;
3421
3422 - match = of_match_device(tegra_slink_of_match, &pdev->dev);
3423 - if (!match) {
3424 - dev_err(&pdev->dev, "Error: No device match found\n");
3425 - return -ENODEV;
3426 - }
3427 - cdata = match->data;
3428 + cdata = of_device_get_match_data(&pdev->dev);
3429
3430 master = spi_alloc_master(&pdev->dev, sizeof(*tspi));
3431 if (!master) {
3432 diff --git a/drivers/thermal/int340x_thermal/int3400_thermal.c b/drivers/thermal/int340x_thermal/int3400_thermal.c
3433 index d4c374cc4f74f..a8a47013ba47a 100644
3434 --- a/drivers/thermal/int340x_thermal/int3400_thermal.c
3435 +++ b/drivers/thermal/int340x_thermal/int3400_thermal.c
3436 @@ -51,7 +51,7 @@ struct int3400_thermal_priv {
3437 struct art *arts;
3438 int trt_count;
3439 struct trt *trts;
3440 - u8 uuid_bitmap;
3441 + u32 uuid_bitmap;
3442 int rel_misc_dev_res;
3443 int current_uuid_index;
3444 };
3445 diff --git a/drivers/tty/hvc/hvc_iucv.c b/drivers/tty/hvc/hvc_iucv.c
3446 index 8b70a1627356d..799bc191982cf 100644
3447 --- a/drivers/tty/hvc/hvc_iucv.c
3448 +++ b/drivers/tty/hvc/hvc_iucv.c
3449 @@ -1469,7 +1469,9 @@ out_error:
3450 */
3451 static int __init hvc_iucv_config(char *val)
3452 {
3453 - return kstrtoul(val, 10, &hvc_iucv_devices);
3454 + if (kstrtoul(val, 10, &hvc_iucv_devices))
3455 + pr_warn("hvc_iucv= invalid parameter value '%s'\n", val);
3456 + return 1;
3457 }
3458
3459
3460 diff --git a/drivers/tty/mxser.c b/drivers/tty/mxser.c
3461 index 69294ae154be0..ea7f4af85d58b 100644
3462 --- a/drivers/tty/mxser.c
3463 +++ b/drivers/tty/mxser.c
3464 @@ -860,6 +860,7 @@ static int mxser_activate(struct tty_port *port, struct tty_struct *tty)
3465 struct mxser_port *info = container_of(port, struct mxser_port, port);
3466 unsigned long page;
3467 unsigned long flags;
3468 + int ret;
3469
3470 page = __get_free_page(GFP_KERNEL);
3471 if (!page)
3472 @@ -869,9 +870,9 @@ static int mxser_activate(struct tty_port *port, struct tty_struct *tty)
3473
3474 if (!info->ioaddr || !info->type) {
3475 set_bit(TTY_IO_ERROR, &tty->flags);
3476 - free_page(page);
3477 spin_unlock_irqrestore(&info->slock, flags);
3478 - return 0;
3479 + ret = 0;
3480 + goto err_free_xmit;
3481 }
3482 info->port.xmit_buf = (unsigned char *) page;
3483
3484 @@ -897,8 +898,10 @@ static int mxser_activate(struct tty_port *port, struct tty_struct *tty)
3485 if (capable(CAP_SYS_ADMIN)) {
3486 set_bit(TTY_IO_ERROR, &tty->flags);
3487 return 0;
3488 - } else
3489 - return -ENODEV;
3490 + }
3491 +
3492 + ret = -ENODEV;
3493 + goto err_free_xmit;
3494 }
3495
3496 /*
3497 @@ -943,6 +946,10 @@ static int mxser_activate(struct tty_port *port, struct tty_struct *tty)
3498 spin_unlock_irqrestore(&info->slock, flags);
3499
3500 return 0;
3501 +err_free_xmit:
3502 + free_page(page);
3503 + info->port.xmit_buf = NULL;
3504 + return ret;
3505 }
3506
3507 /*
3508 diff --git a/drivers/tty/serial/kgdboc.c b/drivers/tty/serial/kgdboc.c
3509 index 0314e78e31ff1..72b89702d008c 100644
3510 --- a/drivers/tty/serial/kgdboc.c
3511 +++ b/drivers/tty/serial/kgdboc.c
3512 @@ -304,16 +304,16 @@ static int kgdboc_option_setup(char *opt)
3513 {
3514 if (!opt) {
3515 pr_err("config string not provided\n");
3516 - return -EINVAL;
3517 + return 1;
3518 }
3519
3520 if (strlen(opt) >= MAX_CONFIG_LEN) {
3521 pr_err("config string too long\n");
3522 - return -ENOSPC;
3523 + return 1;
3524 }
3525 strcpy(config, opt);
3526
3527 - return 0;
3528 + return 1;
3529 }
3530
3531 __setup("kgdboc=", kgdboc_option_setup);
3532 diff --git a/drivers/tty/serial/samsung.c b/drivers/tty/serial/samsung.c
3533 index 8c89697c53573..15b9bf35457b7 100644
3534 --- a/drivers/tty/serial/samsung.c
3535 +++ b/drivers/tty/serial/samsung.c
3536 @@ -764,11 +764,8 @@ static irqreturn_t s3c24xx_serial_tx_chars(int irq, void *id)
3537 goto out;
3538 }
3539
3540 - if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS) {
3541 - spin_unlock(&port->lock);
3542 + if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS)
3543 uart_write_wakeup(port);
3544 - spin_lock(&port->lock);
3545 - }
3546
3547 if (uart_circ_empty(xmit))
3548 s3c24xx_serial_stop_tx(port);
3549 diff --git a/drivers/usb/dwc3/dwc3-omap.c b/drivers/usb/dwc3/dwc3-omap.c
3550 index 8e69150776f5c..a08b29fbaa50c 100644
3551 --- a/drivers/usb/dwc3/dwc3-omap.c
3552 +++ b/drivers/usb/dwc3/dwc3-omap.c
3553 @@ -245,7 +245,7 @@ static void dwc3_omap_set_mailbox(struct dwc3_omap *omap,
3554 break;
3555
3556 case OMAP_DWC3_ID_FLOAT:
3557 - if (omap->vbus_reg)
3558 + if (omap->vbus_reg && regulator_is_enabled(omap->vbus_reg))
3559 regulator_disable(omap->vbus_reg);
3560 val = dwc3_omap_read_utmi_ctrl(omap);
3561 val |= USBOTGSS_UTMI_OTG_CTRL_IDDIG;
3562 diff --git a/drivers/usb/serial/Kconfig b/drivers/usb/serial/Kconfig
3563 index 77c3ebe860c56..b495bbecf8096 100644
3564 --- a/drivers/usb/serial/Kconfig
3565 +++ b/drivers/usb/serial/Kconfig
3566 @@ -65,6 +65,7 @@ config USB_SERIAL_SIMPLE
3567 - Libtransistor USB console
3568 - a number of Motorola phones
3569 - Motorola Tetra devices
3570 + - Nokia mobile phones
3571 - Novatel Wireless GPS receivers
3572 - Siemens USB/MPI adapter.
3573 - ViVOtech ViVOpay USB device.
3574 diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
3575 index 3dd0bbb36dd27..c5fa5b704ec57 100644
3576 --- a/drivers/usb/serial/pl2303.c
3577 +++ b/drivers/usb/serial/pl2303.c
3578 @@ -105,6 +105,7 @@ static const struct usb_device_id id_table[] = {
3579 { USB_DEVICE(ADLINK_VENDOR_ID, ADLINK_ND6530GC_PRODUCT_ID) },
3580 { USB_DEVICE(SMART_VENDOR_ID, SMART_PRODUCT_ID) },
3581 { USB_DEVICE(AT_VENDOR_ID, AT_VTKIT3_PRODUCT_ID) },
3582 + { USB_DEVICE(IBM_VENDOR_ID, IBM_PRODUCT_ID) },
3583 { } /* Terminating entry */
3584 };
3585
3586 diff --git a/drivers/usb/serial/pl2303.h b/drivers/usb/serial/pl2303.h
3587 index 62b8cd673aa11..908865495b489 100644
3588 --- a/drivers/usb/serial/pl2303.h
3589 +++ b/drivers/usb/serial/pl2303.h
3590 @@ -33,6 +33,9 @@
3591 #define ATEN_PRODUCT_UC485 0x2021
3592 #define ATEN_PRODUCT_ID2 0x2118
3593
3594 +#define IBM_VENDOR_ID 0x04b3
3595 +#define IBM_PRODUCT_ID 0x4016
3596 +
3597 #define IODATA_VENDOR_ID 0x04bb
3598 #define IODATA_PRODUCT_ID 0x0a03
3599 #define IODATA_PRODUCT_ID_RSAQ5 0x0a0e
3600 diff --git a/drivers/usb/serial/usb-serial-simple.c b/drivers/usb/serial/usb-serial-simple.c
3601 index 15e05ebf37ac4..3681e64182620 100644
3602 --- a/drivers/usb/serial/usb-serial-simple.c
3603 +++ b/drivers/usb/serial/usb-serial-simple.c
3604 @@ -94,6 +94,11 @@ DEVICE(moto_modem, MOTO_IDS);
3605 { USB_DEVICE(0x0cad, 0x9016) } /* TPG2200 */
3606 DEVICE(motorola_tetra, MOTOROLA_TETRA_IDS);
3607
3608 +/* Nokia mobile phone driver */
3609 +#define NOKIA_IDS() \
3610 + { USB_DEVICE(0x0421, 0x069a) } /* Nokia 130 (RM-1035) */
3611 +DEVICE(nokia, NOKIA_IDS);
3612 +
3613 /* Novatel Wireless GPS driver */
3614 #define NOVATEL_IDS() \
3615 { USB_DEVICE(0x09d7, 0x0100) } /* NovAtel FlexPack GPS */
3616 @@ -126,6 +131,7 @@ static struct usb_serial_driver * const serial_drivers[] = {
3617 &vivopay_device,
3618 &moto_modem_device,
3619 &motorola_tetra_device,
3620 + &nokia_device,
3621 &novatel_gps_device,
3622 &hp4x_device,
3623 &suunto_device,
3624 @@ -143,6 +149,7 @@ static const struct usb_device_id id_table[] = {
3625 VIVOPAY_IDS(),
3626 MOTO_IDS(),
3627 MOTOROLA_TETRA_IDS(),
3628 + NOKIA_IDS(),
3629 NOVATEL_IDS(),
3630 HP4X_IDS(),
3631 SUUNTO_IDS(),
3632 diff --git a/drivers/usb/storage/ene_ub6250.c b/drivers/usb/storage/ene_ub6250.c
3633 index 4d6eb48b2c45d..aa88ff70b078f 100644
3634 --- a/drivers/usb/storage/ene_ub6250.c
3635 +++ b/drivers/usb/storage/ene_ub6250.c
3636 @@ -251,36 +251,33 @@ static struct us_unusual_dev ene_ub6250_unusual_dev_list[] = {
3637 #define memstick_logaddr(logadr1, logadr0) ((((u16)(logadr1)) << 8) | (logadr0))
3638
3639
3640 -struct SD_STATUS {
3641 - u8 Insert:1;
3642 - u8 Ready:1;
3643 - u8 MediaChange:1;
3644 - u8 IsMMC:1;
3645 - u8 HiCapacity:1;
3646 - u8 HiSpeed:1;
3647 - u8 WtP:1;
3648 - u8 Reserved:1;
3649 -};
3650 -
3651 -struct MS_STATUS {
3652 - u8 Insert:1;
3653 - u8 Ready:1;
3654 - u8 MediaChange:1;
3655 - u8 IsMSPro:1;
3656 - u8 IsMSPHG:1;
3657 - u8 Reserved1:1;
3658 - u8 WtP:1;
3659 - u8 Reserved2:1;
3660 -};
3661 -
3662 -struct SM_STATUS {
3663 - u8 Insert:1;
3664 - u8 Ready:1;
3665 - u8 MediaChange:1;
3666 - u8 Reserved:3;
3667 - u8 WtP:1;
3668 - u8 IsMS:1;
3669 -};
3670 +/* SD_STATUS bits */
3671 +#define SD_Insert BIT(0)
3672 +#define SD_Ready BIT(1)
3673 +#define SD_MediaChange BIT(2)
3674 +#define SD_IsMMC BIT(3)
3675 +#define SD_HiCapacity BIT(4)
3676 +#define SD_HiSpeed BIT(5)
3677 +#define SD_WtP BIT(6)
3678 + /* Bit 7 reserved */
3679 +
3680 +/* MS_STATUS bits */
3681 +#define MS_Insert BIT(0)
3682 +#define MS_Ready BIT(1)
3683 +#define MS_MediaChange BIT(2)
3684 +#define MS_IsMSPro BIT(3)
3685 +#define MS_IsMSPHG BIT(4)
3686 + /* Bit 5 reserved */
3687 +#define MS_WtP BIT(6)
3688 + /* Bit 7 reserved */
3689 +
3690 +/* SM_STATUS bits */
3691 +#define SM_Insert BIT(0)
3692 +#define SM_Ready BIT(1)
3693 +#define SM_MediaChange BIT(2)
3694 + /* Bits 3-5 reserved */
3695 +#define SM_WtP BIT(6)
3696 +#define SM_IsMS BIT(7)
3697
3698 struct ms_bootblock_cis {
3699 u8 bCistplDEVICE[6]; /* 0 */
3700 @@ -451,9 +448,9 @@ struct ene_ub6250_info {
3701 u8 *bbuf;
3702
3703 /* for 6250 code */
3704 - struct SD_STATUS SD_Status;
3705 - struct MS_STATUS MS_Status;
3706 - struct SM_STATUS SM_Status;
3707 + u8 SD_Status;
3708 + u8 MS_Status;
3709 + u8 SM_Status;
3710
3711 /* ----- SD Control Data ---------------- */
3712 /*SD_REGISTER SD_Regs; */
3713 @@ -588,7 +585,7 @@ static int sd_scsi_test_unit_ready(struct us_data *us, struct scsi_cmnd *srb)
3714 {
3715 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
3716
3717 - if (info->SD_Status.Insert && info->SD_Status.Ready)
3718 + if ((info->SD_Status & SD_Insert) && (info->SD_Status & SD_Ready))
3719 return USB_STOR_TRANSPORT_GOOD;
3720 else {
3721 ene_sd_init(us);
3722 @@ -620,7 +617,7 @@ static int sd_scsi_mode_sense(struct us_data *us, struct scsi_cmnd *srb)
3723 0x0b, 0x00, 0x80, 0x08, 0x00, 0x00,
3724 0x71, 0xc0, 0x00, 0x00, 0x02, 0x00 };
3725
3726 - if (info->SD_Status.WtP)
3727 + if (info->SD_Status & SD_WtP)
3728 usb_stor_set_xfer_buf(mediaWP, 12, srb);
3729 else
3730 usb_stor_set_xfer_buf(mediaNoWP, 12, srb);
3731 @@ -639,9 +636,9 @@ static int sd_scsi_read_capacity(struct us_data *us, struct scsi_cmnd *srb)
3732 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
3733
3734 usb_stor_dbg(us, "sd_scsi_read_capacity\n");
3735 - if (info->SD_Status.HiCapacity) {
3736 + if (info->SD_Status & SD_HiCapacity) {
3737 bl_len = 0x200;
3738 - if (info->SD_Status.IsMMC)
3739 + if (info->SD_Status & SD_IsMMC)
3740 bl_num = info->HC_C_SIZE-1;
3741 else
3742 bl_num = (info->HC_C_SIZE + 1) * 1024 - 1;
3743 @@ -691,7 +688,7 @@ static int sd_scsi_read(struct us_data *us, struct scsi_cmnd *srb)
3744 return USB_STOR_TRANSPORT_ERROR;
3745 }
3746
3747 - if (info->SD_Status.HiCapacity)
3748 + if (info->SD_Status & SD_HiCapacity)
3749 bnByte = bn;
3750
3751 /* set up the command wrapper */
3752 @@ -731,7 +728,7 @@ static int sd_scsi_write(struct us_data *us, struct scsi_cmnd *srb)
3753 return USB_STOR_TRANSPORT_ERROR;
3754 }
3755
3756 - if (info->SD_Status.HiCapacity)
3757 + if (info->SD_Status & SD_HiCapacity)
3758 bnByte = bn;
3759
3760 /* set up the command wrapper */
3761 @@ -1447,7 +1444,7 @@ static int ms_scsi_test_unit_ready(struct us_data *us, struct scsi_cmnd *srb)
3762 struct ene_ub6250_info *info = (struct ene_ub6250_info *)(us->extra);
3763
3764 /* pr_info("MS_SCSI_Test_Unit_Ready\n"); */
3765 - if (info->MS_Status.Insert && info->MS_Status.Ready) {
3766 + if ((info->MS_Status & MS_Insert) && (info->MS_Status & MS_Ready)) {
3767 return USB_STOR_TRANSPORT_GOOD;
3768 } else {
3769 ene_ms_init(us);
3770 @@ -1480,7 +1477,7 @@ static int ms_scsi_mode_sense(struct us_data *us, struct scsi_cmnd *srb)
3771 0x0b, 0x00, 0x80, 0x08, 0x00, 0x00,
3772 0x71, 0xc0, 0x00, 0x00, 0x02, 0x00 };
3773
3774 - if (info->MS_Status.WtP)
3775 + if (info->MS_Status & MS_WtP)
3776 usb_stor_set_xfer_buf(mediaWP, 12, srb);
3777 else
3778 usb_stor_set_xfer_buf(mediaNoWP, 12, srb);
3779 @@ -1499,7 +1496,7 @@ static int ms_scsi_read_capacity(struct us_data *us, struct scsi_cmnd *srb)
3780
3781 usb_stor_dbg(us, "ms_scsi_read_capacity\n");
3782 bl_len = 0x200;
3783 - if (info->MS_Status.IsMSPro)
3784 + if (info->MS_Status & MS_IsMSPro)
3785 bl_num = info->MSP_TotalBlock - 1;
3786 else
3787 bl_num = info->MS_Lib.NumberOfLogBlock * info->MS_Lib.blockSize * 2 - 1;
3788 @@ -1654,7 +1651,7 @@ static int ms_scsi_read(struct us_data *us, struct scsi_cmnd *srb)
3789 if (bn > info->bl_num)
3790 return USB_STOR_TRANSPORT_ERROR;
3791
3792 - if (info->MS_Status.IsMSPro) {
3793 + if (info->MS_Status & MS_IsMSPro) {
3794 result = ene_load_bincode(us, MSP_RW_PATTERN);
3795 if (result != USB_STOR_XFER_GOOD) {
3796 usb_stor_dbg(us, "Load MPS RW pattern Fail !!\n");
3797 @@ -1755,7 +1752,7 @@ static int ms_scsi_write(struct us_data *us, struct scsi_cmnd *srb)
3798 if (bn > info->bl_num)
3799 return USB_STOR_TRANSPORT_ERROR;
3800
3801 - if (info->MS_Status.IsMSPro) {
3802 + if (info->MS_Status & MS_IsMSPro) {
3803 result = ene_load_bincode(us, MSP_RW_PATTERN);
3804 if (result != USB_STOR_XFER_GOOD) {
3805 pr_info("Load MSP RW pattern Fail !!\n");
3806 @@ -1863,12 +1860,12 @@ static int ene_get_card_status(struct us_data *us, u8 *buf)
3807
3808 tmpreg = (u16) reg4b;
3809 reg4b = *(u32 *)(&buf[0x14]);
3810 - if (info->SD_Status.HiCapacity && !info->SD_Status.IsMMC)
3811 + if ((info->SD_Status & SD_HiCapacity) && !(info->SD_Status & SD_IsMMC))
3812 info->HC_C_SIZE = (reg4b >> 8) & 0x3fffff;
3813
3814 info->SD_C_SIZE = ((tmpreg & 0x03) << 10) | (u16)(reg4b >> 22);
3815 info->SD_C_SIZE_MULT = (u8)(reg4b >> 7) & 0x07;
3816 - if (info->SD_Status.HiCapacity && info->SD_Status.IsMMC)
3817 + if ((info->SD_Status & SD_HiCapacity) && (info->SD_Status & SD_IsMMC))
3818 info->HC_C_SIZE = *(u32 *)(&buf[0x100]);
3819
3820 if (info->SD_READ_BL_LEN > SD_BLOCK_LEN) {
3821 @@ -2080,6 +2077,7 @@ static int ene_ms_init(struct us_data *us)
3822 u16 MSP_BlockSize, MSP_UserAreaBlocks;
3823 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
3824 u8 *bbuf = info->bbuf;
3825 + unsigned int s;
3826
3827 printk(KERN_INFO "transport --- ENE_MSInit\n");
3828
3829 @@ -2104,15 +2102,16 @@ static int ene_ms_init(struct us_data *us)
3830 return USB_STOR_TRANSPORT_ERROR;
3831 }
3832 /* the same part to test ENE */
3833 - info->MS_Status = *(struct MS_STATUS *) bbuf;
3834 -
3835 - if (info->MS_Status.Insert && info->MS_Status.Ready) {
3836 - printk(KERN_INFO "Insert = %x\n", info->MS_Status.Insert);
3837 - printk(KERN_INFO "Ready = %x\n", info->MS_Status.Ready);
3838 - printk(KERN_INFO "IsMSPro = %x\n", info->MS_Status.IsMSPro);
3839 - printk(KERN_INFO "IsMSPHG = %x\n", info->MS_Status.IsMSPHG);
3840 - printk(KERN_INFO "WtP= %x\n", info->MS_Status.WtP);
3841 - if (info->MS_Status.IsMSPro) {
3842 + info->MS_Status = bbuf[0];
3843 +
3844 + s = info->MS_Status;
3845 + if ((s & MS_Insert) && (s & MS_Ready)) {
3846 + printk(KERN_INFO "Insert = %x\n", !!(s & MS_Insert));
3847 + printk(KERN_INFO "Ready = %x\n", !!(s & MS_Ready));
3848 + printk(KERN_INFO "IsMSPro = %x\n", !!(s & MS_IsMSPro));
3849 + printk(KERN_INFO "IsMSPHG = %x\n", !!(s & MS_IsMSPHG));
3850 + printk(KERN_INFO "WtP= %x\n", !!(s & MS_WtP));
3851 + if (s & MS_IsMSPro) {
3852 MSP_BlockSize = (bbuf[6] << 8) | bbuf[7];
3853 MSP_UserAreaBlocks = (bbuf[10] << 8) | bbuf[11];
3854 info->MSP_TotalBlock = MSP_BlockSize * MSP_UserAreaBlocks;
3855 @@ -2173,17 +2172,17 @@ static int ene_sd_init(struct us_data *us)
3856 return USB_STOR_TRANSPORT_ERROR;
3857 }
3858
3859 - info->SD_Status = *(struct SD_STATUS *) bbuf;
3860 - if (info->SD_Status.Insert && info->SD_Status.Ready) {
3861 - struct SD_STATUS *s = &info->SD_Status;
3862 + info->SD_Status = bbuf[0];
3863 + if ((info->SD_Status & SD_Insert) && (info->SD_Status & SD_Ready)) {
3864 + unsigned int s = info->SD_Status;
3865
3866 ene_get_card_status(us, bbuf);
3867 - usb_stor_dbg(us, "Insert = %x\n", s->Insert);
3868 - usb_stor_dbg(us, "Ready = %x\n", s->Ready);
3869 - usb_stor_dbg(us, "IsMMC = %x\n", s->IsMMC);
3870 - usb_stor_dbg(us, "HiCapacity = %x\n", s->HiCapacity);
3871 - usb_stor_dbg(us, "HiSpeed = %x\n", s->HiSpeed);
3872 - usb_stor_dbg(us, "WtP = %x\n", s->WtP);
3873 + usb_stor_dbg(us, "Insert = %x\n", !!(s & SD_Insert));
3874 + usb_stor_dbg(us, "Ready = %x\n", !!(s & SD_Ready));
3875 + usb_stor_dbg(us, "IsMMC = %x\n", !!(s & SD_IsMMC));
3876 + usb_stor_dbg(us, "HiCapacity = %x\n", !!(s & SD_HiCapacity));
3877 + usb_stor_dbg(us, "HiSpeed = %x\n", !!(s & SD_HiSpeed));
3878 + usb_stor_dbg(us, "WtP = %x\n", !!(s & SD_WtP));
3879 } else {
3880 usb_stor_dbg(us, "SD Card Not Ready --- %x\n", bbuf[0]);
3881 return USB_STOR_TRANSPORT_ERROR;
3882 @@ -2205,14 +2204,14 @@ static int ene_init(struct us_data *us)
3883
3884 misc_reg03 = bbuf[0];
3885 if (misc_reg03 & 0x01) {
3886 - if (!info->SD_Status.Ready) {
3887 + if (!(info->SD_Status & SD_Ready)) {
3888 result = ene_sd_init(us);
3889 if (result != USB_STOR_XFER_GOOD)
3890 return USB_STOR_TRANSPORT_ERROR;
3891 }
3892 }
3893 if (misc_reg03 & 0x02) {
3894 - if (!info->MS_Status.Ready) {
3895 + if (!(info->MS_Status & MS_Ready)) {
3896 result = ene_ms_init(us);
3897 if (result != USB_STOR_XFER_GOOD)
3898 return USB_STOR_TRANSPORT_ERROR;
3899 @@ -2302,14 +2301,14 @@ static int ene_transport(struct scsi_cmnd *srb, struct us_data *us)
3900
3901 /*US_DEBUG(usb_stor_show_command(us, srb)); */
3902 scsi_set_resid(srb, 0);
3903 - if (unlikely(!(info->SD_Status.Ready || info->MS_Status.Ready)))
3904 + if (unlikely(!(info->SD_Status & SD_Ready) || (info->MS_Status & MS_Ready)))
3905 result = ene_init(us);
3906 if (result == USB_STOR_XFER_GOOD) {
3907 result = USB_STOR_TRANSPORT_ERROR;
3908 - if (info->SD_Status.Ready)
3909 + if (info->SD_Status & SD_Ready)
3910 result = sd_scsi_irp(us, srb);
3911
3912 - if (info->MS_Status.Ready)
3913 + if (info->MS_Status & MS_Ready)
3914 result = ms_scsi_irp(us, srb);
3915 }
3916 return result;
3917 @@ -2373,7 +2372,6 @@ static int ene_ub6250_probe(struct usb_interface *intf,
3918
3919 static int ene_ub6250_resume(struct usb_interface *iface)
3920 {
3921 - u8 tmp = 0;
3922 struct us_data *us = usb_get_intfdata(iface);
3923 struct ene_ub6250_info *info = (struct ene_ub6250_info *)(us->extra);
3924
3925 @@ -2385,17 +2383,16 @@ static int ene_ub6250_resume(struct usb_interface *iface)
3926 mutex_unlock(&us->dev_mutex);
3927
3928 info->Power_IsResum = true;
3929 - /*info->SD_Status.Ready = 0; */
3930 - info->SD_Status = *(struct SD_STATUS *)&tmp;
3931 - info->MS_Status = *(struct MS_STATUS *)&tmp;
3932 - info->SM_Status = *(struct SM_STATUS *)&tmp;
3933 + /* info->SD_Status &= ~SD_Ready; */
3934 + info->SD_Status = 0;
3935 + info->MS_Status = 0;
3936 + info->SM_Status = 0;
3937
3938 return 0;
3939 }
3940
3941 static int ene_ub6250_reset_resume(struct usb_interface *iface)
3942 {
3943 - u8 tmp = 0;
3944 struct us_data *us = usb_get_intfdata(iface);
3945 struct ene_ub6250_info *info = (struct ene_ub6250_info *)(us->extra);
3946
3947 @@ -2407,10 +2404,10 @@ static int ene_ub6250_reset_resume(struct usb_interface *iface)
3948 * the device
3949 */
3950 info->Power_IsResum = true;
3951 - /*info->SD_Status.Ready = 0; */
3952 - info->SD_Status = *(struct SD_STATUS *)&tmp;
3953 - info->MS_Status = *(struct MS_STATUS *)&tmp;
3954 - info->SM_Status = *(struct SM_STATUS *)&tmp;
3955 + /* info->SD_Status &= ~SD_Ready; */
3956 + info->SD_Status = 0;
3957 + info->MS_Status = 0;
3958 + info->SM_Status = 0;
3959
3960 return 0;
3961 }
3962 diff --git a/drivers/usb/storage/realtek_cr.c b/drivers/usb/storage/realtek_cr.c
3963 index d955761fce6fc..d9d69637d6141 100644
3964 --- a/drivers/usb/storage/realtek_cr.c
3965 +++ b/drivers/usb/storage/realtek_cr.c
3966 @@ -377,7 +377,7 @@ static int rts51x_read_mem(struct us_data *us, u16 addr, u8 *data, u16 len)
3967
3968 buf = kmalloc(len, GFP_NOIO);
3969 if (buf == NULL)
3970 - return USB_STOR_TRANSPORT_ERROR;
3971 + return -ENOMEM;
3972
3973 usb_stor_dbg(us, "addr = 0x%x, len = %d\n", addr, len);
3974
3975 diff --git a/drivers/video/fbdev/atafb.c b/drivers/video/fbdev/atafb.c
3976 index fcd2dd670a658..770f77055682b 100644
3977 --- a/drivers/video/fbdev/atafb.c
3978 +++ b/drivers/video/fbdev/atafb.c
3979 @@ -1713,9 +1713,9 @@ static int falcon_setcolreg(unsigned int regno, unsigned int red,
3980 ((blue & 0xfc00) >> 8));
3981 if (regno < 16) {
3982 shifter_tt.color_reg[regno] =
3983 - (((red & 0xe000) >> 13) | ((red & 0x1000) >> 12) << 8) |
3984 - (((green & 0xe000) >> 13) | ((green & 0x1000) >> 12) << 4) |
3985 - ((blue & 0xe000) >> 13) | ((blue & 0x1000) >> 12);
3986 + ((((red & 0xe000) >> 13) | ((red & 0x1000) >> 12)) << 8) |
3987 + ((((green & 0xe000) >> 13) | ((green & 0x1000) >> 12)) << 4) |
3988 + ((blue & 0xe000) >> 13) | ((blue & 0x1000) >> 12);
3989 ((u32 *)info->pseudo_palette)[regno] = ((red & 0xf800) |
3990 ((green & 0xfc00) >> 5) |
3991 ((blue & 0xf800) >> 11));
3992 @@ -2001,9 +2001,9 @@ static int stste_setcolreg(unsigned int regno, unsigned int red,
3993 green >>= 12;
3994 if (ATARIHW_PRESENT(EXTD_SHIFTER))
3995 shifter_tt.color_reg[regno] =
3996 - (((red & 0xe) >> 1) | ((red & 1) << 3) << 8) |
3997 - (((green & 0xe) >> 1) | ((green & 1) << 3) << 4) |
3998 - ((blue & 0xe) >> 1) | ((blue & 1) << 3);
3999 + ((((red & 0xe) >> 1) | ((red & 1) << 3)) << 8) |
4000 + ((((green & 0xe) >> 1) | ((green & 1) << 3)) << 4) |
4001 + ((blue & 0xe) >> 1) | ((blue & 1) << 3);
4002 else
4003 shifter_tt.color_reg[regno] =
4004 ((red & 0xe) << 7) |
4005 diff --git a/drivers/video/fbdev/cirrusfb.c b/drivers/video/fbdev/cirrusfb.c
4006 index d992aa5eb3f0d..a8f4967de7980 100644
4007 --- a/drivers/video/fbdev/cirrusfb.c
4008 +++ b/drivers/video/fbdev/cirrusfb.c
4009 @@ -470,7 +470,7 @@ static int cirrusfb_check_mclk(struct fb_info *info, long freq)
4010 return 0;
4011 }
4012
4013 -static int cirrusfb_check_pixclock(const struct fb_var_screeninfo *var,
4014 +static int cirrusfb_check_pixclock(struct fb_var_screeninfo *var,
4015 struct fb_info *info)
4016 {
4017 long freq;
4018 @@ -479,9 +479,7 @@ static int cirrusfb_check_pixclock(const struct fb_var_screeninfo *var,
4019 unsigned maxclockidx = var->bits_per_pixel >> 3;
4020
4021 /* convert from ps to kHz */
4022 - freq = PICOS2KHZ(var->pixclock);
4023 -
4024 - dev_dbg(info->device, "desired pixclock: %ld kHz\n", freq);
4025 + freq = PICOS2KHZ(var->pixclock ? : 1);
4026
4027 maxclock = cirrusfb_board_info[cinfo->btype].maxclock[maxclockidx];
4028 cinfo->multiplexing = 0;
4029 @@ -489,11 +487,13 @@ static int cirrusfb_check_pixclock(const struct fb_var_screeninfo *var,
4030 /* If the frequency is greater than we can support, we might be able
4031 * to use multiplexing for the video mode */
4032 if (freq > maxclock) {
4033 - dev_err(info->device,
4034 - "Frequency greater than maxclock (%ld kHz)\n",
4035 - maxclock);
4036 - return -EINVAL;
4037 + var->pixclock = KHZ2PICOS(maxclock);
4038 +
4039 + while ((freq = PICOS2KHZ(var->pixclock)) > maxclock)
4040 + var->pixclock++;
4041 }
4042 + dev_dbg(info->device, "desired pixclock: %ld kHz\n", freq);
4043 +
4044 /*
4045 * Additional constraint: 8bpp uses DAC clock doubling to allow maximum
4046 * pixel clock
4047 diff --git a/drivers/video/fbdev/core/fbcvt.c b/drivers/video/fbdev/core/fbcvt.c
4048 index 55d2bd0ce5c02..64843464c6613 100644
4049 --- a/drivers/video/fbdev/core/fbcvt.c
4050 +++ b/drivers/video/fbdev/core/fbcvt.c
4051 @@ -214,9 +214,11 @@ static u32 fb_cvt_aspect_ratio(struct fb_cvt_data *cvt)
4052 static void fb_cvt_print_name(struct fb_cvt_data *cvt)
4053 {
4054 u32 pixcount, pixcount_mod;
4055 - int cnt = 255, offset = 0, read = 0;
4056 - u8 *buf = kzalloc(256, GFP_KERNEL);
4057 + int size = 256;
4058 + int off = 0;
4059 + u8 *buf;
4060
4061 + buf = kzalloc(size, GFP_KERNEL);
4062 if (!buf)
4063 return;
4064
4065 @@ -224,43 +226,30 @@ static void fb_cvt_print_name(struct fb_cvt_data *cvt)
4066 pixcount_mod = (cvt->xres * (cvt->yres/cvt->interlace)) % 1000000;
4067 pixcount_mod /= 1000;
4068
4069 - read = snprintf(buf+offset, cnt, "fbcvt: %dx%d@%d: CVT Name - ",
4070 - cvt->xres, cvt->yres, cvt->refresh);
4071 - offset += read;
4072 - cnt -= read;
4073 + off += scnprintf(buf + off, size - off, "fbcvt: %dx%d@%d: CVT Name - ",
4074 + cvt->xres, cvt->yres, cvt->refresh);
4075
4076 - if (cvt->status)
4077 - snprintf(buf+offset, cnt, "Not a CVT standard - %d.%03d Mega "
4078 - "Pixel Image\n", pixcount, pixcount_mod);
4079 - else {
4080 - if (pixcount) {
4081 - read = snprintf(buf+offset, cnt, "%d", pixcount);
4082 - cnt -= read;
4083 - offset += read;
4084 - }
4085 + if (cvt->status) {
4086 + off += scnprintf(buf + off, size - off,
4087 + "Not a CVT standard - %d.%03d Mega Pixel Image\n",
4088 + pixcount, pixcount_mod);
4089 + } else {
4090 + if (pixcount)
4091 + off += scnprintf(buf + off, size - off, "%d", pixcount);
4092
4093 - read = snprintf(buf+offset, cnt, ".%03dM", pixcount_mod);
4094 - cnt -= read;
4095 - offset += read;
4096 + off += scnprintf(buf + off, size - off, ".%03dM", pixcount_mod);
4097
4098 if (cvt->aspect_ratio == 0)
4099 - read = snprintf(buf+offset, cnt, "3");
4100 + off += scnprintf(buf + off, size - off, "3");
4101 else if (cvt->aspect_ratio == 3)
4102 - read = snprintf(buf+offset, cnt, "4");
4103 + off += scnprintf(buf + off, size - off, "4");
4104 else if (cvt->aspect_ratio == 1 || cvt->aspect_ratio == 4)
4105 - read = snprintf(buf+offset, cnt, "9");
4106 + off += scnprintf(buf + off, size - off, "9");
4107 else if (cvt->aspect_ratio == 2)
4108 - read = snprintf(buf+offset, cnt, "A");
4109 - else
4110 - read = 0;
4111 - cnt -= read;
4112 - offset += read;
4113 -
4114 - if (cvt->flags & FB_CVT_FLAG_REDUCED_BLANK) {
4115 - read = snprintf(buf+offset, cnt, "-R");
4116 - cnt -= read;
4117 - offset += read;
4118 - }
4119 + off += scnprintf(buf + off, size - off, "A");
4120 +
4121 + if (cvt->flags & FB_CVT_FLAG_REDUCED_BLANK)
4122 + off += scnprintf(buf + off, size - off, "-R");
4123 }
4124
4125 printk(KERN_INFO "%s\n", buf);
4126 diff --git a/drivers/video/fbdev/nvidia/nv_i2c.c b/drivers/video/fbdev/nvidia/nv_i2c.c
4127 index d7994a1732459..0b48965a6420c 100644
4128 --- a/drivers/video/fbdev/nvidia/nv_i2c.c
4129 +++ b/drivers/video/fbdev/nvidia/nv_i2c.c
4130 @@ -86,7 +86,7 @@ static int nvidia_setup_i2c_bus(struct nvidia_i2c_chan *chan, const char *name,
4131 {
4132 int rc;
4133
4134 - strcpy(chan->adapter.name, name);
4135 + strscpy(chan->adapter.name, name, sizeof(chan->adapter.name));
4136 chan->adapter.owner = THIS_MODULE;
4137 chan->adapter.class = i2c_class;
4138 chan->adapter.algo_data = &chan->algo;
4139 diff --git a/drivers/video/fbdev/omap2/omapfb/displays/connector-dvi.c b/drivers/video/fbdev/omap2/omapfb/displays/connector-dvi.c
4140 index 06e1db34541e2..41b0db0cc0471 100644
4141 --- a/drivers/video/fbdev/omap2/omapfb/displays/connector-dvi.c
4142 +++ b/drivers/video/fbdev/omap2/omapfb/displays/connector-dvi.c
4143 @@ -254,6 +254,7 @@ static int dvic_probe_of(struct platform_device *pdev)
4144 adapter_node = of_parse_phandle(node, "ddc-i2c-bus", 0);
4145 if (adapter_node) {
4146 adapter = of_get_i2c_adapter_by_node(adapter_node);
4147 + of_node_put(adapter_node);
4148 if (adapter == NULL) {
4149 dev_err(&pdev->dev, "failed to parse ddc-i2c-bus\n");
4150 omap_dss_put_device(ddata->in);
4151 diff --git a/drivers/video/fbdev/omap2/omapfb/displays/panel-dsi-cm.c b/drivers/video/fbdev/omap2/omapfb/displays/panel-dsi-cm.c
4152 index 8b810696a42b6..6a8f0f0fa6019 100644
4153 --- a/drivers/video/fbdev/omap2/omapfb/displays/panel-dsi-cm.c
4154 +++ b/drivers/video/fbdev/omap2/omapfb/displays/panel-dsi-cm.c
4155 @@ -413,7 +413,7 @@ static ssize_t dsicm_num_errors_show(struct device *dev,
4156 if (r)
4157 return r;
4158
4159 - return snprintf(buf, PAGE_SIZE, "%d\n", errors);
4160 + return sysfs_emit(buf, "%d\n", errors);
4161 }
4162
4163 static ssize_t dsicm_hw_revision_show(struct device *dev,
4164 @@ -444,7 +444,7 @@ static ssize_t dsicm_hw_revision_show(struct device *dev,
4165 if (r)
4166 return r;
4167
4168 - return snprintf(buf, PAGE_SIZE, "%02x.%02x.%02x\n", id1, id2, id3);
4169 + return sysfs_emit(buf, "%02x.%02x.%02x\n", id1, id2, id3);
4170 }
4171
4172 static ssize_t dsicm_store_ulps(struct device *dev,
4173 @@ -494,7 +494,7 @@ static ssize_t dsicm_show_ulps(struct device *dev,
4174 t = ddata->ulps_enabled;
4175 mutex_unlock(&ddata->lock);
4176
4177 - return snprintf(buf, PAGE_SIZE, "%u\n", t);
4178 + return sysfs_emit(buf, "%u\n", t);
4179 }
4180
4181 static ssize_t dsicm_store_ulps_timeout(struct device *dev,
4182 @@ -541,7 +541,7 @@ static ssize_t dsicm_show_ulps_timeout(struct device *dev,
4183 t = ddata->ulps_timeout;
4184 mutex_unlock(&ddata->lock);
4185
4186 - return snprintf(buf, PAGE_SIZE, "%u\n", t);
4187 + return sysfs_emit(buf, "%u\n", t);
4188 }
4189
4190 static DEVICE_ATTR(num_dsi_errors, S_IRUGO, dsicm_num_errors_show, NULL);
4191 diff --git a/drivers/video/fbdev/omap2/omapfb/displays/panel-sony-acx565akm.c b/drivers/video/fbdev/omap2/omapfb/displays/panel-sony-acx565akm.c
4192 index 468560a6daaea..0a1a82c686807 100644
4193 --- a/drivers/video/fbdev/omap2/omapfb/displays/panel-sony-acx565akm.c
4194 +++ b/drivers/video/fbdev/omap2/omapfb/displays/panel-sony-acx565akm.c
4195 @@ -487,7 +487,7 @@ static ssize_t show_cabc_available_modes(struct device *dev,
4196 int i;
4197
4198 if (!ddata->has_cabc)
4199 - return snprintf(buf, PAGE_SIZE, "%s\n", cabc_modes[0]);
4200 + return sysfs_emit(buf, "%s\n", cabc_modes[0]);
4201
4202 for (i = 0, len = 0;
4203 len < PAGE_SIZE && i < ARRAY_SIZE(cabc_modes); i++)
4204 diff --git a/drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td043mtea1.c b/drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td043mtea1.c
4205 index 51e628b85f4a0..2b8b6b5dc1aa2 100644
4206 --- a/drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td043mtea1.c
4207 +++ b/drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td043mtea1.c
4208 @@ -173,7 +173,7 @@ static ssize_t tpo_td043_vmirror_show(struct device *dev,
4209 {
4210 struct panel_drv_data *ddata = dev_get_drvdata(dev);
4211
4212 - return snprintf(buf, PAGE_SIZE, "%d\n", ddata->vmirror);
4213 + return sysfs_emit(buf, "%d\n", ddata->vmirror);
4214 }
4215
4216 static ssize_t tpo_td043_vmirror_store(struct device *dev,
4217 @@ -203,7 +203,7 @@ static ssize_t tpo_td043_mode_show(struct device *dev,
4218 {
4219 struct panel_drv_data *ddata = dev_get_drvdata(dev);
4220
4221 - return snprintf(buf, PAGE_SIZE, "%d\n", ddata->mode);
4222 + return sysfs_emit(buf, "%d\n", ddata->mode);
4223 }
4224
4225 static ssize_t tpo_td043_mode_store(struct device *dev,
4226 diff --git a/drivers/video/fbdev/sm712fb.c b/drivers/video/fbdev/sm712fb.c
4227 index 17efcdd4dc99b..620f3152213ae 100644
4228 --- a/drivers/video/fbdev/sm712fb.c
4229 +++ b/drivers/video/fbdev/sm712fb.c
4230 @@ -1046,7 +1046,7 @@ static ssize_t smtcfb_read(struct fb_info *info, char __user *buf,
4231 if (count + p > total_size)
4232 count = total_size - p;
4233
4234 - buffer = kmalloc((count > PAGE_SIZE) ? PAGE_SIZE : count, GFP_KERNEL);
4235 + buffer = kmalloc(PAGE_SIZE, GFP_KERNEL);
4236 if (!buffer)
4237 return -ENOMEM;
4238
4239 @@ -1058,25 +1058,14 @@ static ssize_t smtcfb_read(struct fb_info *info, char __user *buf,
4240 while (count) {
4241 c = (count > PAGE_SIZE) ? PAGE_SIZE : count;
4242 dst = buffer;
4243 - for (i = c >> 2; i--;) {
4244 - *dst = fb_readl(src++);
4245 - *dst = big_swap(*dst);
4246 + for (i = (c + 3) >> 2; i--;) {
4247 + u32 val;
4248 +
4249 + val = fb_readl(src);
4250 + *dst = big_swap(val);
4251 + src++;
4252 dst++;
4253 }
4254 - if (c & 3) {
4255 - u8 *dst8 = (u8 *)dst;
4256 - u8 __iomem *src8 = (u8 __iomem *)src;
4257 -
4258 - for (i = c & 3; i--;) {
4259 - if (i & 1) {
4260 - *dst8++ = fb_readb(++src8);
4261 - } else {
4262 - *dst8++ = fb_readb(--src8);
4263 - src8 += 2;
4264 - }
4265 - }
4266 - src = (u32 __iomem *)src8;
4267 - }
4268
4269 if (copy_to_user(buf, buffer, c)) {
4270 err = -EFAULT;
4271 @@ -1129,7 +1118,7 @@ static ssize_t smtcfb_write(struct fb_info *info, const char __user *buf,
4272 count = total_size - p;
4273 }
4274
4275 - buffer = kmalloc((count > PAGE_SIZE) ? PAGE_SIZE : count, GFP_KERNEL);
4276 + buffer = kmalloc(PAGE_SIZE, GFP_KERNEL);
4277 if (!buffer)
4278 return -ENOMEM;
4279
4280 @@ -1147,24 +1136,11 @@ static ssize_t smtcfb_write(struct fb_info *info, const char __user *buf,
4281 break;
4282 }
4283
4284 - for (i = c >> 2; i--;) {
4285 - fb_writel(big_swap(*src), dst++);
4286 + for (i = (c + 3) >> 2; i--;) {
4287 + fb_writel(big_swap(*src), dst);
4288 + dst++;
4289 src++;
4290 }
4291 - if (c & 3) {
4292 - u8 *src8 = (u8 *)src;
4293 - u8 __iomem *dst8 = (u8 __iomem *)dst;
4294 -
4295 - for (i = c & 3; i--;) {
4296 - if (i & 1) {
4297 - fb_writeb(*src8++, ++dst8);
4298 - } else {
4299 - fb_writeb(*src8++, --dst8);
4300 - dst8 += 2;
4301 - }
4302 - }
4303 - dst = (u32 __iomem *)dst8;
4304 - }
4305
4306 *ppos += c;
4307 buf += c;
4308 diff --git a/drivers/video/fbdev/smscufx.c b/drivers/video/fbdev/smscufx.c
4309 index ec2e7e3536859..aa387c5188e76 100644
4310 --- a/drivers/video/fbdev/smscufx.c
4311 +++ b/drivers/video/fbdev/smscufx.c
4312 @@ -1671,6 +1671,7 @@ static int ufx_usb_probe(struct usb_interface *interface,
4313 info->par = dev;
4314 info->pseudo_palette = dev->pseudo_palette;
4315 info->fbops = &ufx_ops;
4316 + INIT_LIST_HEAD(&info->modelist);
4317
4318 retval = fb_alloc_cmap(&info->cmap, 256, 0);
4319 if (retval < 0) {
4320 @@ -1681,8 +1682,6 @@ static int ufx_usb_probe(struct usb_interface *interface,
4321 INIT_DELAYED_WORK(&dev->free_framebuffer_work,
4322 ufx_free_framebuffer_work);
4323
4324 - INIT_LIST_HEAD(&info->modelist);
4325 -
4326 retval = ufx_reg_read(dev, 0x3000, &id_rev);
4327 check_warn_goto_error(retval, "error %d reading 0x3000 register from device", retval);
4328 dev_dbg(dev->gdev, "ID_REV register value 0x%08x", id_rev);
4329 diff --git a/drivers/video/fbdev/w100fb.c b/drivers/video/fbdev/w100fb.c
4330 index 7bd4c27cfb149..b3b17b6adb7ed 100644
4331 --- a/drivers/video/fbdev/w100fb.c
4332 +++ b/drivers/video/fbdev/w100fb.c
4333 @@ -772,12 +772,18 @@ out:
4334 fb_dealloc_cmap(&info->cmap);
4335 kfree(info->pseudo_palette);
4336 }
4337 - if (remapped_fbuf != NULL)
4338 + if (remapped_fbuf != NULL) {
4339 iounmap(remapped_fbuf);
4340 - if (remapped_regs != NULL)
4341 + remapped_fbuf = NULL;
4342 + }
4343 + if (remapped_regs != NULL) {
4344 iounmap(remapped_regs);
4345 - if (remapped_base != NULL)
4346 + remapped_regs = NULL;
4347 + }
4348 + if (remapped_base != NULL) {
4349 iounmap(remapped_base);
4350 + remapped_base = NULL;
4351 + }
4352 if (info)
4353 framebuffer_release(info);
4354 return err;
4355 @@ -802,8 +808,11 @@ static int w100fb_remove(struct platform_device *pdev)
4356 fb_dealloc_cmap(&info->cmap);
4357
4358 iounmap(remapped_base);
4359 + remapped_base = NULL;
4360 iounmap(remapped_regs);
4361 + remapped_regs = NULL;
4362 iounmap(remapped_fbuf);
4363 + remapped_fbuf = NULL;
4364
4365 framebuffer_release(info);
4366
4367 diff --git a/drivers/w1/slaves/w1_therm.c b/drivers/w1/slaves/w1_therm.c
4368 index 82611f197b0a0..7d0e09867bc73 100644
4369 --- a/drivers/w1/slaves/w1_therm.c
4370 +++ b/drivers/w1/slaves/w1_therm.c
4371 @@ -589,16 +589,20 @@ static ssize_t w1_seq_show(struct device *device,
4372 if (sl->reg_num.id == reg_num->id)
4373 seq = i;
4374
4375 + if (w1_reset_bus(sl->master))
4376 + goto error;
4377 +
4378 + /* Put the device into chain DONE state */
4379 + w1_write_8(sl->master, W1_MATCH_ROM);
4380 + w1_write_block(sl->master, (u8 *)&rn, 8);
4381 w1_write_8(sl->master, W1_42_CHAIN);
4382 w1_write_8(sl->master, W1_42_CHAIN_DONE);
4383 w1_write_8(sl->master, W1_42_CHAIN_DONE_INV);
4384 - w1_read_block(sl->master, &ack, sizeof(ack));
4385
4386 /* check for acknowledgment */
4387 ack = w1_read_8(sl->master);
4388 if (ack != W1_42_SUCCESS_CONFIRM_BYTE)
4389 goto error;
4390 -
4391 }
4392
4393 /* Exit from CHAIN state */
4394 diff --git a/fs/cifs/link.c b/fs/cifs/link.c
4395 index 38d26cbcad070..0c49e2aa7ea49 100644
4396 --- a/fs/cifs/link.c
4397 +++ b/fs/cifs/link.c
4398 @@ -119,6 +119,9 @@ parse_mf_symlink(const u8 *buf, unsigned int buf_len, unsigned int *_link_len,
4399 if (rc != 1)
4400 return -EINVAL;
4401
4402 + if (link_len > CIFS_MF_SYMLINK_LINK_MAXLEN)
4403 + return -EINVAL;
4404 +
4405 rc = symlink_hash(link_len, link_str, md5_hash);
4406 if (rc) {
4407 cifs_dbg(FYI, "%s: MD5 hash failure: %d\n", __func__, rc);
4408 diff --git a/fs/ext2/super.c b/fs/ext2/super.c
4409 index 186912c9bf565..5ca1f73958b0d 100644
4410 --- a/fs/ext2/super.c
4411 +++ b/fs/ext2/super.c
4412 @@ -743,8 +743,12 @@ static loff_t ext2_max_size(int bits)
4413 res += 1LL << (bits-2);
4414 res += 1LL << (2*(bits-2));
4415 res += 1LL << (3*(bits-2));
4416 + /* Compute how many metadata blocks are needed */
4417 + meta_blocks = 1;
4418 + meta_blocks += 1 + ppb;
4419 + meta_blocks += 1 + ppb + ppb * ppb;
4420 /* Does block tree limit file size? */
4421 - if (res < upper_limit)
4422 + if (res + meta_blocks <= upper_limit)
4423 goto check_lfs;
4424
4425 res = upper_limit;
4426 diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
4427 index 79c067f74253e..e66aa8918dee2 100644
4428 --- a/fs/ext4/inode.c
4429 +++ b/fs/ext4/inode.c
4430 @@ -2048,6 +2048,15 @@ static int ext4_writepage(struct page *page,
4431 else
4432 len = PAGE_SIZE;
4433
4434 + /* Should never happen but for bugs in other kernel subsystems */
4435 + if (!page_has_buffers(page)) {
4436 + ext4_warning_inode(inode,
4437 + "page %lu does not have buffers attached", page->index);
4438 + ClearPageDirty(page);
4439 + unlock_page(page);
4440 + return 0;
4441 + }
4442 +
4443 page_bufs = page_buffers(page);
4444 /*
4445 * We cannot do block allocation or other extent handling in this
4446 @@ -2608,6 +2617,22 @@ static int mpage_prepare_extent_to_map(struct mpage_da_data *mpd)
4447 wait_on_page_writeback(page);
4448 BUG_ON(PageWriteback(page));
4449
4450 + /*
4451 + * Should never happen but for buggy code in
4452 + * other subsystems that call
4453 + * set_page_dirty() without properly warning
4454 + * the file system first. See [1] for more
4455 + * information.
4456 + *
4457 + * [1] https://lore.kernel.org/linux-mm/20180103100430.GE4911@quack2.suse.cz
4458 + */
4459 + if (!page_has_buffers(page)) {
4460 + ext4_warning_inode(mpd->inode, "page %lu does not have buffers attached", page->index);
4461 + ClearPageDirty(page);
4462 + unlock_page(page);
4463 + continue;
4464 + }
4465 +
4466 if (mpd->map.m_len == 0)
4467 mpd->first_page = page->index;
4468 mpd->next_page = page->index + 1;
4469 diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
4470 index 56a94535c246f..a4182b150bb07 100644
4471 --- a/fs/gfs2/rgrp.c
4472 +++ b/fs/gfs2/rgrp.c
4473 @@ -1390,7 +1390,8 @@ int gfs2_fitrim(struct file *filp, void __user *argp)
4474
4475 start = r.start >> bs_shift;
4476 end = start + (r.len >> bs_shift);
4477 - minlen = max_t(u64, r.minlen,
4478 + minlen = max_t(u64, r.minlen, sdp->sd_sb.sb_bsize);
4479 + minlen = max_t(u64, minlen,
4480 q->limits.discard_granularity) >> bs_shift;
4481
4482 if (end <= start || minlen > sdp->sd_max_rg_data)
4483 diff --git a/fs/jffs2/build.c b/fs/jffs2/build.c
4484 index b288c8ae1236b..837cd55fd4c5e 100644
4485 --- a/fs/jffs2/build.c
4486 +++ b/fs/jffs2/build.c
4487 @@ -415,13 +415,15 @@ int jffs2_do_mount_fs(struct jffs2_sb_info *c)
4488 jffs2_free_ino_caches(c);
4489 jffs2_free_raw_node_refs(c);
4490 ret = -EIO;
4491 - goto out_free;
4492 + goto out_sum_exit;
4493 }
4494
4495 jffs2_calc_trigger_levels(c);
4496
4497 return 0;
4498
4499 + out_sum_exit:
4500 + jffs2_sum_exit(c);
4501 out_free:
4502 kvfree(c->blocks);
4503
4504 diff --git a/fs/jffs2/fs.c b/fs/jffs2/fs.c
4505 index c9c47d03a690c..d3c9e4c82e57c 100644
4506 --- a/fs/jffs2/fs.c
4507 +++ b/fs/jffs2/fs.c
4508 @@ -596,8 +596,8 @@ out_root:
4509 jffs2_free_ino_caches(c);
4510 jffs2_free_raw_node_refs(c);
4511 kvfree(c->blocks);
4512 - out_inohash:
4513 jffs2_clear_xattr_subsystem(c);
4514 + out_inohash:
4515 kfree(c->inocache_list);
4516 out_wbuf:
4517 jffs2_flash_cleanup(c);
4518 diff --git a/fs/jffs2/scan.c b/fs/jffs2/scan.c
4519 index 08813789fcf06..664384dac6e58 100644
4520 --- a/fs/jffs2/scan.c
4521 +++ b/fs/jffs2/scan.c
4522 @@ -136,7 +136,7 @@ int jffs2_scan_medium(struct jffs2_sb_info *c)
4523 if (!s) {
4524 JFFS2_WARNING("Can't allocate memory for summary\n");
4525 ret = -ENOMEM;
4526 - goto out;
4527 + goto out_buf;
4528 }
4529 }
4530
4531 @@ -274,13 +274,15 @@ int jffs2_scan_medium(struct jffs2_sb_info *c)
4532 }
4533 ret = 0;
4534 out:
4535 + jffs2_sum_reset_collected(s);
4536 + kfree(s);
4537 + out_buf:
4538 if (buf_size)
4539 kfree(flashbuf);
4540 #ifndef __ECOS
4541 else
4542 mtd_unpoint(c->mtd, 0, c->mtd->size);
4543 #endif
4544 - kfree(s);
4545 return ret;
4546 }
4547
4548 diff --git a/fs/jfs/inode.c b/fs/jfs/inode.c
4549 index 87b41edc800d0..68779cc3609a6 100644
4550 --- a/fs/jfs/inode.c
4551 +++ b/fs/jfs/inode.c
4552 @@ -156,12 +156,13 @@ void jfs_evict_inode(struct inode *inode)
4553 dquot_initialize(inode);
4554
4555 if (JFS_IP(inode)->fileset == FILESYSTEM_I) {
4556 + struct inode *ipimap = JFS_SBI(inode->i_sb)->ipimap;
4557 truncate_inode_pages_final(&inode->i_data);
4558
4559 if (test_cflag(COMMIT_Freewmap, inode))
4560 jfs_free_zero_link(inode);
4561
4562 - if (JFS_SBI(inode->i_sb)->ipimap)
4563 + if (ipimap && JFS_IP(ipimap)->i_imap)
4564 diFree(inode);
4565
4566 /*
4567 diff --git a/fs/jfs/jfs_dmap.c b/fs/jfs/jfs_dmap.c
4568 index 9ff510a489cb1..6dac48e29d282 100644
4569 --- a/fs/jfs/jfs_dmap.c
4570 +++ b/fs/jfs/jfs_dmap.c
4571 @@ -161,6 +161,7 @@ static const s8 budtab[256] = {
4572 * 0 - success
4573 * -ENOMEM - insufficient memory
4574 * -EIO - i/o error
4575 + * -EINVAL - wrong bmap data
4576 */
4577 int dbMount(struct inode *ipbmap)
4578 {
4579 @@ -192,6 +193,12 @@ int dbMount(struct inode *ipbmap)
4580 bmp->db_nfree = le64_to_cpu(dbmp_le->dn_nfree);
4581 bmp->db_l2nbperpage = le32_to_cpu(dbmp_le->dn_l2nbperpage);
4582 bmp->db_numag = le32_to_cpu(dbmp_le->dn_numag);
4583 + if (!bmp->db_numag) {
4584 + release_metapage(mp);
4585 + kfree(bmp);
4586 + return -EINVAL;
4587 + }
4588 +
4589 bmp->db_maxlevel = le32_to_cpu(dbmp_le->dn_maxlevel);
4590 bmp->db_maxag = le32_to_cpu(dbmp_le->dn_maxag);
4591 bmp->db_agpref = le32_to_cpu(dbmp_le->dn_agpref);
4592 diff --git a/fs/nfs/callback_xdr.c b/fs/nfs/callback_xdr.c
4593 index 67903eeb2ca47..00e58a42e6372 100644
4594 --- a/fs/nfs/callback_xdr.c
4595 +++ b/fs/nfs/callback_xdr.c
4596 @@ -319,10 +319,6 @@ __be32 decode_devicenotify_args(struct svc_rqst *rqstp,
4597 n = ntohl(*p++);
4598 if (n <= 0)
4599 goto out;
4600 - if (n > ULONG_MAX / sizeof(*args->devs)) {
4601 - status = htonl(NFS4ERR_BADXDR);
4602 - goto out;
4603 - }
4604
4605 args->devs = kmalloc_array(n, sizeof(*args->devs), GFP_KERNEL);
4606 if (!args->devs) {
4607 diff --git a/fs/nfsd/nfsproc.c b/fs/nfsd/nfsproc.c
4608 index 536009e503871..fd5bb6f7f5f77 100644
4609 --- a/fs/nfsd/nfsproc.c
4610 +++ b/fs/nfsd/nfsproc.c
4611 @@ -207,7 +207,7 @@ nfsd_proc_write(struct svc_rqst *rqstp, struct nfsd_writeargs *argp,
4612 int stable = 1;
4613 unsigned long cnt = argp->len;
4614
4615 - dprintk("nfsd: WRITE %s %d bytes at %d\n",
4616 + dprintk("nfsd: WRITE %s %u bytes at %d\n",
4617 SVCFH_fmt(&argp->fh),
4618 argp->len, argp->offset);
4619
4620 diff --git a/fs/nfsd/xdr.h b/fs/nfsd/xdr.h
4621 index 4f0481d638048..8c78b56a93502 100644
4622 --- a/fs/nfsd/xdr.h
4623 +++ b/fs/nfsd/xdr.h
4624 @@ -32,7 +32,7 @@ struct nfsd_readargs {
4625 struct nfsd_writeargs {
4626 svc_fh fh;
4627 __u32 offset;
4628 - int len;
4629 + __u32 len;
4630 int vlen;
4631 };
4632
4633 diff --git a/fs/ntfs/inode.c b/fs/ntfs/inode.c
4634 index 8cd134750ebb0..4150b3633f779 100644
4635 --- a/fs/ntfs/inode.c
4636 +++ b/fs/ntfs/inode.c
4637 @@ -1915,6 +1915,10 @@ int ntfs_read_inode_mount(struct inode *vi)
4638 }
4639 /* Now allocate memory for the attribute list. */
4640 ni->attr_list_size = (u32)ntfs_attr_size(a);
4641 + if (!ni->attr_list_size) {
4642 + ntfs_error(sb, "Attr_list_size is zero");
4643 + goto put_err_out;
4644 + }
4645 ni->attr_list = ntfs_malloc_nofs(ni->attr_list_size);
4646 if (!ni->attr_list) {
4647 ntfs_error(sb, "Not enough memory to allocate buffer "
4648 diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c
4649 index 56eed54633cf2..89cebe1807d2b 100644
4650 --- a/fs/ubifs/dir.c
4651 +++ b/fs/ubifs/dir.c
4652 @@ -376,6 +376,8 @@ out_inode:
4653 make_bad_inode(inode);
4654 if (!instantiated)
4655 iput(inode);
4656 + else if (whiteout)
4657 + iput(*whiteout);
4658 out_budg:
4659 ubifs_release_budget(c, &req);
4660 if (!instantiated)
4661 diff --git a/fs/ubifs/ioctl.c b/fs/ubifs/ioctl.c
4662 index 3c7b29de0ca73..b5320eedec3b1 100644
4663 --- a/fs/ubifs/ioctl.c
4664 +++ b/fs/ubifs/ioctl.c
4665 @@ -105,7 +105,7 @@ static int setflags(struct inode *inode, int flags)
4666 struct ubifs_inode *ui = ubifs_inode(inode);
4667 struct ubifs_info *c = inode->i_sb->s_fs_info;
4668 struct ubifs_budget_req req = { .dirtied_ino = 1,
4669 - .dirtied_ino_d = ui->data_len };
4670 + .dirtied_ino_d = ALIGN(ui->data_len, 8) };
4671
4672 err = ubifs_budget_space(c, &req);
4673 if (err)
4674 diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
4675 index 848aab6c69823..8050724065524 100644
4676 --- a/include/linux/blkdev.h
4677 +++ b/include/linux/blkdev.h
4678 @@ -49,6 +49,14 @@ struct pr_ops;
4679
4680 typedef void (rq_end_io_fn)(struct request *, int);
4681
4682 +static inline int blk_validate_block_size(unsigned int bsize)
4683 +{
4684 + if (bsize < 512 || bsize > PAGE_SIZE || !is_power_of_2(bsize))
4685 + return -EINVAL;
4686 +
4687 + return 0;
4688 +}
4689 +
4690 #define BLK_RL_SYNCFULL (1U << 0)
4691 #define BLK_RL_ASYNCFULL (1U << 1)
4692
4693 diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
4694 index a92fb5c5704f2..714d86dedbc2b 100644
4695 --- a/include/linux/netdevice.h
4696 +++ b/include/linux/netdevice.h
4697 @@ -3410,7 +3410,8 @@ void netdev_run_todo(void);
4698 */
4699 static inline void dev_put(struct net_device *dev)
4700 {
4701 - this_cpu_dec(*dev->pcpu_refcnt);
4702 + if (dev)
4703 + this_cpu_dec(*dev->pcpu_refcnt);
4704 }
4705
4706 /**
4707 @@ -3421,7 +3422,8 @@ static inline void dev_put(struct net_device *dev)
4708 */
4709 static inline void dev_hold(struct net_device *dev)
4710 {
4711 - this_cpu_inc(*dev->pcpu_refcnt);
4712 + if (dev)
4713 + this_cpu_inc(*dev->pcpu_refcnt);
4714 }
4715
4716 /* Carrier loss detection, dial on demand. The functions netif_carrier_on
4717 diff --git a/include/net/xfrm.h b/include/net/xfrm.h
4718 index b2a405c93a342..7415a98769872 100644
4719 --- a/include/net/xfrm.h
4720 +++ b/include/net/xfrm.h
4721 @@ -1595,13 +1595,16 @@ int xfrm_policy_walk(struct net *net, struct xfrm_policy_walk *walk,
4722 void *);
4723 void xfrm_policy_walk_done(struct xfrm_policy_walk *walk, struct net *net);
4724 int xfrm_policy_insert(int dir, struct xfrm_policy *policy, int excl);
4725 -struct xfrm_policy *xfrm_policy_bysel_ctx(struct net *net, u32 mark,
4726 +struct xfrm_policy *xfrm_policy_bysel_ctx(struct net *net,
4727 + const struct xfrm_mark *mark,
4728 u8 type, int dir,
4729 struct xfrm_selector *sel,
4730 struct xfrm_sec_ctx *ctx, int delete,
4731 int *err);
4732 -struct xfrm_policy *xfrm_policy_byid(struct net *net, u32 mark, u8, int dir,
4733 - u32 id, int delete, int *err);
4734 +struct xfrm_policy *xfrm_policy_byid(struct net *net,
4735 + const struct xfrm_mark *mark,
4736 + u8 type, int dir, u32 id, int delete,
4737 + int *err);
4738 int xfrm_policy_flush(struct net *net, u8 type, bool task_valid);
4739 void xfrm_policy_hash_rebuild(struct net *net);
4740 u32 xfrm_get_acqseq(void);
4741 diff --git a/init/main.c b/init/main.c
4742 index 9e057314a15f3..0c01d4e10d2f3 100644
4743 --- a/init/main.c
4744 +++ b/init/main.c
4745 @@ -705,7 +705,7 @@ static int __init initcall_blacklist(char *str)
4746 }
4747 } while (str_entry);
4748
4749 - return 0;
4750 + return 1;
4751 }
4752
4753 static bool __init_or_module initcall_blacklisted(initcall_t fn)
4754 @@ -921,7 +921,9 @@ static noinline void __init kernel_init_freeable(void);
4755 bool rodata_enabled __ro_after_init = true;
4756 static int __init set_debug_rodata(char *str)
4757 {
4758 - return strtobool(str, &rodata_enabled);
4759 + if (strtobool(str, &rodata_enabled))
4760 + pr_warn("Invalid option string for rodata: '%s'\n", str);
4761 + return 1;
4762 }
4763 __setup("rodata=", set_debug_rodata);
4764 #endif
4765 diff --git a/kernel/events/core.c b/kernel/events/core.c
4766 index e56a74fd5c814..396abd52962b8 100644
4767 --- a/kernel/events/core.c
4768 +++ b/kernel/events/core.c
4769 @@ -8306,8 +8306,11 @@ perf_event_parse_addr_filter(struct perf_event *event, char *fstr,
4770 }
4771
4772 /* ready to consume more filters */
4773 + kfree(filename);
4774 + filename = NULL;
4775 state = IF_STATE_ACTION;
4776 filter = NULL;
4777 + kernel = 0;
4778 }
4779 }
4780
4781 diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c
4782 index e938fd8db056b..c17b953f1294b 100644
4783 --- a/kernel/power/hibernate.c
4784 +++ b/kernel/power/hibernate.c
4785 @@ -1185,7 +1185,7 @@ static int __init resumedelay_setup(char *str)
4786 int rc = kstrtouint(str, 0, &resume_delay);
4787
4788 if (rc)
4789 - return rc;
4790 + pr_warn("resumedelay: bad option string '%s'\n", str);
4791 return 1;
4792 }
4793
4794 diff --git a/kernel/power/suspend_test.c b/kernel/power/suspend_test.c
4795 index bdff5ed57f10a..5476bd8921832 100644
4796 --- a/kernel/power/suspend_test.c
4797 +++ b/kernel/power/suspend_test.c
4798 @@ -158,22 +158,22 @@ static int __init setup_test_suspend(char *value)
4799 value++;
4800 suspend_type = strsep(&value, ",");
4801 if (!suspend_type)
4802 - return 0;
4803 + return 1;
4804
4805 repeat = strsep(&value, ",");
4806 if (repeat) {
4807 if (kstrtou32(repeat, 0, &test_repeat_count_max))
4808 - return 0;
4809 + return 1;
4810 }
4811
4812 for (i = 0; pm_labels[i]; i++)
4813 if (!strcmp(pm_labels[i], suspend_type)) {
4814 test_state_label = pm_labels[i];
4815 - return 0;
4816 + return 1;
4817 }
4818
4819 printk(warn_bad_state, suspend_type);
4820 - return 0;
4821 + return 1;
4822 }
4823 __setup("test_suspend", setup_test_suspend);
4824
4825 diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
4826 index 9c17a26555512..f1f115b3ee018 100644
4827 --- a/kernel/printk/printk.c
4828 +++ b/kernel/printk/printk.c
4829 @@ -122,8 +122,10 @@ static int __control_devkmsg(char *str)
4830
4831 static int __init control_devkmsg(char *str)
4832 {
4833 - if (__control_devkmsg(str) < 0)
4834 + if (__control_devkmsg(str) < 0) {
4835 + pr_warn("printk.devkmsg: bad option string '%s'\n", str);
4836 return 1;
4837 + }
4838
4839 /*
4840 * Set sysctl string accordingly:
4841 @@ -145,7 +147,7 @@ static int __init control_devkmsg(char *str)
4842 */
4843 devkmsg_log |= DEVKMSG_LOG_MASK_LOCK;
4844
4845 - return 0;
4846 + return 1;
4847 }
4848 __setup("printk.devkmsg=", control_devkmsg);
4849
4850 diff --git a/kernel/ptrace.c b/kernel/ptrace.c
4851 index 4f10223bc7b0f..2b59212ddcc6e 100644
4852 --- a/kernel/ptrace.c
4853 +++ b/kernel/ptrace.c
4854 @@ -371,6 +371,26 @@ bool ptrace_may_access(struct task_struct *task, unsigned int mode)
4855 return !err;
4856 }
4857
4858 +static int check_ptrace_options(unsigned long data)
4859 +{
4860 + if (data & ~(unsigned long)PTRACE_O_MASK)
4861 + return -EINVAL;
4862 +
4863 + if (unlikely(data & PTRACE_O_SUSPEND_SECCOMP)) {
4864 + if (!IS_ENABLED(CONFIG_CHECKPOINT_RESTORE) ||
4865 + !IS_ENABLED(CONFIG_SECCOMP))
4866 + return -EINVAL;
4867 +
4868 + if (!capable(CAP_SYS_ADMIN))
4869 + return -EPERM;
4870 +
4871 + if (seccomp_mode(&current->seccomp) != SECCOMP_MODE_DISABLED ||
4872 + current->ptrace & PT_SUSPEND_SECCOMP)
4873 + return -EPERM;
4874 + }
4875 + return 0;
4876 +}
4877 +
4878 static int ptrace_attach(struct task_struct *task, long request,
4879 unsigned long addr,
4880 unsigned long flags)
4881 @@ -382,8 +402,16 @@ static int ptrace_attach(struct task_struct *task, long request,
4882 if (seize) {
4883 if (addr != 0)
4884 goto out;
4885 + /*
4886 + * This duplicates the check in check_ptrace_options() because
4887 + * ptrace_attach() and ptrace_setoptions() have historically
4888 + * used different error codes for unknown ptrace options.
4889 + */
4890 if (flags & ~(unsigned long)PTRACE_O_MASK)
4891 goto out;
4892 + retval = check_ptrace_options(flags);
4893 + if (retval)
4894 + return retval;
4895 flags = PT_PTRACED | PT_SEIZED | (flags << PT_OPT_FLAG_SHIFT);
4896 } else {
4897 flags = PT_PTRACED;
4898 @@ -656,22 +684,11 @@ int ptrace_writedata(struct task_struct *tsk, char __user *src, unsigned long ds
4899 static int ptrace_setoptions(struct task_struct *child, unsigned long data)
4900 {
4901 unsigned flags;
4902 + int ret;
4903
4904 - if (data & ~(unsigned long)PTRACE_O_MASK)
4905 - return -EINVAL;
4906 -
4907 - if (unlikely(data & PTRACE_O_SUSPEND_SECCOMP)) {
4908 - if (!IS_ENABLED(CONFIG_CHECKPOINT_RESTORE) ||
4909 - !IS_ENABLED(CONFIG_SECCOMP))
4910 - return -EINVAL;
4911 -
4912 - if (!capable(CAP_SYS_ADMIN))
4913 - return -EPERM;
4914 -
4915 - if (seccomp_mode(&current->seccomp) != SECCOMP_MODE_DISABLED ||
4916 - current->ptrace & PT_SUSPEND_SECCOMP)
4917 - return -EPERM;
4918 - }
4919 + ret = check_ptrace_options(data);
4920 + if (ret)
4921 + return ret;
4922
4923 /* Avoid intermediate state when all opts are cleared */
4924 flags = child->ptrace;
4925 diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c
4926 index fa178b62ea79b..69c3252d151ba 100644
4927 --- a/kernel/sched/debug.c
4928 +++ b/kernel/sched/debug.c
4929 @@ -836,25 +836,15 @@ void print_numa_stats(struct seq_file *m, int node, unsigned long tsf,
4930 static void sched_show_numa(struct task_struct *p, struct seq_file *m)
4931 {
4932 #ifdef CONFIG_NUMA_BALANCING
4933 - struct mempolicy *pol;
4934 -
4935 if (p->mm)
4936 P(mm->numa_scan_seq);
4937
4938 - task_lock(p);
4939 - pol = p->mempolicy;
4940 - if (pol && !(pol->flags & MPOL_F_MORON))
4941 - pol = NULL;
4942 - mpol_get(pol);
4943 - task_unlock(p);
4944 -
4945 P(numa_pages_migrated);
4946 P(numa_preferred_nid);
4947 P(total_numa_faults);
4948 SEQ_printf(m, "current_node=%d, numa_group_id=%d\n",
4949 task_node(p), task_numa_group_id(p));
4950 show_numa_stats(p, m);
4951 - mpol_put(pol);
4952 #endif
4953 }
4954
4955 diff --git a/kernel/smp.c b/kernel/smp.c
4956 index 399905fdfa3f8..df9d5a64b0aad 100644
4957 --- a/kernel/smp.c
4958 +++ b/kernel/smp.c
4959 @@ -209,7 +209,7 @@ static void flush_smp_call_function_queue(bool warn_cpu_offline)
4960
4961 /* There shouldn't be any pending callbacks on an offline CPU. */
4962 if (unlikely(warn_cpu_offline && !cpu_online(smp_processor_id()) &&
4963 - !warned && !llist_empty(head))) {
4964 + !warned && entry != NULL)) {
4965 warned = true;
4966 WARN(1, "IPI on offline CPU %d\n", smp_processor_id());
4967
4968 diff --git a/lib/raid6/test/test.c b/lib/raid6/test/test.c
4969 index b07f4d8e6b033..a7e9372482996 100644
4970 --- a/lib/raid6/test/test.c
4971 +++ b/lib/raid6/test/test.c
4972 @@ -22,7 +22,6 @@
4973 #define NDISKS 16 /* Including P and Q */
4974
4975 const char raid6_empty_zero_page[PAGE_SIZE] __attribute__((aligned(PAGE_SIZE)));
4976 -struct raid6_calls raid6_call;
4977
4978 char *dataptrs[NDISKS];
4979 char data[NDISKS][PAGE_SIZE] __attribute__((aligned(PAGE_SIZE)));
4980 diff --git a/mm/kmemleak.c b/mm/kmemleak.c
4981 index 59bb2b9ec0e2e..c1360b2509194 100644
4982 --- a/mm/kmemleak.c
4983 +++ b/mm/kmemleak.c
4984 @@ -1130,7 +1130,7 @@ EXPORT_SYMBOL(kmemleak_no_scan);
4985 void __ref kmemleak_alloc_phys(phys_addr_t phys, size_t size, int min_count,
4986 gfp_t gfp)
4987 {
4988 - if (!IS_ENABLED(CONFIG_HIGHMEM) || PHYS_PFN(phys) < max_low_pfn)
4989 + if (PHYS_PFN(phys) >= min_low_pfn && PHYS_PFN(phys) < max_low_pfn)
4990 kmemleak_alloc(__va(phys), size, min_count, gfp);
4991 }
4992 EXPORT_SYMBOL(kmemleak_alloc_phys);
4993 @@ -1141,7 +1141,7 @@ EXPORT_SYMBOL(kmemleak_alloc_phys);
4994 */
4995 void __ref kmemleak_free_part_phys(phys_addr_t phys, size_t size)
4996 {
4997 - if (!IS_ENABLED(CONFIG_HIGHMEM) || PHYS_PFN(phys) < max_low_pfn)
4998 + if (PHYS_PFN(phys) >= min_low_pfn && PHYS_PFN(phys) < max_low_pfn)
4999 kmemleak_free_part(__va(phys), size);
5000 }
5001 EXPORT_SYMBOL(kmemleak_free_part_phys);
5002 @@ -1152,7 +1152,7 @@ EXPORT_SYMBOL(kmemleak_free_part_phys);
5003 */
5004 void __ref kmemleak_not_leak_phys(phys_addr_t phys)
5005 {
5006 - if (!IS_ENABLED(CONFIG_HIGHMEM) || PHYS_PFN(phys) < max_low_pfn)
5007 + if (PHYS_PFN(phys) >= min_low_pfn && PHYS_PFN(phys) < max_low_pfn)
5008 kmemleak_not_leak(__va(phys));
5009 }
5010 EXPORT_SYMBOL(kmemleak_not_leak_phys);
5011 @@ -1163,7 +1163,7 @@ EXPORT_SYMBOL(kmemleak_not_leak_phys);
5012 */
5013 void __ref kmemleak_ignore_phys(phys_addr_t phys)
5014 {
5015 - if (!IS_ENABLED(CONFIG_HIGHMEM) || PHYS_PFN(phys) < max_low_pfn)
5016 + if (PHYS_PFN(phys) >= min_low_pfn && PHYS_PFN(phys) < max_low_pfn)
5017 kmemleak_ignore(__va(phys));
5018 }
5019 EXPORT_SYMBOL(kmemleak_ignore_phys);
5020 diff --git a/mm/memcontrol.c b/mm/memcontrol.c
5021 index 27b0b4f03fcdc..955e8412b9f63 100644
5022 --- a/mm/memcontrol.c
5023 +++ b/mm/memcontrol.c
5024 @@ -5840,7 +5840,7 @@ static int __init cgroup_memory(char *s)
5025 if (!strcmp(token, "nokmem"))
5026 cgroup_memory_nokmem = true;
5027 }
5028 - return 0;
5029 + return 1;
5030 }
5031 __setup("cgroup.memory=", cgroup_memory);
5032
5033 diff --git a/mm/memory.c b/mm/memory.c
5034 index 2b2cc69ddccef..1b31cdce936e9 100644
5035 --- a/mm/memory.c
5036 +++ b/mm/memory.c
5037 @@ -1113,6 +1113,17 @@ int copy_page_range(struct mm_struct *dst_mm, struct mm_struct *src_mm,
5038 return ret;
5039 }
5040
5041 +/* Whether we should zap all COWed (private) pages too */
5042 +static inline bool should_zap_cows(struct zap_details *details)
5043 +{
5044 + /* By default, zap all pages */
5045 + if (!details)
5046 + return true;
5047 +
5048 + /* Or, we zap COWed pages only if the caller wants to */
5049 + return !details->check_mapping;
5050 +}
5051 +
5052 static unsigned long zap_pte_range(struct mmu_gather *tlb,
5053 struct vm_area_struct *vma, pmd_t *pmd,
5054 unsigned long addr, unsigned long end,
5055 @@ -1186,17 +1197,20 @@ again:
5056 }
5057 continue;
5058 }
5059 - /* only check swap_entries if explicitly asked for in details */
5060 - if (unlikely(details && !details->check_swap_entries))
5061 - continue;
5062
5063 entry = pte_to_swp_entry(ptent);
5064 - if (!non_swap_entry(entry))
5065 + if (!non_swap_entry(entry)) {
5066 + /* Genuine swap entry, hence a private anon page */
5067 + if (!should_zap_cows(details))
5068 + continue;
5069 rss[MM_SWAPENTS]--;
5070 - else if (is_migration_entry(entry)) {
5071 + } else if (is_migration_entry(entry)) {
5072 struct page *page;
5073
5074 page = migration_entry_to_page(entry);
5075 + if (details && details->check_mapping &&
5076 + details->check_mapping != page_rmapping(page))
5077 + continue;
5078 rss[mm_counter(page)]--;
5079 }
5080 if (unlikely(!free_swap_and_cache(entry)))
5081 diff --git a/mm/mempolicy.c b/mm/mempolicy.c
5082 index 2f443767fd1b4..6059f85546fe9 100644
5083 --- a/mm/mempolicy.c
5084 +++ b/mm/mempolicy.c
5085 @@ -734,7 +734,6 @@ static int vma_replace_policy(struct vm_area_struct *vma,
5086 static int mbind_range(struct mm_struct *mm, unsigned long start,
5087 unsigned long end, struct mempolicy *new_pol)
5088 {
5089 - struct vm_area_struct *next;
5090 struct vm_area_struct *prev;
5091 struct vm_area_struct *vma;
5092 int err = 0;
5093 @@ -750,8 +749,7 @@ static int mbind_range(struct mm_struct *mm, unsigned long start,
5094 if (start > vma->vm_start)
5095 prev = vma;
5096
5097 - for (; vma && vma->vm_start < end; prev = vma, vma = next) {
5098 - next = vma->vm_next;
5099 + for (; vma && vma->vm_start < end; prev = vma, vma = vma->vm_next) {
5100 vmstart = max(start, vma->vm_start);
5101 vmend = min(end, vma->vm_end);
5102
5103 @@ -765,10 +763,6 @@ static int mbind_range(struct mm_struct *mm, unsigned long start,
5104 new_pol, vma->vm_userfaultfd_ctx);
5105 if (prev) {
5106 vma = prev;
5107 - next = vma->vm_next;
5108 - if (mpol_equal(vma_policy(vma), new_pol))
5109 - continue;
5110 - /* vma_merge() joined vma && vma->next, case 8 */
5111 goto replace;
5112 }
5113 if (vma->vm_start != vmstart) {
5114 @@ -2505,6 +2499,7 @@ alloc_new:
5115 mpol_new = kmem_cache_alloc(policy_cache, GFP_KERNEL);
5116 if (!mpol_new)
5117 goto err_out;
5118 + atomic_set(&mpol_new->refcnt, 1);
5119 goto restart;
5120 }
5121
5122 diff --git a/mm/mmap.c b/mm/mmap.c
5123 index 7c8815636c482..18bd38ac15317 100644
5124 --- a/mm/mmap.c
5125 +++ b/mm/mmap.c
5126 @@ -2425,7 +2425,7 @@ static int __init cmdline_parse_stack_guard_gap(char *p)
5127 if (!*endptr)
5128 stack_guard_gap = val << PAGE_SHIFT;
5129
5130 - return 0;
5131 + return 1;
5132 }
5133 __setup("stack_guard_gap=", cmdline_parse_stack_guard_gap);
5134
5135 diff --git a/mm/mremap.c b/mm/mremap.c
5136 index b5d8d25173c61..058de6f8c9d54 100644
5137 --- a/mm/mremap.c
5138 +++ b/mm/mremap.c
5139 @@ -192,6 +192,9 @@ unsigned long move_page_tables(struct vm_area_struct *vma,
5140 unsigned long mmun_start; /* For mmu_notifiers */
5141 unsigned long mmun_end; /* For mmu_notifiers */
5142
5143 + if (!len)
5144 + return 0;
5145 +
5146 old_end = old_addr + len;
5147 flush_cache_range(vma, old_addr, old_end);
5148
5149 diff --git a/mm/page_alloc.c b/mm/page_alloc.c
5150 index babcbd8b94ea8..25c21aa398f8c 100644
5151 --- a/mm/page_alloc.c
5152 +++ b/mm/page_alloc.c
5153 @@ -4503,7 +4503,7 @@ static int build_zonelists_node(pg_data_t *pgdat, struct zonelist *zonelist,
5154 do {
5155 zone_type--;
5156 zone = pgdat->node_zones + zone_type;
5157 - if (managed_zone(zone)) {
5158 + if (populated_zone(zone)) {
5159 zoneref_set_zone(zone,
5160 &zonelist->_zonerefs[nr_zones++]);
5161 check_highest_zone(zone_type);
5162 @@ -6267,10 +6267,17 @@ restart:
5163
5164 out2:
5165 /* Align start of ZONE_MOVABLE on all nids to MAX_ORDER_NR_PAGES */
5166 - for (nid = 0; nid < MAX_NUMNODES; nid++)
5167 + for (nid = 0; nid < MAX_NUMNODES; nid++) {
5168 + unsigned long start_pfn, end_pfn;
5169 +
5170 zone_movable_pfn[nid] =
5171 roundup(zone_movable_pfn[nid], MAX_ORDER_NR_PAGES);
5172
5173 + get_pfn_range_for_nid(nid, &start_pfn, &end_pfn);
5174 + if (zone_movable_pfn[nid] >= end_pfn)
5175 + zone_movable_pfn[nid] = 0;
5176 + }
5177 +
5178 out:
5179 /* restore the node_state */
5180 node_states[N_MEMORY] = saved_node_state;
5181 diff --git a/mm/rmap.c b/mm/rmap.c
5182 index a7276d8c96f33..0a5310b76ec85 100644
5183 --- a/mm/rmap.c
5184 +++ b/mm/rmap.c
5185 @@ -1638,11 +1638,36 @@ static int try_to_unmap_one(struct page *page, struct vm_area_struct *vma,
5186 */
5187 VM_BUG_ON_PAGE(!PageSwapCache(page), page);
5188
5189 - if (!PageDirty(page) && (flags & TTU_LZFREE)) {
5190 - /* It's a freeable page by MADV_FREE */
5191 - dec_mm_counter(mm, MM_ANONPAGES);
5192 - rp->lazyfreed++;
5193 - goto discard;
5194 + if (flags & TTU_LZFREE) {
5195 + int ref_count, map_count;
5196 +
5197 + /*
5198 + * Synchronize with gup_pte_range():
5199 + * - clear PTE; barrier; read refcount
5200 + * - inc refcount; barrier; read PTE
5201 + */
5202 + smp_mb();
5203 +
5204 + ref_count = page_ref_count(page);
5205 + map_count = page_mapcount(page);
5206 +
5207 + /*
5208 + * Order reads for page refcount and dirty flag
5209 + * (see comments in __remove_mapping()).
5210 + */
5211 + smp_rmb();
5212 +
5213 + /*
5214 + * The only page refs must be one from isolation
5215 + * plus the rmap(s) (dropped by discard:).
5216 + */
5217 + if (ref_count == 1 + map_count &&
5218 + !PageDirty(page)) {
5219 + /* It's a freeable page by MADV_FREE */
5220 + dec_mm_counter(mm, MM_ANONPAGES);
5221 + rp->lazyfreed++;
5222 + goto discard;
5223 + }
5224 }
5225
5226 if (swap_duplicate(entry) < 0) {
5227 diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
5228 index cff87c465bcb0..8face15b42d86 100644
5229 --- a/net/bluetooth/hci_event.c
5230 +++ b/net/bluetooth/hci_event.c
5231 @@ -4470,8 +4470,9 @@ static void hci_disconn_phylink_complete_evt(struct hci_dev *hdev,
5232 hci_dev_lock(hdev);
5233
5234 hcon = hci_conn_hash_lookup_handle(hdev, ev->phy_handle);
5235 - if (hcon) {
5236 + if (hcon && hcon->type == AMP_LINK) {
5237 hcon->state = BT_CLOSED;
5238 + hci_disconn_cfm(hcon, ev->reason);
5239 hci_conn_del(hcon);
5240 }
5241
5242 diff --git a/net/key/af_key.c b/net/key/af_key.c
5243 index adc93329e6aac..c9cc9f75b0999 100644
5244 --- a/net/key/af_key.c
5245 +++ b/net/key/af_key.c
5246 @@ -1726,7 +1726,7 @@ static int pfkey_register(struct sock *sk, struct sk_buff *skb, const struct sad
5247
5248 xfrm_probe_algs();
5249
5250 - supp_skb = compose_sadb_supported(hdr, GFP_KERNEL);
5251 + supp_skb = compose_sadb_supported(hdr, GFP_KERNEL | __GFP_ZERO);
5252 if (!supp_skb) {
5253 if (hdr->sadb_msg_satype != SADB_SATYPE_UNSPEC)
5254 pfk->registered &= ~(1<<hdr->sadb_msg_satype);
5255 @@ -2434,7 +2434,7 @@ static int pfkey_spddelete(struct sock *sk, struct sk_buff *skb, const struct sa
5256 return err;
5257 }
5258
5259 - xp = xfrm_policy_bysel_ctx(net, DUMMY_MARK, XFRM_POLICY_TYPE_MAIN,
5260 + xp = xfrm_policy_bysel_ctx(net, &dummy_mark, XFRM_POLICY_TYPE_MAIN,
5261 pol->sadb_x_policy_dir - 1, &sel, pol_ctx,
5262 1, &err);
5263 security_xfrm_policy_free(pol_ctx);
5264 @@ -2687,7 +2687,7 @@ static int pfkey_spdget(struct sock *sk, struct sk_buff *skb, const struct sadb_
5265 return -EINVAL;
5266
5267 delete = (hdr->sadb_msg_type == SADB_X_SPDDELETE2);
5268 - xp = xfrm_policy_byid(net, DUMMY_MARK, XFRM_POLICY_TYPE_MAIN,
5269 + xp = xfrm_policy_byid(net, &dummy_mark, XFRM_POLICY_TYPE_MAIN,
5270 dir, pol->sadb_x_policy_id, delete, &err);
5271 if (xp == NULL)
5272 return -ENOENT;
5273 diff --git a/net/netfilter/nf_conntrack_proto_tcp.c b/net/netfilter/nf_conntrack_proto_tcp.c
5274 index 69f687740c76b..9e9ce570bb9ec 100644
5275 --- a/net/netfilter/nf_conntrack_proto_tcp.c
5276 +++ b/net/netfilter/nf_conntrack_proto_tcp.c
5277 @@ -390,8 +390,8 @@ static void tcp_options(const struct sk_buff *skb,
5278 length, buff);
5279 BUG_ON(ptr == NULL);
5280
5281 - state->td_scale =
5282 - state->flags = 0;
5283 + state->td_scale = 0;
5284 + state->flags &= IP_CT_TCP_FLAG_BE_LIBERAL;
5285
5286 while (length > 0) {
5287 int opcode=*ptr++;
5288 @@ -806,6 +806,16 @@ static unsigned int *tcp_get_timeouts(struct net *net)
5289 return tcp_pernet(net)->timeouts;
5290 }
5291
5292 +static void nf_ct_tcp_state_reset(struct ip_ct_tcp_state *state)
5293 +{
5294 + state->td_end = 0;
5295 + state->td_maxend = 0;
5296 + state->td_maxwin = 0;
5297 + state->td_maxack = 0;
5298 + state->td_scale = 0;
5299 + state->flags &= IP_CT_TCP_FLAG_BE_LIBERAL;
5300 +}
5301 +
5302 /* Returns verdict for packet, or -1 for invalid. */
5303 static int tcp_packet(struct nf_conn *ct,
5304 const struct sk_buff *skb,
5305 @@ -907,8 +917,7 @@ static int tcp_packet(struct nf_conn *ct,
5306 ct->proto.tcp.last_flags &= ~IP_CT_EXP_CHALLENGE_ACK;
5307 ct->proto.tcp.seen[ct->proto.tcp.last_dir].flags =
5308 ct->proto.tcp.last_flags;
5309 - memset(&ct->proto.tcp.seen[dir], 0,
5310 - sizeof(struct ip_ct_tcp_state));
5311 + nf_ct_tcp_state_reset(&ct->proto.tcp.seen[dir]);
5312 break;
5313 }
5314 ct->proto.tcp.last_index = index;
5315 diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
5316 index 13d69cbd14c20..8aef475fef310 100644
5317 --- a/net/netlink/af_netlink.c
5318 +++ b/net/netlink/af_netlink.c
5319 @@ -161,6 +161,8 @@ static const struct rhashtable_params netlink_rhashtable_params;
5320
5321 static inline u32 netlink_group_mask(u32 group)
5322 {
5323 + if (group > 32)
5324 + return 0;
5325 return group ? 1 << (group - 1) : 0;
5326 }
5327
5328 diff --git a/net/nfc/nci/core.c b/net/nfc/nci/core.c
5329 index 84eedbd5716d1..df90872fcf908 100644
5330 --- a/net/nfc/nci/core.c
5331 +++ b/net/nfc/nci/core.c
5332 @@ -561,6 +561,10 @@ static int nci_close_device(struct nci_dev *ndev)
5333 mutex_lock(&ndev->req_lock);
5334
5335 if (!test_and_clear_bit(NCI_UP, &ndev->flags)) {
5336 + /* Need to flush the cmd wq in case
5337 + * there is a queued/running cmd_work
5338 + */
5339 + flush_workqueue(ndev->cmd_wq);
5340 del_timer_sync(&ndev->cmd_timer);
5341 del_timer_sync(&ndev->data_timer);
5342 mutex_unlock(&ndev->req_lock);
5343 diff --git a/net/openvswitch/flow_netlink.c b/net/openvswitch/flow_netlink.c
5344 index 50ea76180afae..28471cfad9225 100644
5345 --- a/net/openvswitch/flow_netlink.c
5346 +++ b/net/openvswitch/flow_netlink.c
5347 @@ -1713,8 +1713,8 @@ static int __ovs_nla_put_key(const struct sw_flow_key *swkey,
5348 icmpv6_key->icmpv6_type = ntohs(output->tp.src);
5349 icmpv6_key->icmpv6_code = ntohs(output->tp.dst);
5350
5351 - if (icmpv6_key->icmpv6_type == NDISC_NEIGHBOUR_SOLICITATION ||
5352 - icmpv6_key->icmpv6_type == NDISC_NEIGHBOUR_ADVERTISEMENT) {
5353 + if (swkey->tp.src == htons(NDISC_NEIGHBOUR_SOLICITATION) ||
5354 + swkey->tp.src == htons(NDISC_NEIGHBOUR_ADVERTISEMENT)) {
5355 struct ovs_key_nd *nd_key;
5356
5357 nla = nla_reserve(skb, OVS_KEY_ATTR_ND, sizeof(*nd_key));
5358 diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c
5359 index 00d95fefdc6fd..ccb9fa5812d8a 100644
5360 --- a/net/sunrpc/sched.c
5361 +++ b/net/sunrpc/sched.c
5362 @@ -883,8 +883,10 @@ int rpc_malloc(struct rpc_task *task)
5363 struct rpc_buffer *buf;
5364 gfp_t gfp = GFP_NOIO | __GFP_NOWARN;
5365
5366 + if (RPC_IS_ASYNC(task))
5367 + gfp = GFP_NOWAIT | __GFP_NOWARN;
5368 if (RPC_IS_SWAPPER(task))
5369 - gfp = __GFP_MEMALLOC | GFP_NOWAIT | __GFP_NOWARN;
5370 + gfp |= __GFP_MEMALLOC;
5371
5372 size += sizeof(struct rpc_buffer);
5373 if (size <= RPC_BUFFER_MAXSIZE)
5374 diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c
5375 index 9491fc81d50ad..ff263ece44a73 100644
5376 --- a/net/sunrpc/xprt.c
5377 +++ b/net/sunrpc/xprt.c
5378 @@ -1446,7 +1446,14 @@ static void xprt_destroy(struct rpc_xprt *xprt)
5379 /* Exclude transport connect/disconnect handlers */
5380 wait_on_bit_lock(&xprt->state, XPRT_LOCKED, TASK_UNINTERRUPTIBLE);
5381
5382 + /*
5383 + * xprt_schedule_autodisconnect() can run after XPRT_LOCKED
5384 + * is cleared. We use ->transport_lock to ensure the mod_timer()
5385 + * can only run *before* del_time_sync(), never after.
5386 + */
5387 + spin_lock(&xprt->transport_lock);
5388 del_timer_sync(&xprt->timer);
5389 + spin_unlock(&xprt->transport_lock);
5390
5391 rpc_xprt_debugfs_unregister(xprt);
5392 rpc_destroy_wait_queue(&xprt->binding);
5393 diff --git a/net/sunrpc/xprtrdma/transport.c b/net/sunrpc/xprtrdma/transport.c
5394 index 3ea3bb64b6d5c..f308f286e9aa4 100644
5395 --- a/net/sunrpc/xprtrdma/transport.c
5396 +++ b/net/sunrpc/xprtrdma/transport.c
5397 @@ -577,8 +577,10 @@ xprt_rdma_allocate(struct rpc_task *task)
5398 return -ENOMEM;
5399
5400 flags = RPCRDMA_DEF_GFP;
5401 + if (RPC_IS_ASYNC(task))
5402 + flags = GFP_NOWAIT | __GFP_NOWARN;
5403 if (RPC_IS_SWAPPER(task))
5404 - flags = __GFP_MEMALLOC | GFP_NOWAIT | __GFP_NOWARN;
5405 + flags |= __GFP_MEMALLOC;
5406
5407 if (!rpcrdma_get_rdmabuf(r_xprt, req, flags))
5408 goto out_fail;
5409 diff --git a/net/x25/af_x25.c b/net/x25/af_x25.c
5410 index c23c04d38a82e..cd0c800b9072b 100644
5411 --- a/net/x25/af_x25.c
5412 +++ b/net/x25/af_x25.c
5413 @@ -1795,10 +1795,15 @@ void x25_kill_by_neigh(struct x25_neigh *nb)
5414
5415 write_lock_bh(&x25_list_lock);
5416
5417 - sk_for_each(s, &x25_list)
5418 - if (x25_sk(s)->neighbour == nb)
5419 + sk_for_each(s, &x25_list) {
5420 + if (x25_sk(s)->neighbour == nb) {
5421 + write_unlock_bh(&x25_list_lock);
5422 + lock_sock(s);
5423 x25_disconnect(s, ENETUNREACH, 0, 0);
5424 -
5425 + release_sock(s);
5426 + write_lock_bh(&x25_list_lock);
5427 + }
5428 + }
5429 write_unlock_bh(&x25_list_lock);
5430
5431 /* Remove any related forwards */
5432 diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
5433 index b00ed36b9aacf..9179b47e8b61f 100644
5434 --- a/net/xfrm/xfrm_policy.c
5435 +++ b/net/xfrm/xfrm_policy.c
5436 @@ -754,14 +754,10 @@ static void xfrm_policy_requeue(struct xfrm_policy *old,
5437 spin_unlock_bh(&pq->hold_queue.lock);
5438 }
5439
5440 -static bool xfrm_policy_mark_match(struct xfrm_policy *policy,
5441 - struct xfrm_policy *pol)
5442 +static inline bool xfrm_policy_mark_match(const struct xfrm_mark *mark,
5443 + struct xfrm_policy *pol)
5444 {
5445 - if (policy->mark.v == pol->mark.v &&
5446 - policy->priority == pol->priority)
5447 - return true;
5448 -
5449 - return false;
5450 + return mark->v == pol->mark.v && mark->m == pol->mark.m;
5451 }
5452
5453 int xfrm_policy_insert(int dir, struct xfrm_policy *policy, int excl)
5454 @@ -779,7 +775,7 @@ int xfrm_policy_insert(int dir, struct xfrm_policy *policy, int excl)
5455 hlist_for_each_entry(pol, chain, bydst) {
5456 if (pol->type == policy->type &&
5457 !selector_cmp(&pol->selector, &policy->selector) &&
5458 - xfrm_policy_mark_match(policy, pol) &&
5459 + xfrm_policy_mark_match(&policy->mark, pol) &&
5460 xfrm_sec_ctx_match(pol->security, policy->security) &&
5461 !WARN_ON(delpol)) {
5462 if (excl) {
5463 @@ -830,8 +826,8 @@ int xfrm_policy_insert(int dir, struct xfrm_policy *policy, int excl)
5464 }
5465 EXPORT_SYMBOL(xfrm_policy_insert);
5466
5467 -struct xfrm_policy *xfrm_policy_bysel_ctx(struct net *net, u32 mark, u8 type,
5468 - int dir, struct xfrm_selector *sel,
5469 +struct xfrm_policy *xfrm_policy_bysel_ctx(struct net *net, const struct xfrm_mark *mark,
5470 + u8 type, int dir, struct xfrm_selector *sel,
5471 struct xfrm_sec_ctx *ctx, int delete,
5472 int *err)
5473 {
5474 @@ -844,7 +840,7 @@ struct xfrm_policy *xfrm_policy_bysel_ctx(struct net *net, u32 mark, u8 type,
5475 ret = NULL;
5476 hlist_for_each_entry(pol, chain, bydst) {
5477 if (pol->type == type &&
5478 - (mark & pol->mark.m) == pol->mark.v &&
5479 + xfrm_policy_mark_match(mark, pol) &&
5480 !selector_cmp(sel, &pol->selector) &&
5481 xfrm_sec_ctx_match(ctx, pol->security)) {
5482 xfrm_pol_hold(pol);
5483 @@ -869,8 +865,8 @@ struct xfrm_policy *xfrm_policy_bysel_ctx(struct net *net, u32 mark, u8 type,
5484 }
5485 EXPORT_SYMBOL(xfrm_policy_bysel_ctx);
5486
5487 -struct xfrm_policy *xfrm_policy_byid(struct net *net, u32 mark, u8 type,
5488 - int dir, u32 id, int delete, int *err)
5489 +struct xfrm_policy *xfrm_policy_byid(struct net *net, const struct xfrm_mark *mark,
5490 + u8 type, int dir, u32 id, int delete, int *err)
5491 {
5492 struct xfrm_policy *pol, *ret;
5493 struct hlist_head *chain;
5494 @@ -885,7 +881,7 @@ struct xfrm_policy *xfrm_policy_byid(struct net *net, u32 mark, u8 type,
5495 ret = NULL;
5496 hlist_for_each_entry(pol, chain, byidx) {
5497 if (pol->type == type && pol->index == id &&
5498 - (mark & pol->mark.m) == pol->mark.v) {
5499 + xfrm_policy_mark_match(mark, pol)) {
5500 xfrm_pol_hold(pol);
5501 if (delete) {
5502 *err = security_xfrm_policy_delete(
5503 diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c
5504 index 48139e1a0ac91..eaed745221977 100644
5505 --- a/net/xfrm/xfrm_user.c
5506 +++ b/net/xfrm/xfrm_user.c
5507 @@ -1777,7 +1777,6 @@ static int xfrm_get_policy(struct sk_buff *skb, struct nlmsghdr *nlh,
5508 struct km_event c;
5509 int delete;
5510 struct xfrm_mark m;
5511 - u32 mark = xfrm_mark_get(attrs, &m);
5512
5513 p = nlmsg_data(nlh);
5514 delete = nlh->nlmsg_type == XFRM_MSG_DELPOLICY;
5515 @@ -1790,8 +1789,10 @@ static int xfrm_get_policy(struct sk_buff *skb, struct nlmsghdr *nlh,
5516 if (err)
5517 return err;
5518
5519 + xfrm_mark_get(attrs, &m);
5520 +
5521 if (p->index)
5522 - xp = xfrm_policy_byid(net, mark, type, p->dir, p->index, delete, &err);
5523 + xp = xfrm_policy_byid(net, &m, type, p->dir, p->index, delete, &err);
5524 else {
5525 struct nlattr *rt = attrs[XFRMA_SEC_CTX];
5526 struct xfrm_sec_ctx *ctx;
5527 @@ -1808,7 +1809,7 @@ static int xfrm_get_policy(struct sk_buff *skb, struct nlmsghdr *nlh,
5528 if (err)
5529 return err;
5530 }
5531 - xp = xfrm_policy_bysel_ctx(net, mark, type, p->dir, &p->sel,
5532 + xp = xfrm_policy_bysel_ctx(net, &m, type, p->dir, &p->sel,
5533 ctx, delete, &err);
5534 security_xfrm_policy_free(ctx);
5535 }
5536 @@ -2072,7 +2073,6 @@ static int xfrm_add_pol_expire(struct sk_buff *skb, struct nlmsghdr *nlh,
5537 u8 type = XFRM_POLICY_TYPE_MAIN;
5538 int err = -ENOENT;
5539 struct xfrm_mark m;
5540 - u32 mark = xfrm_mark_get(attrs, &m);
5541
5542 err = copy_from_user_policy_type(&type, attrs);
5543 if (err)
5544 @@ -2082,8 +2082,10 @@ static int xfrm_add_pol_expire(struct sk_buff *skb, struct nlmsghdr *nlh,
5545 if (err)
5546 return err;
5547
5548 + xfrm_mark_get(attrs, &m);
5549 +
5550 if (p->index)
5551 - xp = xfrm_policy_byid(net, mark, type, p->dir, p->index, 0, &err);
5552 + xp = xfrm_policy_byid(net, &m, type, p->dir, p->index, 0, &err);
5553 else {
5554 struct nlattr *rt = attrs[XFRMA_SEC_CTX];
5555 struct xfrm_sec_ctx *ctx;
5556 @@ -2100,7 +2102,7 @@ static int xfrm_add_pol_expire(struct sk_buff *skb, struct nlmsghdr *nlh,
5557 if (err)
5558 return err;
5559 }
5560 - xp = xfrm_policy_bysel_ctx(net, mark, type, p->dir,
5561 + xp = xfrm_policy_bysel_ctx(net, &m, type, p->dir,
5562 &p->sel, ctx, 0, &err);
5563 security_xfrm_policy_free(ctx);
5564 }
5565 diff --git a/scripts/gcc-plugins/latent_entropy_plugin.c b/scripts/gcc-plugins/latent_entropy_plugin.c
5566 index dff390f692a2c..4435263766ac9 100644
5567 --- a/scripts/gcc-plugins/latent_entropy_plugin.c
5568 +++ b/scripts/gcc-plugins/latent_entropy_plugin.c
5569 @@ -86,25 +86,31 @@ static struct plugin_info latent_entropy_plugin_info = {
5570 .help = "disable\tturn off latent entropy instrumentation\n",
5571 };
5572
5573 -static unsigned HOST_WIDE_INT seed;
5574 -/*
5575 - * get_random_seed() (this is a GCC function) generates the seed.
5576 - * This is a simple random generator without any cryptographic security because
5577 - * the entropy doesn't come from here.
5578 - */
5579 +static unsigned HOST_WIDE_INT deterministic_seed;
5580 +static unsigned HOST_WIDE_INT rnd_buf[32];
5581 +static size_t rnd_idx = ARRAY_SIZE(rnd_buf);
5582 +static int urandom_fd = -1;
5583 +
5584 static unsigned HOST_WIDE_INT get_random_const(void)
5585 {
5586 - unsigned int i;
5587 - unsigned HOST_WIDE_INT ret = 0;
5588 -
5589 - for (i = 0; i < 8 * sizeof(ret); i++) {
5590 - ret = (ret << 1) | (seed & 1);
5591 - seed >>= 1;
5592 - if (ret & 1)
5593 - seed ^= 0xD800000000000000ULL;
5594 + if (deterministic_seed) {
5595 + unsigned HOST_WIDE_INT w = deterministic_seed;
5596 + w ^= w << 13;
5597 + w ^= w >> 7;
5598 + w ^= w << 17;
5599 + deterministic_seed = w;
5600 + return deterministic_seed;
5601 }
5602
5603 - return ret;
5604 + if (urandom_fd < 0) {
5605 + urandom_fd = open("/dev/urandom", O_RDONLY);
5606 + gcc_assert(urandom_fd >= 0);
5607 + }
5608 + if (rnd_idx >= ARRAY_SIZE(rnd_buf)) {
5609 + gcc_assert(read(urandom_fd, rnd_buf, sizeof(rnd_buf)) == sizeof(rnd_buf));
5610 + rnd_idx = 0;
5611 + }
5612 + return rnd_buf[rnd_idx++];
5613 }
5614
5615 static tree tree_get_random_const(tree type)
5616 @@ -556,8 +562,6 @@ static void latent_entropy_start_unit(void *gcc_data __unused,
5617 tree type, id;
5618 int quals;
5619
5620 - seed = get_random_seed(false);
5621 -
5622 if (in_lto_p)
5623 return;
5624
5625 @@ -594,6 +598,12 @@ __visible int plugin_init(struct plugin_name_args *plugin_info,
5626
5627 struct register_pass_info latent_entropy_pass_info;
5628
5629 + /*
5630 + * Call get_random_seed() with noinit=true, so that this returns
5631 + * 0 in the case where no seed has been passed via -frandom-seed.
5632 + */
5633 + deterministic_seed = get_random_seed(true);
5634 +
5635 latent_entropy_pass_info.pass = make_latent_entropy_pass();
5636 latent_entropy_pass_info.reference_pass_name = "optimized";
5637 latent_entropy_pass_info.ref_pass_instance_number = 1;
5638 diff --git a/security/selinux/xfrm.c b/security/selinux/xfrm.c
5639 index 56e354fcdfc66..5304dd49e054b 100644
5640 --- a/security/selinux/xfrm.c
5641 +++ b/security/selinux/xfrm.c
5642 @@ -344,7 +344,7 @@ int selinux_xfrm_state_alloc_acquire(struct xfrm_state *x,
5643 int rc;
5644 struct xfrm_sec_ctx *ctx;
5645 char *ctx_str = NULL;
5646 - int str_len;
5647 + u32 str_len;
5648
5649 if (!polsec)
5650 return 0;
5651 diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c
5652 index 589c1c2ae6db3..84ed47195cdd2 100644
5653 --- a/security/smack/smack_lsm.c
5654 +++ b/security/smack/smack_lsm.c
5655 @@ -2567,7 +2567,7 @@ static int smk_ipv6_check(struct smack_known *subject,
5656 #ifdef CONFIG_AUDIT
5657 smk_ad_init_net(&ad, __func__, LSM_AUDIT_DATA_NET, &net);
5658 ad.a.u.net->family = PF_INET6;
5659 - ad.a.u.net->dport = ntohs(address->sin6_port);
5660 + ad.a.u.net->dport = address->sin6_port;
5661 if (act == SMK_RECEIVING)
5662 ad.a.u.net->v6info.saddr = address->sin6_addr;
5663 else
5664 diff --git a/security/tomoyo/load_policy.c b/security/tomoyo/load_policy.c
5665 index 078fac0bb4c55..6766b92cb572e 100644
5666 --- a/security/tomoyo/load_policy.c
5667 +++ b/security/tomoyo/load_policy.c
5668 @@ -23,7 +23,7 @@ static const char *tomoyo_loader;
5669 static int __init tomoyo_loader_setup(char *str)
5670 {
5671 tomoyo_loader = str;
5672 - return 0;
5673 + return 1;
5674 }
5675
5676 __setup("TOMOYO_loader=", tomoyo_loader_setup);
5677 @@ -62,7 +62,7 @@ static const char *tomoyo_trigger;
5678 static int __init tomoyo_trigger_setup(char *str)
5679 {
5680 tomoyo_trigger = str;
5681 - return 0;
5682 + return 1;
5683 }
5684
5685 __setup("TOMOYO_trigger=", tomoyo_trigger_setup);
5686 diff --git a/sound/core/pcm_misc.c b/sound/core/pcm_misc.c
5687 index 53dc37357bca9..92519e0477c86 100644
5688 --- a/sound/core/pcm_misc.c
5689 +++ b/sound/core/pcm_misc.c
5690 @@ -412,7 +412,7 @@ int snd_pcm_format_set_silence(snd_pcm_format_t format, void *data, unsigned int
5691 return 0;
5692 width = pcm_formats[(INT)format].phys; /* physical width */
5693 pat = pcm_formats[(INT)format].silence;
5694 - if (! width)
5695 + if (!width || !pat)
5696 return -EINVAL;
5697 /* signed or 1 byte data */
5698 if (pcm_formats[(INT)format].signd == 1 || width <= 8) {
5699 diff --git a/sound/firewire/fcp.c b/sound/firewire/fcp.c
5700 index cce19768f43d0..8209856293d32 100644
5701 --- a/sound/firewire/fcp.c
5702 +++ b/sound/firewire/fcp.c
5703 @@ -234,9 +234,7 @@ int fcp_avc_transaction(struct fw_unit *unit,
5704 t.response_match_bytes = response_match_bytes;
5705 t.state = STATE_PENDING;
5706 init_waitqueue_head(&t.wait);
5707 -
5708 - if (*(const u8 *)command == 0x00 || *(const u8 *)command == 0x03)
5709 - t.deferrable = true;
5710 + t.deferrable = (*(const u8 *)command == 0x00 || *(const u8 *)command == 0x03);
5711
5712 spin_lock_irq(&transactions_lock);
5713 list_add_tail(&t.list, &transactions);
5714 diff --git a/sound/isa/cs423x/cs4236.c b/sound/isa/cs423x/cs4236.c
5715 index c67d379cb6d6a..9d4a2c66ea16b 100644
5716 --- a/sound/isa/cs423x/cs4236.c
5717 +++ b/sound/isa/cs423x/cs4236.c
5718 @@ -557,7 +557,7 @@ static int snd_cs423x_pnpbios_detect(struct pnp_dev *pdev,
5719 static int dev;
5720 int err;
5721 struct snd_card *card;
5722 - struct pnp_dev *cdev;
5723 + struct pnp_dev *cdev, *iter;
5724 char cid[PNP_ID_LEN];
5725
5726 if (pnp_device_is_isapnp(pdev))
5727 @@ -573,9 +573,11 @@ static int snd_cs423x_pnpbios_detect(struct pnp_dev *pdev,
5728 strcpy(cid, pdev->id[0].id);
5729 cid[5] = '1';
5730 cdev = NULL;
5731 - list_for_each_entry(cdev, &(pdev->protocol->devices), protocol_list) {
5732 - if (!strcmp(cdev->id[0].id, cid))
5733 + list_for_each_entry(iter, &(pdev->protocol->devices), protocol_list) {
5734 + if (!strcmp(iter->id[0].id, cid)) {
5735 + cdev = iter;
5736 break;
5737 + }
5738 }
5739 err = snd_cs423x_card_new(&pdev->dev, dev, &card);
5740 if (err < 0)
5741 diff --git a/sound/soc/atmel/atmel_ssc_dai.c b/sound/soc/atmel/atmel_ssc_dai.c
5742 index 16e459aedffe4..5958aafac8ebd 100644
5743 --- a/sound/soc/atmel/atmel_ssc_dai.c
5744 +++ b/sound/soc/atmel/atmel_ssc_dai.c
5745 @@ -296,7 +296,10 @@ static int atmel_ssc_startup(struct snd_pcm_substream *substream,
5746
5747 /* Enable PMC peripheral clock for this SSC */
5748 pr_debug("atmel_ssc_dai: Starting clock\n");
5749 - clk_enable(ssc_p->ssc->clk);
5750 + ret = clk_enable(ssc_p->ssc->clk);
5751 + if (ret)
5752 + return ret;
5753 +
5754 ssc_p->mck_rate = clk_get_rate(ssc_p->ssc->clk);
5755
5756 /* Reset the SSC unless initialized to keep it in a clean state */
5757 diff --git a/sound/soc/atmel/sam9g20_wm8731.c b/sound/soc/atmel/sam9g20_wm8731.c
5758 index d7469cdd90dc8..39365319c3516 100644
5759 --- a/sound/soc/atmel/sam9g20_wm8731.c
5760 +++ b/sound/soc/atmel/sam9g20_wm8731.c
5761 @@ -226,6 +226,7 @@ static int at91sam9g20ek_audio_probe(struct platform_device *pdev)
5762 cpu_np = of_parse_phandle(np, "atmel,ssc-controller", 0);
5763 if (!cpu_np) {
5764 dev_err(&pdev->dev, "dai and pcm info missing\n");
5765 + of_node_put(codec_np);
5766 return -EINVAL;
5767 }
5768 at91sam9g20ek_dai.cpu_of_node = cpu_np;
5769 diff --git a/sound/soc/codecs/wm8350.c b/sound/soc/codecs/wm8350.c
5770 index 2efc5b41ad0fe..6d719392cdbee 100644
5771 --- a/sound/soc/codecs/wm8350.c
5772 +++ b/sound/soc/codecs/wm8350.c
5773 @@ -1536,18 +1536,38 @@ static int wm8350_codec_probe(struct snd_soc_codec *codec)
5774 wm8350_clear_bits(wm8350, WM8350_JACK_DETECT,
5775 WM8350_JDL_ENA | WM8350_JDR_ENA);
5776
5777 - wm8350_register_irq(wm8350, WM8350_IRQ_CODEC_JCK_DET_L,
5778 + ret = wm8350_register_irq(wm8350, WM8350_IRQ_CODEC_JCK_DET_L,
5779 wm8350_hpl_jack_handler, 0, "Left jack detect",
5780 priv);
5781 - wm8350_register_irq(wm8350, WM8350_IRQ_CODEC_JCK_DET_R,
5782 + if (ret != 0)
5783 + goto err;
5784 +
5785 + ret = wm8350_register_irq(wm8350, WM8350_IRQ_CODEC_JCK_DET_R,
5786 wm8350_hpr_jack_handler, 0, "Right jack detect",
5787 priv);
5788 - wm8350_register_irq(wm8350, WM8350_IRQ_CODEC_MICSCD,
5789 + if (ret != 0)
5790 + goto free_jck_det_l;
5791 +
5792 + ret = wm8350_register_irq(wm8350, WM8350_IRQ_CODEC_MICSCD,
5793 wm8350_mic_handler, 0, "Microphone short", priv);
5794 - wm8350_register_irq(wm8350, WM8350_IRQ_CODEC_MICD,
5795 + if (ret != 0)
5796 + goto free_jck_det_r;
5797 +
5798 + ret = wm8350_register_irq(wm8350, WM8350_IRQ_CODEC_MICD,
5799 wm8350_mic_handler, 0, "Microphone detect", priv);
5800 + if (ret != 0)
5801 + goto free_micscd;
5802
5803 return 0;
5804 +
5805 +free_micscd:
5806 + wm8350_free_irq(wm8350, WM8350_IRQ_CODEC_MICSCD, priv);
5807 +free_jck_det_r:
5808 + wm8350_free_irq(wm8350, WM8350_IRQ_CODEC_JCK_DET_R, priv);
5809 +free_jck_det_l:
5810 + wm8350_free_irq(wm8350, WM8350_IRQ_CODEC_JCK_DET_L, priv);
5811 +err:
5812 + return ret;
5813 }
5814
5815 static int wm8350_codec_remove(struct snd_soc_codec *codec)
5816 diff --git a/sound/soc/davinci/davinci-i2s.c b/sound/soc/davinci/davinci-i2s.c
5817 index 3849616519048..e5f61f1499c62 100644
5818 --- a/sound/soc/davinci/davinci-i2s.c
5819 +++ b/sound/soc/davinci/davinci-i2s.c
5820 @@ -719,7 +719,9 @@ static int davinci_i2s_probe(struct platform_device *pdev)
5821 dev->clk = clk_get(&pdev->dev, NULL);
5822 if (IS_ERR(dev->clk))
5823 return -ENODEV;
5824 - clk_enable(dev->clk);
5825 + ret = clk_enable(dev->clk);
5826 + if (ret)
5827 + goto err_put_clk;
5828
5829 dev->dev = &pdev->dev;
5830 dev_set_drvdata(&pdev->dev, dev);
5831 @@ -741,6 +743,7 @@ err_unregister_component:
5832 snd_soc_unregister_component(&pdev->dev);
5833 err_release_clk:
5834 clk_disable(dev->clk);
5835 +err_put_clk:
5836 clk_put(dev->clk);
5837 return ret;
5838 }
5839 diff --git a/sound/soc/fsl/imx-es8328.c b/sound/soc/fsl/imx-es8328.c
5840 index 20e7400e2611e..5942f99019382 100644
5841 --- a/sound/soc/fsl/imx-es8328.c
5842 +++ b/sound/soc/fsl/imx-es8328.c
5843 @@ -93,6 +93,7 @@ static int imx_es8328_probe(struct platform_device *pdev)
5844 if (int_port > MUX_PORT_MAX || int_port == 0) {
5845 dev_err(dev, "mux-int-port: hardware only has %d mux ports\n",
5846 MUX_PORT_MAX);
5847 + ret = -EINVAL;
5848 goto fail;
5849 }
5850
5851 diff --git a/sound/soc/mxs/mxs-saif.c b/sound/soc/mxs/mxs-saif.c
5852 index 13631003cb7c6..5977a2011d9e6 100644
5853 --- a/sound/soc/mxs/mxs-saif.c
5854 +++ b/sound/soc/mxs/mxs-saif.c
5855 @@ -442,7 +442,10 @@ static int mxs_saif_hw_params(struct snd_pcm_substream *substream,
5856 * basic clock which should be fast enough for the internal
5857 * logic.
5858 */
5859 - clk_enable(saif->clk);
5860 + ret = clk_enable(saif->clk);
5861 + if (ret)
5862 + return ret;
5863 +
5864 ret = clk_set_rate(saif->clk, 24000000);
5865 clk_disable(saif->clk);
5866 if (ret)
5867 diff --git a/sound/soc/mxs/mxs-sgtl5000.c b/sound/soc/mxs/mxs-sgtl5000.c
5868 index 2b23ffbac6b12..e8aa93a654e7e 100644
5869 --- a/sound/soc/mxs/mxs-sgtl5000.c
5870 +++ b/sound/soc/mxs/mxs-sgtl5000.c
5871 @@ -112,6 +112,9 @@ static int mxs_sgtl5000_probe(struct platform_device *pdev)
5872 codec_np = of_parse_phandle(np, "audio-codec", 0);
5873 if (!saif_np[0] || !saif_np[1] || !codec_np) {
5874 dev_err(&pdev->dev, "phandle missing or invalid\n");
5875 + of_node_put(codec_np);
5876 + of_node_put(saif_np[0]);
5877 + of_node_put(saif_np[1]);
5878 return -EINVAL;
5879 }
5880
5881 diff --git a/sound/soc/sh/fsi.c b/sound/soc/sh/fsi.c
5882 index ead520182e268..29be452852746 100644
5883 --- a/sound/soc/sh/fsi.c
5884 +++ b/sound/soc/sh/fsi.c
5885 @@ -821,14 +821,27 @@ static int fsi_clk_enable(struct device *dev,
5886 return ret;
5887 }
5888
5889 - clk_enable(clock->xck);
5890 - clk_enable(clock->ick);
5891 - clk_enable(clock->div);
5892 + ret = clk_enable(clock->xck);
5893 + if (ret)
5894 + goto err;
5895 + ret = clk_enable(clock->ick);
5896 + if (ret)
5897 + goto disable_xck;
5898 + ret = clk_enable(clock->div);
5899 + if (ret)
5900 + goto disable_ick;
5901
5902 clock->count++;
5903 }
5904
5905 return ret;
5906 +
5907 +disable_ick:
5908 + clk_disable(clock->ick);
5909 +disable_xck:
5910 + clk_disable(clock->xck);
5911 +err:
5912 + return ret;
5913 }
5914
5915 static int fsi_clk_disable(struct device *dev,
5916 diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
5917 index 0344d44231675..81c3aa1670382 100644
5918 --- a/sound/soc/soc-core.c
5919 +++ b/sound/soc/soc-core.c
5920 @@ -3799,7 +3799,7 @@ static int snd_soc_get_dai_name(struct of_phandle_args *args,
5921 if (!component_of_node && pos->dev->parent)
5922 component_of_node = pos->dev->parent->of_node;
5923
5924 - if (component_of_node != args->np)
5925 + if (component_of_node != args->np || !pos->num_dai)
5926 continue;
5927
5928 if (pos->driver->of_xlate_dai_name) {
5929 diff --git a/sound/soc/soc-generic-dmaengine-pcm.c b/sound/soc/soc-generic-dmaengine-pcm.c
5930 index 67d22b4baeb05..61f0c9d6f6dce 100644
5931 --- a/sound/soc/soc-generic-dmaengine-pcm.c
5932 +++ b/sound/soc/soc-generic-dmaengine-pcm.c
5933 @@ -98,10 +98,10 @@ static int dmaengine_pcm_hw_params(struct snd_pcm_substream *substream,
5934
5935 memset(&slave_config, 0, sizeof(slave_config));
5936
5937 - if (!pcm->config)
5938 - prepare_slave_config = snd_dmaengine_pcm_prepare_slave_config;
5939 - else
5940 + if (pcm->config && pcm->config->prepare_slave_config)
5941 prepare_slave_config = pcm->config->prepare_slave_config;
5942 + else
5943 + prepare_slave_config = snd_dmaengine_pcm_prepare_slave_config;
5944
5945 if (prepare_slave_config) {
5946 ret = prepare_slave_config(substream, params, &slave_config);
5947 diff --git a/sound/soc/soc-topology.c b/sound/soc/soc-topology.c
5948 index 6274a50026473..7528f0d4bddff 100644
5949 --- a/sound/soc/soc-topology.c
5950 +++ b/sound/soc/soc-topology.c
5951 @@ -507,7 +507,8 @@ static int soc_tplg_kcontrol_bind_io(struct snd_soc_tplg_ctl_hdr *hdr,
5952
5953 if (hdr->ops.info == SND_SOC_TPLG_CTL_BYTES
5954 && k->iface & SNDRV_CTL_ELEM_IFACE_MIXER
5955 - && k->access & SNDRV_CTL_ELEM_ACCESS_TLV_READWRITE
5956 + && (k->access & SNDRV_CTL_ELEM_ACCESS_TLV_READ
5957 + || k->access & SNDRV_CTL_ELEM_ACCESS_TLV_WRITE)
5958 && k->access & SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK) {
5959 struct soc_bytes_ext *sbe;
5960 struct snd_soc_tplg_bytes_control *be;
5961 diff --git a/sound/spi/at73c213.c b/sound/spi/at73c213.c
5962 index fac7e6eb9529c..671b4516d9303 100644
5963 --- a/sound/spi/at73c213.c
5964 +++ b/sound/spi/at73c213.c
5965 @@ -221,7 +221,9 @@ static int snd_at73c213_pcm_open(struct snd_pcm_substream *substream)
5966 runtime->hw = snd_at73c213_playback_hw;
5967 chip->substream = substream;
5968
5969 - clk_enable(chip->ssc->clk);
5970 + err = clk_enable(chip->ssc->clk);
5971 + if (err)
5972 + return err;
5973
5974 return 0;
5975 }
5976 @@ -787,7 +789,9 @@ static int snd_at73c213_chip_init(struct snd_at73c213 *chip)
5977 goto out;
5978
5979 /* Enable DAC master clock. */
5980 - clk_enable(chip->board->dac_clk);
5981 + retval = clk_enable(chip->board->dac_clk);
5982 + if (retval)
5983 + goto out;
5984
5985 /* Initialize at73c213 on SPI bus. */
5986 retval = snd_at73c213_write_reg(chip, DAC_RST, 0x04);
5987 @@ -900,7 +904,9 @@ static int snd_at73c213_dev_init(struct snd_card *card,
5988 chip->card = card;
5989 chip->irq = -1;
5990
5991 - clk_enable(chip->ssc->clk);
5992 + retval = clk_enable(chip->ssc->clk);
5993 + if (retval)
5994 + return retval;
5995
5996 retval = request_irq(irq, snd_at73c213_interrupt, 0, "at73c213", chip);
5997 if (retval) {
5998 @@ -1019,7 +1025,9 @@ static int snd_at73c213_remove(struct spi_device *spi)
5999 int retval;
6000
6001 /* Stop playback. */
6002 - clk_enable(chip->ssc->clk);
6003 + retval = clk_enable(chip->ssc->clk);
6004 + if (retval)
6005 + goto out;
6006 ssc_writel(chip->ssc->regs, CR, SSC_BIT(CR_TXDIS));
6007 clk_disable(chip->ssc->clk);
6008
6009 @@ -1099,9 +1107,16 @@ static int snd_at73c213_resume(struct device *dev)
6010 {
6011 struct snd_card *card = dev_get_drvdata(dev);
6012 struct snd_at73c213 *chip = card->private_data;
6013 + int retval;
6014
6015 - clk_enable(chip->board->dac_clk);
6016 - clk_enable(chip->ssc->clk);
6017 + retval = clk_enable(chip->board->dac_clk);
6018 + if (retval)
6019 + return retval;
6020 + retval = clk_enable(chip->ssc->clk);
6021 + if (retval) {
6022 + clk_disable(chip->board->dac_clk);
6023 + return retval;
6024 + }
6025 ssc_writel(chip->ssc->regs, CR, SSC_BIT(CR_TXEN));
6026
6027 return 0;
6028 diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile
6029 index ac9c477a2a485..46af3bb561422 100644
6030 --- a/tools/build/feature/Makefile
6031 +++ b/tools/build/feature/Makefile
6032 @@ -162,7 +162,7 @@ strip-libs = $(filter-out -l%,$(1))
6033 PERL_EMBED_LDOPTS = $(shell perl -MExtUtils::Embed -e ldopts 2>/dev/null)
6034 PERL_EMBED_LDFLAGS = $(call strip-libs,$(PERL_EMBED_LDOPTS))
6035 PERL_EMBED_LIBADD = $(call grep-libs,$(PERL_EMBED_LDOPTS))
6036 -PERL_EMBED_CCOPTS = `perl -MExtUtils::Embed -e ccopts 2>/dev/null`
6037 +PERL_EMBED_CCOPTS = $(shell perl -MExtUtils::Embed -e ccopts 2>/dev/null)
6038 FLAGS_PERL_EMBED=$(PERL_EMBED_CCOPTS) $(PERL_EMBED_LDOPTS)
6039
6040 $(OUTPUT)test-libperl.bin:
6041 diff --git a/tools/testing/selftests/x86/check_cc.sh b/tools/testing/selftests/x86/check_cc.sh
6042 index 172d3293fb7be..356689c563975 100755
6043 --- a/tools/testing/selftests/x86/check_cc.sh
6044 +++ b/tools/testing/selftests/x86/check_cc.sh
6045 @@ -7,7 +7,7 @@ CC="$1"
6046 TESTPROG="$2"
6047 shift 2
6048
6049 -if "$CC" -o /dev/null "$TESTPROG" -O0 "$@" 2>/dev/null; then
6050 +if [ -n "$CC" ] && $CC -o /dev/null "$TESTPROG" -O0 "$@" 2>/dev/null; then
6051 echo 1
6052 else
6053 echo 0
6054 diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
6055 index d9b7001227e3c..d251b718bf53f 100644
6056 --- a/virt/kvm/kvm_main.c
6057 +++ b/virt/kvm/kvm_main.c
6058 @@ -107,6 +107,8 @@ EXPORT_SYMBOL_GPL(kvm_debugfs_dir);
6059 static int kvm_debugfs_num_entries;
6060 static const struct file_operations *stat_fops_per_vm[];
6061
6062 +static struct file_operations kvm_chardev_ops;
6063 +
6064 static long kvm_vcpu_ioctl(struct file *file, unsigned int ioctl,
6065 unsigned long arg);
6066 #ifdef CONFIG_KVM_COMPAT
6067 @@ -714,6 +716,16 @@ static struct kvm *kvm_create_vm(unsigned long type)
6068
6069 preempt_notifier_inc();
6070
6071 + /*
6072 + * When the fd passed to this ioctl() is opened it pins the module,
6073 + * but try_module_get() also prevents getting a reference if the module
6074 + * is in MODULE_STATE_GOING (e.g. if someone ran "rmmod --wait").
6075 + */
6076 + if (!try_module_get(kvm_chardev_ops.owner)) {
6077 + r = -ENODEV;
6078 + goto out_err;
6079 + }
6080 +
6081 return kvm;
6082
6083 out_err:
6084 @@ -798,6 +810,7 @@ static void kvm_destroy_vm(struct kvm *kvm)
6085 preempt_notifier_dec();
6086 hardware_disable_all();
6087 mmdrop(mm);
6088 + module_put(kvm_chardev_ops.owner);
6089 }
6090
6091 void kvm_get_kvm(struct kvm *kvm)