Gentoo Archives: gentoo-commits

From: Mike Pagano <mpagano@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/linux-patches:4.9 commit in: /
Date: Sun, 25 Feb 2018 15:47:27
Message-Id: 1519573635.225db640edee2b398f1260a928f135bba764b0b3.mpagano@gentoo
1 commit: 225db640edee2b398f1260a928f135bba764b0b3
2 Author: Mike Pagano <mpagano <AT> gentoo <DOT> org>
3 AuthorDate: Sun Feb 25 15:47:15 2018 +0000
4 Commit: Mike Pagano <mpagano <AT> gentoo <DOT> org>
5 CommitDate: Sun Feb 25 15:47:15 2018 +0000
6 URL: https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=225db640
7
8 Linux patch 4.9.84
9
10 0000_README | 4 +
11 1083_linux-4.9.84.patch | 5418 +++++++++++++++++++++++++++++++++++++++++++++++
12 2 files changed, 5422 insertions(+)
13
14 diff --git a/0000_README b/0000_README
15 index faf1391..0832d17 100644
16 --- a/0000_README
17 +++ b/0000_README
18 @@ -375,6 +375,10 @@ Patch: 1082_linux-4.9.83.patch
19 From: http://www.kernel.org
20 Desc: Linux 4.9.83
21
22 +Patch: 1083_linux-4.9.84.patch
23 +From: http://www.kernel.org
24 +Desc: Linux 4.9.84
25 +
26 Patch: 1500_XATTR_USER_PREFIX.patch
27 From: https://bugs.gentoo.org/show_bug.cgi?id=470644
28 Desc: Support for namespace user.pax.* on tmpfs.
29
30 diff --git a/1083_linux-4.9.84.patch b/1083_linux-4.9.84.patch
31 new file mode 100644
32 index 0000000..ea4c7df
33 --- /dev/null
34 +++ b/1083_linux-4.9.84.patch
35 @@ -0,0 +1,5418 @@
36 +diff --git a/Makefile b/Makefile
37 +index cfae9b823d2b..db13b13cdcc2 100644
38 +--- a/Makefile
39 ++++ b/Makefile
40 +@@ -1,6 +1,6 @@
41 + VERSION = 4
42 + PATCHLEVEL = 9
43 +-SUBLEVEL = 83
44 ++SUBLEVEL = 84
45 + EXTRAVERSION =
46 + NAME = Roaring Lionus
47 +
48 +@@ -87,10 +87,12 @@ endif
49 + ifneq ($(filter 4.%,$(MAKE_VERSION)),) # make-4
50 + ifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),)
51 + quiet=silent_
52 ++ tools_silent=s
53 + endif
54 + else # make-3.8x
55 + ifneq ($(filter s% -s%,$(MAKEFLAGS)),)
56 + quiet=silent_
57 ++ tools_silent=-s
58 + endif
59 + endif
60 +
61 +@@ -1614,11 +1616,11 @@ image_name:
62 + # Clear a bunch of variables before executing the submake
63 + tools/: FORCE
64 + $(Q)mkdir -p $(objtree)/tools
65 +- $(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(filter --j% -j,$(MAKEFLAGS))" O=$(shell cd $(objtree) && /bin/pwd) subdir=tools -C $(src)/tools/
66 ++ $(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(shell cd $(objtree) && /bin/pwd) subdir=tools -C $(src)/tools/
67 +
68 + tools/%: FORCE
69 + $(Q)mkdir -p $(objtree)/tools
70 +- $(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(filter --j% -j,$(MAKEFLAGS))" O=$(shell cd $(objtree) && /bin/pwd) subdir=tools -C $(src)/tools/ $*
71 ++ $(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(shell cd $(objtree) && /bin/pwd) subdir=tools -C $(src)/tools/ $*
72 +
73 + # Single targets
74 + # ---------------------------------------------------------------------------
75 +diff --git a/arch/arm/boot/dts/am4372.dtsi b/arch/arm/boot/dts/am4372.dtsi
76 +index a20a71d9d22e..c9c9a47446e8 100644
77 +--- a/arch/arm/boot/dts/am4372.dtsi
78 ++++ b/arch/arm/boot/dts/am4372.dtsi
79 +@@ -926,7 +926,8 @@
80 + reg = <0x48038000 0x2000>,
81 + <0x46000000 0x400000>;
82 + reg-names = "mpu", "dat";
83 +- interrupts = <80>, <81>;
84 ++ interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>,
85 ++ <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
86 + interrupt-names = "tx", "rx";
87 + status = "disabled";
88 + dmas = <&edma 8 2>,
89 +@@ -940,7 +941,8 @@
90 + reg = <0x4803C000 0x2000>,
91 + <0x46400000 0x400000>;
92 + reg-names = "mpu", "dat";
93 +- interrupts = <82>, <83>;
94 ++ interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>,
95 ++ <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
96 + interrupt-names = "tx", "rx";
97 + status = "disabled";
98 + dmas = <&edma 10 2>,
99 +diff --git a/arch/arm/boot/dts/am437x-cm-t43.dts b/arch/arm/boot/dts/am437x-cm-t43.dts
100 +index 9e92d480576b..3b9a94c274a7 100644
101 +--- a/arch/arm/boot/dts/am437x-cm-t43.dts
102 ++++ b/arch/arm/boot/dts/am437x-cm-t43.dts
103 +@@ -301,8 +301,8 @@
104 + status = "okay";
105 + pinctrl-names = "default";
106 + pinctrl-0 = <&spi0_pins>;
107 +- dmas = <&edma 16
108 +- &edma 17>;
109 ++ dmas = <&edma 16 0
110 ++ &edma 17 0>;
111 + dma-names = "tx0", "rx0";
112 +
113 + flash: w25q64cvzpig@0 {
114 +diff --git a/arch/arm/boot/dts/logicpd-som-lv-37xx-devkit.dts b/arch/arm/boot/dts/logicpd-som-lv-37xx-devkit.dts
115 +index 38faa90007d7..2fa5eb4bd402 100644
116 +--- a/arch/arm/boot/dts/logicpd-som-lv-37xx-devkit.dts
117 ++++ b/arch/arm/boot/dts/logicpd-som-lv-37xx-devkit.dts
118 +@@ -72,7 +72,8 @@
119 + };
120 +
121 + &gpmc {
122 +- ranges = <1 0 0x08000000 0x1000000>; /* CS1: 16MB for LAN9221 */
123 ++ ranges = <0 0 0x30000000 0x1000000 /* CS0: 16MB for NAND */
124 ++ 1 0 0x2c000000 0x1000000>; /* CS1: 16MB for LAN9221 */
125 +
126 + ethernet@gpmc {
127 + pinctrl-names = "default";
128 +diff --git a/arch/arm/boot/dts/logicpd-som-lv.dtsi b/arch/arm/boot/dts/logicpd-som-lv.dtsi
129 +index 26cce4d18405..4f2c5ec75714 100644
130 +--- a/arch/arm/boot/dts/logicpd-som-lv.dtsi
131 ++++ b/arch/arm/boot/dts/logicpd-som-lv.dtsi
132 +@@ -37,7 +37,7 @@
133 + };
134 +
135 + &gpmc {
136 +- ranges = <0 0 0x00000000 0x1000000>; /* CS0: 16MB for NAND */
137 ++ ranges = <0 0 0x30000000 0x1000000>; /* CS0: 16MB for NAND */
138 +
139 + nand@0,0 {
140 + compatible = "ti,omap2-nand";
141 +@@ -121,7 +121,7 @@
142 +
143 + &mmc3 {
144 + interrupts-extended = <&intc 94 &omap3_pmx_core2 0x46>;
145 +- pinctrl-0 = <&mmc3_pins>;
146 ++ pinctrl-0 = <&mmc3_pins &wl127x_gpio>;
147 + pinctrl-names = "default";
148 + vmmc-supply = <&wl12xx_vmmc>;
149 + non-removable;
150 +@@ -132,8 +132,8 @@
151 + wlcore: wlcore@2 {
152 + compatible = "ti,wl1273";
153 + reg = <2>;
154 +- interrupt-parent = <&gpio5>;
155 +- interrupts = <24 IRQ_TYPE_LEVEL_HIGH>; /* gpio 152 */
156 ++ interrupt-parent = <&gpio1>;
157 ++ interrupts = <2 IRQ_TYPE_LEVEL_HIGH>; /* gpio 2 */
158 + ref-clock-frequency = <26000000>;
159 + };
160 + };
161 +@@ -157,8 +157,6 @@
162 + OMAP3_CORE1_IOPAD(0x2166, PIN_INPUT_PULLUP | MUX_MODE3) /* sdmmc2_dat5.sdmmc3_dat1 */
163 + OMAP3_CORE1_IOPAD(0x2168, PIN_INPUT_PULLUP | MUX_MODE3) /* sdmmc2_dat6.sdmmc3_dat2 */
164 + OMAP3_CORE1_IOPAD(0x216a, PIN_INPUT_PULLUP | MUX_MODE3) /* sdmmc2_dat6.sdmmc3_dat3 */
165 +- OMAP3_CORE1_IOPAD(0x2184, PIN_INPUT_PULLUP | MUX_MODE4) /* mcbsp4_clkx.gpio_152 */
166 +- OMAP3_CORE1_IOPAD(0x2a0c, PIN_OUTPUT | MUX_MODE4) /* sys_boot1.gpio_3 */
167 + OMAP3_CORE1_IOPAD(0x21d0, PIN_INPUT_PULLUP | MUX_MODE3) /* mcspi1_cs1.sdmmc3_cmd */
168 + OMAP3_CORE1_IOPAD(0x21d2, PIN_INPUT_PULLUP | MUX_MODE3) /* mcspi1_cs2.sdmmc_clk */
169 + >;
170 +@@ -228,6 +226,12 @@
171 + OMAP3_WKUP_IOPAD(0x2a0e, PIN_OUTPUT | MUX_MODE4) /* sys_boot2.gpio_4 */
172 + >;
173 + };
174 ++ wl127x_gpio: pinmux_wl127x_gpio_pin {
175 ++ pinctrl-single,pins = <
176 ++ OMAP3_WKUP_IOPAD(0x2a0c, PIN_INPUT | MUX_MODE4) /* sys_boot0.gpio_2 */
177 ++ OMAP3_WKUP_IOPAD(0x2a0c, PIN_OUTPUT | MUX_MODE4) /* sys_boot1.gpio_3 */
178 ++ >;
179 ++ };
180 + };
181 +
182 + &omap3_pmx_core2 {
183 +diff --git a/arch/arm/boot/dts/omap4.dtsi b/arch/arm/boot/dts/omap4.dtsi
184 +index 9c289ddab3df..4d6584f15b17 100644
185 +--- a/arch/arm/boot/dts/omap4.dtsi
186 ++++ b/arch/arm/boot/dts/omap4.dtsi
187 +@@ -352,7 +352,7 @@
188 + elm: elm@48078000 {
189 + compatible = "ti,am3352-elm";
190 + reg = <0x48078000 0x2000>;
191 +- interrupts = <4>;
192 ++ interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
193 + ti,hwmods = "elm";
194 + status = "disabled";
195 + };
196 +@@ -859,14 +859,12 @@
197 + usbhsohci: ohci@4a064800 {
198 + compatible = "ti,ohci-omap3";
199 + reg = <0x4a064800 0x400>;
200 +- interrupt-parent = <&gic>;
201 + interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
202 + };
203 +
204 + usbhsehci: ehci@4a064c00 {
205 + compatible = "ti,ehci-omap";
206 + reg = <0x4a064c00 0x400>;
207 +- interrupt-parent = <&gic>;
208 + interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
209 + };
210 + };
211 +diff --git a/arch/arm/common/bL_switcher_dummy_if.c b/arch/arm/common/bL_switcher_dummy_if.c
212 +index 6053f64c3752..94133e33943c 100644
213 +--- a/arch/arm/common/bL_switcher_dummy_if.c
214 ++++ b/arch/arm/common/bL_switcher_dummy_if.c
215 +@@ -57,3 +57,7 @@ static struct miscdevice bL_switcher_device = {
216 + &bL_switcher_fops
217 + };
218 + module_misc_device(bL_switcher_device);
219 ++
220 ++MODULE_AUTHOR("Nicolas Pitre <nico@××××××.org>");
221 ++MODULE_LICENSE("GPL v2");
222 ++MODULE_DESCRIPTION("big.LITTLE switcher dummy user interface");
223 +diff --git a/arch/arm/mach-omap2/omap-secure.c b/arch/arm/mach-omap2/omap-secure.c
224 +index 5ac122e88f67..9ff92050053c 100644
225 +--- a/arch/arm/mach-omap2/omap-secure.c
226 ++++ b/arch/arm/mach-omap2/omap-secure.c
227 +@@ -73,6 +73,25 @@ phys_addr_t omap_secure_ram_mempool_base(void)
228 + return omap_secure_memblock_base;
229 + }
230 +
231 ++u32 omap3_save_secure_ram(void __iomem *addr, int size)
232 ++{
233 ++ u32 ret;
234 ++ u32 param[5];
235 ++
236 ++ if (size != OMAP3_SAVE_SECURE_RAM_SZ)
237 ++ return OMAP3_SAVE_SECURE_RAM_SZ;
238 ++
239 ++ param[0] = 4; /* Number of arguments */
240 ++ param[1] = __pa(addr); /* Physical address for saving */
241 ++ param[2] = 0;
242 ++ param[3] = 1;
243 ++ param[4] = 1;
244 ++
245 ++ ret = save_secure_ram_context(__pa(param));
246 ++
247 ++ return ret;
248 ++}
249 ++
250 + /**
251 + * rx51_secure_dispatcher: Routine to dispatch secure PPA API calls
252 + * @idx: The PPA API index
253 +diff --git a/arch/arm/mach-omap2/omap-secure.h b/arch/arm/mach-omap2/omap-secure.h
254 +index bae263fba640..c509cde71f93 100644
255 +--- a/arch/arm/mach-omap2/omap-secure.h
256 ++++ b/arch/arm/mach-omap2/omap-secure.h
257 +@@ -31,6 +31,8 @@
258 + /* Maximum Secure memory storage size */
259 + #define OMAP_SECURE_RAM_STORAGE (88 * SZ_1K)
260 +
261 ++#define OMAP3_SAVE_SECURE_RAM_SZ 0x803F
262 ++
263 + /* Secure low power HAL API index */
264 + #define OMAP4_HAL_SAVESECURERAM_INDEX 0x1a
265 + #define OMAP4_HAL_SAVEHW_INDEX 0x1b
266 +@@ -65,6 +67,8 @@ extern u32 omap_smc2(u32 id, u32 falg, u32 pargs);
267 + extern u32 omap_smc3(u32 id, u32 process, u32 flag, u32 pargs);
268 + extern phys_addr_t omap_secure_ram_mempool_base(void);
269 + extern int omap_secure_ram_reserve_memblock(void);
270 ++extern u32 save_secure_ram_context(u32 args_pa);
271 ++extern u32 omap3_save_secure_ram(void __iomem *save_regs, int size);
272 +
273 + extern u32 rx51_secure_dispatcher(u32 idx, u32 process, u32 flag, u32 nargs,
274 + u32 arg1, u32 arg2, u32 arg3, u32 arg4);
275 +diff --git a/arch/arm/mach-omap2/pm.h b/arch/arm/mach-omap2/pm.h
276 +index b668719b9b25..8e30772cfe32 100644
277 +--- a/arch/arm/mach-omap2/pm.h
278 ++++ b/arch/arm/mach-omap2/pm.h
279 +@@ -81,10 +81,6 @@ extern unsigned int omap3_do_wfi_sz;
280 + /* ... and its pointer from SRAM after copy */
281 + extern void (*omap3_do_wfi_sram)(void);
282 +
283 +-/* save_secure_ram_context function pointer and size, for copy to SRAM */
284 +-extern int save_secure_ram_context(u32 *addr);
285 +-extern unsigned int save_secure_ram_context_sz;
286 +-
287 + extern void omap3_save_scratchpad_contents(void);
288 +
289 + #define PM_RTA_ERRATUM_i608 (1 << 0)
290 +diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
291 +index d44e0e2f1106..3836958074ac 100644
292 +--- a/arch/arm/mach-omap2/pm34xx.c
293 ++++ b/arch/arm/mach-omap2/pm34xx.c
294 +@@ -48,6 +48,7 @@
295 + #include "prm3xxx.h"
296 + #include "pm.h"
297 + #include "sdrc.h"
298 ++#include "omap-secure.h"
299 + #include "sram.h"
300 + #include "control.h"
301 + #include "vc.h"
302 +@@ -66,7 +67,6 @@ struct power_state {
303 +
304 + static LIST_HEAD(pwrst_list);
305 +
306 +-static int (*_omap_save_secure_sram)(u32 *addr);
307 + void (*omap3_do_wfi_sram)(void);
308 +
309 + static struct powerdomain *mpu_pwrdm, *neon_pwrdm;
310 +@@ -121,8 +121,8 @@ static void omap3_save_secure_ram_context(void)
311 + * will hang the system.
312 + */
313 + pwrdm_set_next_pwrst(mpu_pwrdm, PWRDM_POWER_ON);
314 +- ret = _omap_save_secure_sram((u32 *)(unsigned long)
315 +- __pa(omap3_secure_ram_storage));
316 ++ ret = omap3_save_secure_ram(omap3_secure_ram_storage,
317 ++ OMAP3_SAVE_SECURE_RAM_SZ);
318 + pwrdm_set_next_pwrst(mpu_pwrdm, mpu_next_state);
319 + /* Following is for error tracking, it should not happen */
320 + if (ret) {
321 +@@ -434,15 +434,10 @@ static int __init pwrdms_setup(struct powerdomain *pwrdm, void *unused)
322 + *
323 + * The minimum set of functions is pushed to SRAM for execution:
324 + * - omap3_do_wfi for erratum i581 WA,
325 +- * - save_secure_ram_context for security extensions.
326 + */
327 + void omap_push_sram_idle(void)
328 + {
329 + omap3_do_wfi_sram = omap_sram_push(omap3_do_wfi, omap3_do_wfi_sz);
330 +-
331 +- if (omap_type() != OMAP2_DEVICE_TYPE_GP)
332 +- _omap_save_secure_sram = omap_sram_push(save_secure_ram_context,
333 +- save_secure_ram_context_sz);
334 + }
335 +
336 + static void __init pm_errata_configure(void)
337 +@@ -554,7 +549,7 @@ int __init omap3_pm_init(void)
338 + clkdm_add_wkdep(neon_clkdm, mpu_clkdm);
339 + if (omap_type() != OMAP2_DEVICE_TYPE_GP) {
340 + omap3_secure_ram_storage =
341 +- kmalloc(0x803F, GFP_KERNEL);
342 ++ kmalloc(OMAP3_SAVE_SECURE_RAM_SZ, GFP_KERNEL);
343 + if (!omap3_secure_ram_storage)
344 + pr_err("Memory allocation failed when allocating for secure sram context\n");
345 +
346 +diff --git a/arch/arm/mach-omap2/prm33xx.c b/arch/arm/mach-omap2/prm33xx.c
347 +index dcb5001d77da..973bcd754e1c 100644
348 +--- a/arch/arm/mach-omap2/prm33xx.c
349 ++++ b/arch/arm/mach-omap2/prm33xx.c
350 +@@ -176,17 +176,6 @@ static int am33xx_pwrdm_read_pwrst(struct powerdomain *pwrdm)
351 + return v;
352 + }
353 +
354 +-static int am33xx_pwrdm_read_prev_pwrst(struct powerdomain *pwrdm)
355 +-{
356 +- u32 v;
357 +-
358 +- v = am33xx_prm_read_reg(pwrdm->prcm_offs, pwrdm->pwrstst_offs);
359 +- v &= AM33XX_LASTPOWERSTATEENTERED_MASK;
360 +- v >>= AM33XX_LASTPOWERSTATEENTERED_SHIFT;
361 +-
362 +- return v;
363 +-}
364 +-
365 + static int am33xx_pwrdm_set_lowpwrstchange(struct powerdomain *pwrdm)
366 + {
367 + am33xx_prm_rmw_reg_bits(AM33XX_LOWPOWERSTATECHANGE_MASK,
368 +@@ -357,7 +346,6 @@ struct pwrdm_ops am33xx_pwrdm_operations = {
369 + .pwrdm_set_next_pwrst = am33xx_pwrdm_set_next_pwrst,
370 + .pwrdm_read_next_pwrst = am33xx_pwrdm_read_next_pwrst,
371 + .pwrdm_read_pwrst = am33xx_pwrdm_read_pwrst,
372 +- .pwrdm_read_prev_pwrst = am33xx_pwrdm_read_prev_pwrst,
373 + .pwrdm_set_logic_retst = am33xx_pwrdm_set_logic_retst,
374 + .pwrdm_read_logic_pwrst = am33xx_pwrdm_read_logic_pwrst,
375 + .pwrdm_read_logic_retst = am33xx_pwrdm_read_logic_retst,
376 +diff --git a/arch/arm/mach-omap2/sleep34xx.S b/arch/arm/mach-omap2/sleep34xx.S
377 +index 1b9f0520dea9..3e0d802c59da 100644
378 +--- a/arch/arm/mach-omap2/sleep34xx.S
379 ++++ b/arch/arm/mach-omap2/sleep34xx.S
380 +@@ -93,20 +93,13 @@ ENTRY(enable_omap3630_toggle_l2_on_restore)
381 + ENDPROC(enable_omap3630_toggle_l2_on_restore)
382 +
383 + /*
384 +- * Function to call rom code to save secure ram context. This gets
385 +- * relocated to SRAM, so it can be all in .data section. Otherwise
386 +- * we need to initialize api_params separately.
387 ++ * Function to call rom code to save secure ram context.
388 ++ *
389 ++ * r0 = physical address of the parameters
390 + */
391 +- .data
392 +- .align 3
393 + ENTRY(save_secure_ram_context)
394 + stmfd sp!, {r4 - r11, lr} @ save registers on stack
395 +- adr r3, api_params @ r3 points to parameters
396 +- str r0, [r3,#0x4] @ r0 has sdram address
397 +- ldr r12, high_mask
398 +- and r3, r3, r12
399 +- ldr r12, sram_phy_addr_mask
400 +- orr r3, r3, r12
401 ++ mov r3, r0 @ physical address of parameters
402 + mov r0, #25 @ set service ID for PPA
403 + mov r12, r0 @ copy secure service ID in r12
404 + mov r1, #0 @ set task id for ROM code in r1
405 +@@ -120,18 +113,7 @@ ENTRY(save_secure_ram_context)
406 + nop
407 + nop
408 + ldmfd sp!, {r4 - r11, pc}
409 +- .align
410 +-sram_phy_addr_mask:
411 +- .word SRAM_BASE_P
412 +-high_mask:
413 +- .word 0xffff
414 +-api_params:
415 +- .word 0x4, 0x0, 0x0, 0x1, 0x1
416 + ENDPROC(save_secure_ram_context)
417 +-ENTRY(save_secure_ram_context_sz)
418 +- .word . - save_secure_ram_context
419 +-
420 +- .text
421 +
422 + /*
423 + * ======================
424 +diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
425 +index cf57a7799a0f..7769c2e27788 100644
426 +--- a/arch/arm64/Kconfig
427 ++++ b/arch/arm64/Kconfig
428 +@@ -1007,7 +1007,7 @@ source "fs/Kconfig.binfmt"
429 + config COMPAT
430 + bool "Kernel support for 32-bit EL0"
431 + depends on ARM64_4K_PAGES || EXPERT
432 +- select COMPAT_BINFMT_ELF
433 ++ select COMPAT_BINFMT_ELF if BINFMT_ELF
434 + select HAVE_UID16
435 + select OLD_SIGSUSPEND3
436 + select COMPAT_OLD_SIGACTION
437 +diff --git a/arch/arm64/Kconfig.platforms b/arch/arm64/Kconfig.platforms
438 +index 101794f5ce10..08a4497f70a6 100644
439 +--- a/arch/arm64/Kconfig.platforms
440 ++++ b/arch/arm64/Kconfig.platforms
441 +@@ -2,9 +2,11 @@ menu "Platform selection"
442 +
443 + config ARCH_SUNXI
444 + bool "Allwinner sunxi 64-bit SoC Family"
445 ++ select ARCH_HAS_RESET_CONTROLLER
446 + select GENERIC_IRQ_CHIP
447 + select PINCTRL
448 + select PINCTRL_SUN50I_A64
449 ++ select RESET_CONTROLLER
450 + help
451 + This enables support for Allwinner sunxi based SoCs like the A64.
452 +
453 +diff --git a/arch/arm64/boot/dts/mediatek/mt8173.dtsi b/arch/arm64/boot/dts/mediatek/mt8173.dtsi
454 +index 6c03c1702bb3..b307d6b6357e 100644
455 +--- a/arch/arm64/boot/dts/mediatek/mt8173.dtsi
456 ++++ b/arch/arm64/boot/dts/mediatek/mt8173.dtsi
457 +@@ -73,6 +73,7 @@
458 + reg = <0x000>;
459 + enable-method = "psci";
460 + cpu-idle-states = <&CPU_SLEEP_0>;
461 ++ #cooling-cells = <2>;
462 + };
463 +
464 + cpu1: cpu@1 {
465 +@@ -89,6 +90,7 @@
466 + reg = <0x100>;
467 + enable-method = "psci";
468 + cpu-idle-states = <&CPU_SLEEP_0>;
469 ++ #cooling-cells = <2>;
470 + };
471 +
472 + cpu3: cpu@101 {
473 +diff --git a/arch/arm64/crypto/crc32-arm64.c b/arch/arm64/crypto/crc32-arm64.c
474 +index 6a37c3c6b11d..3ec568afd1d3 100644
475 +--- a/arch/arm64/crypto/crc32-arm64.c
476 ++++ b/arch/arm64/crypto/crc32-arm64.c
477 +@@ -232,6 +232,7 @@ static struct shash_alg crc32_alg = {
478 + .cra_name = "crc32",
479 + .cra_driver_name = "crc32-arm64-hw",
480 + .cra_priority = 300,
481 ++ .cra_flags = CRYPTO_ALG_OPTIONAL_KEY,
482 + .cra_blocksize = CHKSUM_BLOCK_SIZE,
483 + .cra_alignmask = 0,
484 + .cra_ctxsize = sizeof(struct chksum_ctx),
485 +@@ -253,6 +254,7 @@ static struct shash_alg crc32c_alg = {
486 + .cra_name = "crc32c",
487 + .cra_driver_name = "crc32c-arm64-hw",
488 + .cra_priority = 300,
489 ++ .cra_flags = CRYPTO_ALG_OPTIONAL_KEY,
490 + .cra_blocksize = CHKSUM_BLOCK_SIZE,
491 + .cra_alignmask = 0,
492 + .cra_ctxsize = sizeof(struct chksum_ctx),
493 +diff --git a/arch/arm64/include/asm/bug.h b/arch/arm64/include/asm/bug.h
494 +index 561190d15881..0bfe1df12b19 100644
495 +--- a/arch/arm64/include/asm/bug.h
496 ++++ b/arch/arm64/include/asm/bug.h
497 +@@ -20,9 +20,6 @@
498 +
499 + #include <asm/brk-imm.h>
500 +
501 +-#ifdef CONFIG_GENERIC_BUG
502 +-#define HAVE_ARCH_BUG
503 +-
504 + #ifdef CONFIG_DEBUG_BUGVERBOSE
505 + #define _BUGVERBOSE_LOCATION(file, line) __BUGVERBOSE_LOCATION(file, line)
506 + #define __BUGVERBOSE_LOCATION(file, line) \
507 +@@ -36,28 +33,36 @@
508 + #define _BUGVERBOSE_LOCATION(file, line)
509 + #endif
510 +
511 +-#define _BUG_FLAGS(flags) __BUG_FLAGS(flags)
512 ++#ifdef CONFIG_GENERIC_BUG
513 +
514 +-#define __BUG_FLAGS(flags) asm volatile ( \
515 ++#define __BUG_ENTRY(flags) \
516 + ".pushsection __bug_table,\"a\"\n\t" \
517 + ".align 2\n\t" \
518 + "0: .long 1f - 0b\n\t" \
519 + _BUGVERBOSE_LOCATION(__FILE__, __LINE__) \
520 + ".short " #flags "\n\t" \
521 + ".popsection\n" \
522 +- \
523 +- "1: brk %[imm]" \
524 +- :: [imm] "i" (BUG_BRK_IMM) \
525 +-)
526 ++ "1: "
527 ++#else
528 ++#define __BUG_ENTRY(flags) ""
529 ++#endif
530 ++
531 ++#define __BUG_FLAGS(flags) \
532 ++ asm volatile ( \
533 ++ __BUG_ENTRY(flags) \
534 ++ "brk %[imm]" :: [imm] "i" (BUG_BRK_IMM) \
535 ++ );
536 +
537 +-#define BUG() do { \
538 +- _BUG_FLAGS(0); \
539 +- unreachable(); \
540 ++
541 ++#define BUG() do { \
542 ++ __BUG_FLAGS(0); \
543 ++ unreachable(); \
544 + } while (0)
545 +
546 +-#define __WARN_TAINT(taint) _BUG_FLAGS(BUGFLAG_TAINT(taint))
547 ++#define __WARN_TAINT(taint) \
548 ++ __BUG_FLAGS(BUGFLAG_TAINT(taint))
549 +
550 +-#endif /* ! CONFIG_GENERIC_BUG */
551 ++#define HAVE_ARCH_BUG
552 +
553 + #include <asm-generic/bug.h>
554 +
555 +diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
556 +index 05615a3fdc6f..d5cc6d73c2c4 100644
557 +--- a/arch/arm64/mm/mmu.c
558 ++++ b/arch/arm64/mm/mmu.c
559 +@@ -479,7 +479,7 @@ void __init paging_init(void)
560 + * To do this we need to go via a temporary pgd.
561 + */
562 + cpu_replace_ttbr1(__va(pgd_phys));
563 +- memcpy(swapper_pg_dir, pgd, PAGE_SIZE);
564 ++ memcpy(swapper_pg_dir, pgd, PGD_SIZE);
565 + cpu_replace_ttbr1(swapper_pg_dir);
566 +
567 + pgd_clear_fixmap();
568 +diff --git a/arch/m68k/kernel/vmlinux-nommu.lds b/arch/m68k/kernel/vmlinux-nommu.lds
569 +index d2c8abf1c8c4..e958abe0f51e 100644
570 +--- a/arch/m68k/kernel/vmlinux-nommu.lds
571 ++++ b/arch/m68k/kernel/vmlinux-nommu.lds
572 +@@ -44,6 +44,8 @@ SECTIONS {
573 + .text : {
574 + HEAD_TEXT
575 + TEXT_TEXT
576 ++ IRQENTRY_TEXT
577 ++ SOFTIRQENTRY_TEXT
578 + SCHED_TEXT
579 + CPUIDLE_TEXT
580 + LOCK_TEXT
581 +diff --git a/arch/m68k/kernel/vmlinux-std.lds b/arch/m68k/kernel/vmlinux-std.lds
582 +index 5b5ce1e4d1ed..1656ae8a145d 100644
583 +--- a/arch/m68k/kernel/vmlinux-std.lds
584 ++++ b/arch/m68k/kernel/vmlinux-std.lds
585 +@@ -15,6 +15,8 @@ SECTIONS
586 + .text : {
587 + HEAD_TEXT
588 + TEXT_TEXT
589 ++ IRQENTRY_TEXT
590 ++ SOFTIRQENTRY_TEXT
591 + SCHED_TEXT
592 + CPUIDLE_TEXT
593 + LOCK_TEXT
594 +diff --git a/arch/m68k/kernel/vmlinux-sun3.lds b/arch/m68k/kernel/vmlinux-sun3.lds
595 +index fe5ea1974b16..07b9818b3176 100644
596 +--- a/arch/m68k/kernel/vmlinux-sun3.lds
597 ++++ b/arch/m68k/kernel/vmlinux-sun3.lds
598 +@@ -15,6 +15,8 @@ SECTIONS
599 + .text : {
600 + HEAD_TEXT
601 + TEXT_TEXT
602 ++ IRQENTRY_TEXT
603 ++ SOFTIRQENTRY_TEXT
604 + SCHED_TEXT
605 + CPUIDLE_TEXT
606 + LOCK_TEXT
607 +diff --git a/arch/powerpc/crypto/crc32c-vpmsum_glue.c b/arch/powerpc/crypto/crc32c-vpmsum_glue.c
608 +index f058e0c3e4d4..fd1d6c83f0c0 100644
609 +--- a/arch/powerpc/crypto/crc32c-vpmsum_glue.c
610 ++++ b/arch/powerpc/crypto/crc32c-vpmsum_glue.c
611 +@@ -141,6 +141,7 @@ static struct shash_alg alg = {
612 + .cra_name = "crc32c",
613 + .cra_driver_name = "crc32c-vpmsum",
614 + .cra_priority = 200,
615 ++ .cra_flags = CRYPTO_ALG_OPTIONAL_KEY,
616 + .cra_blocksize = CHKSUM_BLOCK_SIZE,
617 + .cra_ctxsize = sizeof(u32),
618 + .cra_module = THIS_MODULE,
619 +diff --git a/arch/powerpc/include/asm/exception-64s.h b/arch/powerpc/include/asm/exception-64s.h
620 +index cab6d2a46c41..903e76a9f158 100644
621 +--- a/arch/powerpc/include/asm/exception-64s.h
622 ++++ b/arch/powerpc/include/asm/exception-64s.h
623 +@@ -242,7 +242,7 @@ END_FTR_SECTION_NESTED(ftr,ftr,943)
624 + mtspr SPRN_##h##SRR0,r12; \
625 + mfspr r12,SPRN_##h##SRR1; /* and SRR1 */ \
626 + mtspr SPRN_##h##SRR1,r10; \
627 +- h##rfid; \
628 ++ h##RFI_TO_KERNEL; \
629 + b . /* prevent speculative execution */
630 + #define EXCEPTION_PROLOG_PSERIES_1(label, h) \
631 + __EXCEPTION_PROLOG_PSERIES_1(label, h)
632 +diff --git a/arch/powerpc/include/asm/paca.h b/arch/powerpc/include/asm/paca.h
633 +index ea43897183fd..c75ee2d886fc 100644
634 +--- a/arch/powerpc/include/asm/paca.h
635 ++++ b/arch/powerpc/include/asm/paca.h
636 +@@ -212,8 +212,7 @@ struct paca_struct {
637 + */
638 + u64 exrfi[13] __aligned(0x80);
639 + void *rfi_flush_fallback_area;
640 +- u64 l1d_flush_congruence;
641 +- u64 l1d_flush_sets;
642 ++ u64 l1d_flush_size;
643 + #endif
644 + };
645 +
646 +diff --git a/arch/powerpc/kernel/asm-offsets.c b/arch/powerpc/kernel/asm-offsets.c
647 +index 64bcbd580495..14fbbd9035ca 100644
648 +--- a/arch/powerpc/kernel/asm-offsets.c
649 ++++ b/arch/powerpc/kernel/asm-offsets.c
650 +@@ -242,8 +242,7 @@ int main(void)
651 + DEFINE(PACA_IN_MCE, offsetof(struct paca_struct, in_mce));
652 + DEFINE(PACA_RFI_FLUSH_FALLBACK_AREA, offsetof(struct paca_struct, rfi_flush_fallback_area));
653 + DEFINE(PACA_EXRFI, offsetof(struct paca_struct, exrfi));
654 +- DEFINE(PACA_L1D_FLUSH_CONGRUENCE, offsetof(struct paca_struct, l1d_flush_congruence));
655 +- DEFINE(PACA_L1D_FLUSH_SETS, offsetof(struct paca_struct, l1d_flush_sets));
656 ++ DEFINE(PACA_L1D_FLUSH_SIZE, offsetof(struct paca_struct, l1d_flush_size));
657 + #endif
658 + DEFINE(PACAHWCPUID, offsetof(struct paca_struct, hw_cpu_id));
659 + DEFINE(PACAKEXECSTATE, offsetof(struct paca_struct, kexec_state));
660 +diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S
661 +index 9121b9a35c8a..2dc52e6d2af4 100644
662 +--- a/arch/powerpc/kernel/entry_64.S
663 ++++ b/arch/powerpc/kernel/entry_64.S
664 +@@ -401,8 +401,7 @@ tabort_syscall:
665 + mtmsrd r10, 1
666 + mtspr SPRN_SRR0, r11
667 + mtspr SPRN_SRR1, r12
668 +-
669 +- rfid
670 ++ RFI_TO_USER
671 + b . /* prevent speculative execution */
672 + #endif
673 +
674 +@@ -1078,7 +1077,7 @@ _GLOBAL(enter_rtas)
675 +
676 + mtspr SPRN_SRR0,r5
677 + mtspr SPRN_SRR1,r6
678 +- rfid
679 ++ RFI_TO_KERNEL
680 + b . /* prevent speculative execution */
681 +
682 + rtas_return_loc:
683 +@@ -1103,7 +1102,7 @@ rtas_return_loc:
684 +
685 + mtspr SPRN_SRR0,r3
686 + mtspr SPRN_SRR1,r4
687 +- rfid
688 ++ RFI_TO_KERNEL
689 + b . /* prevent speculative execution */
690 +
691 + .align 3
692 +@@ -1174,7 +1173,7 @@ _GLOBAL(enter_prom)
693 + LOAD_REG_IMMEDIATE(r12, MSR_SF | MSR_ISF | MSR_LE)
694 + andc r11,r11,r12
695 + mtsrr1 r11
696 +- rfid
697 ++ RFI_TO_KERNEL
698 + #endif /* CONFIG_PPC_BOOK3E */
699 +
700 + 1: /* Return from OF */
701 +diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S
702 +index 96db6c3adebe..7614d1dd2c0b 100644
703 +--- a/arch/powerpc/kernel/exceptions-64s.S
704 ++++ b/arch/powerpc/kernel/exceptions-64s.S
705 +@@ -244,7 +244,7 @@ BEGIN_FTR_SECTION
706 + LOAD_HANDLER(r12, machine_check_handle_early)
707 + 1: mtspr SPRN_SRR0,r12
708 + mtspr SPRN_SRR1,r11
709 +- rfid
710 ++ RFI_TO_KERNEL
711 + b . /* prevent speculative execution */
712 + 2:
713 + /* Stack overflow. Stay on emergency stack and panic.
714 +@@ -280,7 +280,7 @@ machine_check_pSeries_0:
715 + mtspr SPRN_SRR0,r12
716 + mfspr r12,SPRN_SRR1
717 + mtspr SPRN_SRR1,r10
718 +- rfid
719 ++ RFI_TO_KERNEL
720 + b . /* prevent speculative execution */
721 +
722 + TRAMP_KVM_SKIP(PACA_EXMC, 0x200)
723 +@@ -446,7 +446,7 @@ EXC_COMMON_BEGIN(machine_check_handle_early)
724 + li r3,MSR_ME
725 + andc r10,r10,r3 /* Turn off MSR_ME */
726 + mtspr SPRN_SRR1,r10
727 +- rfid
728 ++ RFI_TO_KERNEL
729 + b .
730 + 2:
731 + /*
732 +@@ -464,7 +464,7 @@ EXC_COMMON_BEGIN(machine_check_handle_early)
733 + */
734 + bl machine_check_queue_event
735 + MACHINE_CHECK_HANDLER_WINDUP
736 +- rfid
737 ++ RFI_TO_USER_OR_KERNEL
738 + 9:
739 + /* Deliver the machine check to host kernel in V mode. */
740 + MACHINE_CHECK_HANDLER_WINDUP
741 +@@ -680,6 +680,7 @@ END_MMU_FTR_SECTION_IFCLR(MMU_FTR_TYPE_RADIX)
742 + .machine push
743 + .machine "power4"
744 + mtcrf 0x80,r9
745 ++ mtcrf 0x02,r9 /* I/D indication is in cr6 */
746 + mtcrf 0x01,r9 /* slb_allocate uses cr0 and cr7 */
747 + .machine pop
748 +
749 +@@ -705,7 +706,7 @@ END_MMU_FTR_SECTION_IFCLR(MMU_FTR_TYPE_RADIX)
750 + mtspr SPRN_SRR0,r10
751 + ld r10,PACAKMSR(r13)
752 + mtspr SPRN_SRR1,r10
753 +- rfid
754 ++ RFI_TO_KERNEL
755 + b .
756 +
757 + EXC_COMMON_BEGIN(unrecov_slb)
758 +@@ -892,7 +893,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_REAL_LE) \
759 + mtspr SPRN_SRR0,r10 ; \
760 + ld r10,PACAKMSR(r13) ; \
761 + mtspr SPRN_SRR1,r10 ; \
762 +- rfid ; \
763 ++ RFI_TO_KERNEL ; \
764 + b . ; /* prevent speculative execution */
765 +
766 + #define SYSCALL_PSERIES_3 \
767 +@@ -900,7 +901,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_REAL_LE) \
768 + 1: mfspr r12,SPRN_SRR1 ; \
769 + xori r12,r12,MSR_LE ; \
770 + mtspr SPRN_SRR1,r12 ; \
771 +- rfid ; /* return to userspace */ \
772 ++ RFI_TO_USER ; /* return to userspace */ \
773 + b . ; /* prevent speculative execution */
774 +
775 + #if defined(CONFIG_RELOCATABLE)
776 +@@ -1275,7 +1276,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_CFAR)
777 + ld r11,PACA_EXGEN+EX_R11(r13)
778 + ld r12,PACA_EXGEN+EX_R12(r13)
779 + ld r13,PACA_EXGEN+EX_R13(r13)
780 +- HRFID
781 ++ HRFI_TO_UNKNOWN
782 + b .
783 + #endif
784 +
785 +@@ -1349,7 +1350,7 @@ masked_##_H##interrupt: \
786 + ld r10,PACA_EXGEN+EX_R10(r13); \
787 + ld r11,PACA_EXGEN+EX_R11(r13); \
788 + GET_SCRATCH0(r13); \
789 +- ##_H##rfid; \
790 ++ ##_H##RFI_TO_KERNEL; \
791 + b .
792 +
793 + /*
794 +@@ -1371,7 +1372,7 @@ TRAMP_REAL_BEGIN(kvmppc_skip_interrupt)
795 + addi r13, r13, 4
796 + mtspr SPRN_SRR0, r13
797 + GET_SCRATCH0(r13)
798 +- rfid
799 ++ RFI_TO_KERNEL
800 + b .
801 +
802 + TRAMP_REAL_BEGIN(kvmppc_skip_Hinterrupt)
803 +@@ -1383,7 +1384,7 @@ TRAMP_REAL_BEGIN(kvmppc_skip_Hinterrupt)
804 + addi r13, r13, 4
805 + mtspr SPRN_HSRR0, r13
806 + GET_SCRATCH0(r13)
807 +- hrfid
808 ++ HRFI_TO_KERNEL
809 + b .
810 + #endif
811 +
812 +@@ -1601,39 +1602,37 @@ rfi_flush_fallback:
813 + std r9,PACA_EXRFI+EX_R9(r13)
814 + std r10,PACA_EXRFI+EX_R10(r13)
815 + std r11,PACA_EXRFI+EX_R11(r13)
816 +- std r12,PACA_EXRFI+EX_R12(r13)
817 +- std r8,PACA_EXRFI+EX_R13(r13)
818 + mfctr r9
819 + ld r10,PACA_RFI_FLUSH_FALLBACK_AREA(r13)
820 +- ld r11,PACA_L1D_FLUSH_SETS(r13)
821 +- ld r12,PACA_L1D_FLUSH_CONGRUENCE(r13)
822 +- /*
823 +- * The load adresses are at staggered offsets within cachelines,
824 +- * which suits some pipelines better (on others it should not
825 +- * hurt).
826 +- */
827 +- addi r12,r12,8
828 ++ ld r11,PACA_L1D_FLUSH_SIZE(r13)
829 ++ srdi r11,r11,(7 + 3) /* 128 byte lines, unrolled 8x */
830 + mtctr r11
831 + DCBT_STOP_ALL_STREAM_IDS(r11) /* Stop prefetch streams */
832 +
833 + /* order ld/st prior to dcbt stop all streams with flushing */
834 + sync
835 +-1: li r8,0
836 +- .rept 8 /* 8-way set associative */
837 +- ldx r11,r10,r8
838 +- add r8,r8,r12
839 +- xor r11,r11,r11 // Ensure r11 is 0 even if fallback area is not
840 +- add r8,r8,r11 // Add 0, this creates a dependency on the ldx
841 +- .endr
842 +- addi r10,r10,128 /* 128 byte cache line */
843 ++
844 ++ /*
845 ++ * The load adresses are at staggered offsets within cachelines,
846 ++ * which suits some pipelines better (on others it should not
847 ++ * hurt).
848 ++ */
849 ++1:
850 ++ ld r11,(0x80 + 8)*0(r10)
851 ++ ld r11,(0x80 + 8)*1(r10)
852 ++ ld r11,(0x80 + 8)*2(r10)
853 ++ ld r11,(0x80 + 8)*3(r10)
854 ++ ld r11,(0x80 + 8)*4(r10)
855 ++ ld r11,(0x80 + 8)*5(r10)
856 ++ ld r11,(0x80 + 8)*6(r10)
857 ++ ld r11,(0x80 + 8)*7(r10)
858 ++ addi r10,r10,0x80*8
859 + bdnz 1b
860 +
861 + mtctr r9
862 + ld r9,PACA_EXRFI+EX_R9(r13)
863 + ld r10,PACA_EXRFI+EX_R10(r13)
864 + ld r11,PACA_EXRFI+EX_R11(r13)
865 +- ld r12,PACA_EXRFI+EX_R12(r13)
866 +- ld r8,PACA_EXRFI+EX_R13(r13)
867 + GET_SCRATCH0(r13);
868 + rfid
869 +
870 +@@ -1644,39 +1643,37 @@ hrfi_flush_fallback:
871 + std r9,PACA_EXRFI+EX_R9(r13)
872 + std r10,PACA_EXRFI+EX_R10(r13)
873 + std r11,PACA_EXRFI+EX_R11(r13)
874 +- std r12,PACA_EXRFI+EX_R12(r13)
875 +- std r8,PACA_EXRFI+EX_R13(r13)
876 + mfctr r9
877 + ld r10,PACA_RFI_FLUSH_FALLBACK_AREA(r13)
878 +- ld r11,PACA_L1D_FLUSH_SETS(r13)
879 +- ld r12,PACA_L1D_FLUSH_CONGRUENCE(r13)
880 +- /*
881 +- * The load adresses are at staggered offsets within cachelines,
882 +- * which suits some pipelines better (on others it should not
883 +- * hurt).
884 +- */
885 +- addi r12,r12,8
886 ++ ld r11,PACA_L1D_FLUSH_SIZE(r13)
887 ++ srdi r11,r11,(7 + 3) /* 128 byte lines, unrolled 8x */
888 + mtctr r11
889 + DCBT_STOP_ALL_STREAM_IDS(r11) /* Stop prefetch streams */
890 +
891 + /* order ld/st prior to dcbt stop all streams with flushing */
892 + sync
893 +-1: li r8,0
894 +- .rept 8 /* 8-way set associative */
895 +- ldx r11,r10,r8
896 +- add r8,r8,r12
897 +- xor r11,r11,r11 // Ensure r11 is 0 even if fallback area is not
898 +- add r8,r8,r11 // Add 0, this creates a dependency on the ldx
899 +- .endr
900 +- addi r10,r10,128 /* 128 byte cache line */
901 ++
902 ++ /*
903 ++ * The load adresses are at staggered offsets within cachelines,
904 ++ * which suits some pipelines better (on others it should not
905 ++ * hurt).
906 ++ */
907 ++1:
908 ++ ld r11,(0x80 + 8)*0(r10)
909 ++ ld r11,(0x80 + 8)*1(r10)
910 ++ ld r11,(0x80 + 8)*2(r10)
911 ++ ld r11,(0x80 + 8)*3(r10)
912 ++ ld r11,(0x80 + 8)*4(r10)
913 ++ ld r11,(0x80 + 8)*5(r10)
914 ++ ld r11,(0x80 + 8)*6(r10)
915 ++ ld r11,(0x80 + 8)*7(r10)
916 ++ addi r10,r10,0x80*8
917 + bdnz 1b
918 +
919 + mtctr r9
920 + ld r9,PACA_EXRFI+EX_R9(r13)
921 + ld r10,PACA_EXRFI+EX_R10(r13)
922 + ld r11,PACA_EXRFI+EX_R11(r13)
923 +- ld r12,PACA_EXRFI+EX_R12(r13)
924 +- ld r8,PACA_EXRFI+EX_R13(r13)
925 + GET_SCRATCH0(r13);
926 + hrfid
927 +
928 +diff --git a/arch/powerpc/kernel/idle_book3s.S b/arch/powerpc/kernel/idle_book3s.S
929 +index b350ac5e3111..d92c95333435 100644
930 +--- a/arch/powerpc/kernel/idle_book3s.S
931 ++++ b/arch/powerpc/kernel/idle_book3s.S
932 +@@ -9,6 +9,7 @@
933 + */
934 +
935 + #include <linux/threads.h>
936 ++#include <asm/exception-64s.h>
937 + #include <asm/processor.h>
938 + #include <asm/page.h>
939 + #include <asm/cputable.h>
940 +@@ -178,7 +179,7 @@ _GLOBAL(pnv_powersave_common)
941 + mtmsrd r6, 1 /* clear RI before setting SRR0/1 */
942 + mtspr SPRN_SRR0, r5
943 + mtspr SPRN_SRR1, r7
944 +- rfid
945 ++ RFI_TO_KERNEL
946 +
947 + .globl pnv_enter_arch207_idle_mode
948 + pnv_enter_arch207_idle_mode:
949 +@@ -668,7 +669,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_HVMODE)
950 + mtcr r6
951 + mtspr SPRN_SRR1,r4
952 + mtspr SPRN_SRR0,r5
953 +- rfid
954 ++ RFI_TO_KERNEL
955 +
956 + /*
957 + * R3 here contains the value that will be returned to the caller
958 +@@ -689,4 +690,4 @@ END_FTR_SECTION_IFSET(CPU_FTR_HVMODE)
959 + mtcr r6
960 + mtspr SPRN_SRR1,r4
961 + mtspr SPRN_SRR0,r5
962 +- rfid
963 ++ RFI_TO_KERNEL
964 +diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c
965 +index 7c30a91c1f86..5243501d95ef 100644
966 +--- a/arch/powerpc/kernel/setup_64.c
967 ++++ b/arch/powerpc/kernel/setup_64.c
968 +@@ -745,19 +745,8 @@ static void init_fallback_flush(void)
969 + memset(l1d_flush_fallback_area, 0, l1d_size * 2);
970 +
971 + for_each_possible_cpu(cpu) {
972 +- /*
973 +- * The fallback flush is currently coded for 8-way
974 +- * associativity. Different associativity is possible, but it
975 +- * will be treated as 8-way and may not evict the lines as
976 +- * effectively.
977 +- *
978 +- * 128 byte lines are mandatory.
979 +- */
980 +- u64 c = l1d_size / 8;
981 +-
982 + paca[cpu].rfi_flush_fallback_area = l1d_flush_fallback_area;
983 +- paca[cpu].l1d_flush_congruence = c;
984 +- paca[cpu].l1d_flush_sets = c / 128;
985 ++ paca[cpu].l1d_flush_size = l1d_size;
986 + }
987 + }
988 +
989 +diff --git a/arch/powerpc/kvm/book3s_hv_rmhandlers.S b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
990 +index 0447a22a4df6..55fbc0c78721 100644
991 +--- a/arch/powerpc/kvm/book3s_hv_rmhandlers.S
992 ++++ b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
993 +@@ -65,7 +65,7 @@ _GLOBAL_TOC(kvmppc_hv_entry_trampoline)
994 + mtmsrd r0,1 /* clear RI in MSR */
995 + mtsrr0 r5
996 + mtsrr1 r6
997 +- RFI
998 ++ RFI_TO_KERNEL
999 +
1000 + kvmppc_call_hv_entry:
1001 + ld r4, HSTATE_KVM_VCPU(r13)
1002 +@@ -171,7 +171,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S)
1003 + mtsrr0 r8
1004 + mtsrr1 r7
1005 + beq cr1, 13f /* machine check */
1006 +- RFI
1007 ++ RFI_TO_KERNEL
1008 +
1009 + /* On POWER7, we have external interrupts set to use HSRR0/1 */
1010 + 11: mtspr SPRN_HSRR0, r8
1011 +@@ -1018,8 +1018,7 @@ BEGIN_FTR_SECTION
1012 + END_FTR_SECTION_IFSET(CPU_FTR_HAS_PPR)
1013 + ld r0, VCPU_GPR(R0)(r4)
1014 + ld r4, VCPU_GPR(R4)(r4)
1015 +-
1016 +- hrfid
1017 ++ HRFI_TO_GUEST
1018 + b .
1019 +
1020 + secondary_too_late:
1021 +diff --git a/arch/powerpc/kvm/book3s_rmhandlers.S b/arch/powerpc/kvm/book3s_rmhandlers.S
1022 +index 42a4b237df5f..34a5adeff084 100644
1023 +--- a/arch/powerpc/kvm/book3s_rmhandlers.S
1024 ++++ b/arch/powerpc/kvm/book3s_rmhandlers.S
1025 +@@ -46,6 +46,9 @@
1026 +
1027 + #define FUNC(name) name
1028 +
1029 ++#define RFI_TO_KERNEL RFI
1030 ++#define RFI_TO_GUEST RFI
1031 ++
1032 + .macro INTERRUPT_TRAMPOLINE intno
1033 +
1034 + .global kvmppc_trampoline_\intno
1035 +@@ -141,7 +144,7 @@ kvmppc_handler_skip_ins:
1036 + GET_SCRATCH0(r13)
1037 +
1038 + /* And get back into the code */
1039 +- RFI
1040 ++ RFI_TO_KERNEL
1041 + #endif
1042 +
1043 + /*
1044 +@@ -164,6 +167,6 @@ _GLOBAL_TOC(kvmppc_entry_trampoline)
1045 + ori r5, r5, MSR_EE
1046 + mtsrr0 r7
1047 + mtsrr1 r6
1048 +- RFI
1049 ++ RFI_TO_KERNEL
1050 +
1051 + #include "book3s_segment.S"
1052 +diff --git a/arch/powerpc/kvm/book3s_segment.S b/arch/powerpc/kvm/book3s_segment.S
1053 +index ca8f174289bb..7c982956d709 100644
1054 +--- a/arch/powerpc/kvm/book3s_segment.S
1055 ++++ b/arch/powerpc/kvm/book3s_segment.S
1056 +@@ -156,7 +156,7 @@ no_dcbz32_on:
1057 + PPC_LL r9, SVCPU_R9(r3)
1058 + PPC_LL r3, (SVCPU_R3)(r3)
1059 +
1060 +- RFI
1061 ++ RFI_TO_GUEST
1062 + kvmppc_handler_trampoline_enter_end:
1063 +
1064 +
1065 +@@ -389,5 +389,5 @@ END_FTR_SECTION_IFSET(CPU_FTR_HVMODE)
1066 + cmpwi r12, BOOK3S_INTERRUPT_DOORBELL
1067 + beqa BOOK3S_INTERRUPT_DOORBELL
1068 +
1069 +- RFI
1070 ++ RFI_TO_KERNEL
1071 + kvmppc_handler_trampoline_exit_end:
1072 +diff --git a/arch/powerpc/perf/core-book3s.c b/arch/powerpc/perf/core-book3s.c
1073 +index 083f92746951..bf949623de90 100644
1074 +--- a/arch/powerpc/perf/core-book3s.c
1075 ++++ b/arch/powerpc/perf/core-book3s.c
1076 +@@ -1381,7 +1381,7 @@ static int collect_events(struct perf_event *group, int max_count,
1077 + int n = 0;
1078 + struct perf_event *event;
1079 +
1080 +- if (!is_software_event(group)) {
1081 ++ if (group->pmu->task_ctx_nr == perf_hw_context) {
1082 + if (n >= max_count)
1083 + return -1;
1084 + ctrs[n] = group;
1085 +@@ -1389,7 +1389,7 @@ static int collect_events(struct perf_event *group, int max_count,
1086 + events[n++] = group->hw.config;
1087 + }
1088 + list_for_each_entry(event, &group->sibling_list, group_entry) {
1089 +- if (!is_software_event(event) &&
1090 ++ if (event->pmu->task_ctx_nr == perf_hw_context &&
1091 + event->state != PERF_EVENT_STATE_OFF) {
1092 + if (n >= max_count)
1093 + return -1;
1094 +diff --git a/arch/s390/crypto/crc32-vx.c b/arch/s390/crypto/crc32-vx.c
1095 +index 992e630c227b..6f4985f357c6 100644
1096 +--- a/arch/s390/crypto/crc32-vx.c
1097 ++++ b/arch/s390/crypto/crc32-vx.c
1098 +@@ -238,6 +238,7 @@ static struct shash_alg crc32_vx_algs[] = {
1099 + .cra_name = "crc32",
1100 + .cra_driver_name = "crc32-vx",
1101 + .cra_priority = 200,
1102 ++ .cra_flags = CRYPTO_ALG_OPTIONAL_KEY,
1103 + .cra_blocksize = CRC32_BLOCK_SIZE,
1104 + .cra_ctxsize = sizeof(struct crc_ctx),
1105 + .cra_module = THIS_MODULE,
1106 +@@ -258,6 +259,7 @@ static struct shash_alg crc32_vx_algs[] = {
1107 + .cra_name = "crc32be",
1108 + .cra_driver_name = "crc32be-vx",
1109 + .cra_priority = 200,
1110 ++ .cra_flags = CRYPTO_ALG_OPTIONAL_KEY,
1111 + .cra_blocksize = CRC32_BLOCK_SIZE,
1112 + .cra_ctxsize = sizeof(struct crc_ctx),
1113 + .cra_module = THIS_MODULE,
1114 +@@ -278,6 +280,7 @@ static struct shash_alg crc32_vx_algs[] = {
1115 + .cra_name = "crc32c",
1116 + .cra_driver_name = "crc32c-vx",
1117 + .cra_priority = 200,
1118 ++ .cra_flags = CRYPTO_ALG_OPTIONAL_KEY,
1119 + .cra_blocksize = CRC32_BLOCK_SIZE,
1120 + .cra_ctxsize = sizeof(struct crc_ctx),
1121 + .cra_module = THIS_MODULE,
1122 +diff --git a/arch/sparc/crypto/crc32c_glue.c b/arch/sparc/crypto/crc32c_glue.c
1123 +index d1064e46efe8..8aa664638c3c 100644
1124 +--- a/arch/sparc/crypto/crc32c_glue.c
1125 ++++ b/arch/sparc/crypto/crc32c_glue.c
1126 +@@ -133,6 +133,7 @@ static struct shash_alg alg = {
1127 + .cra_name = "crc32c",
1128 + .cra_driver_name = "crc32c-sparc64",
1129 + .cra_priority = SPARC_CR_OPCODE_PRIORITY,
1130 ++ .cra_flags = CRYPTO_ALG_OPTIONAL_KEY,
1131 + .cra_blocksize = CHKSUM_BLOCK_SIZE,
1132 + .cra_ctxsize = sizeof(u32),
1133 + .cra_alignmask = 7,
1134 +diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
1135 +index 0ca4d12ce95c..a4ac7bab15f7 100644
1136 +--- a/arch/x86/Kconfig
1137 ++++ b/arch/x86/Kconfig
1138 +@@ -1057,7 +1057,7 @@ config X86_MCE_THRESHOLD
1139 + def_bool y
1140 +
1141 + config X86_MCE_INJECT
1142 +- depends on X86_MCE
1143 ++ depends on X86_MCE && X86_LOCAL_APIC
1144 + tristate "Machine check injector support"
1145 + ---help---
1146 + Provide support for injecting machine checks for testing purposes.
1147 +diff --git a/arch/x86/Kconfig.debug b/arch/x86/Kconfig.debug
1148 +index 67eec55093a5..4386440fe463 100644
1149 +--- a/arch/x86/Kconfig.debug
1150 ++++ b/arch/x86/Kconfig.debug
1151 +@@ -352,6 +352,7 @@ config X86_DEBUG_FPU
1152 +
1153 + config PUNIT_ATOM_DEBUG
1154 + tristate "ATOM Punit debug driver"
1155 ++ depends on PCI
1156 + select DEBUG_FS
1157 + select IOSF_MBI
1158 + ---help---
1159 +diff --git a/arch/x86/boot/Makefile b/arch/x86/boot/Makefile
1160 +index 12ea8f8384f4..3b7156f46bc1 100644
1161 +--- a/arch/x86/boot/Makefile
1162 ++++ b/arch/x86/boot/Makefile
1163 +@@ -73,12 +73,13 @@ UBSAN_SANITIZE := n
1164 + $(obj)/bzImage: asflags-y := $(SVGA_MODE)
1165 +
1166 + quiet_cmd_image = BUILD $@
1167 ++silent_redirect_image = >/dev/null
1168 + cmd_image = $(obj)/tools/build $(obj)/setup.bin $(obj)/vmlinux.bin \
1169 +- $(obj)/zoffset.h $@
1170 ++ $(obj)/zoffset.h $@ $($(quiet)redirect_image)
1171 +
1172 + $(obj)/bzImage: $(obj)/setup.bin $(obj)/vmlinux.bin $(obj)/tools/build FORCE
1173 + $(call if_changed,image)
1174 +- @echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
1175 ++ @$(kecho) 'Kernel: $@ is ready' ' (#'`cat .version`')'
1176 +
1177 + OBJCOPYFLAGS_vmlinux.bin := -O binary -R .note -R .comment -S
1178 + $(obj)/vmlinux.bin: $(obj)/compressed/vmlinux FORCE
1179 +diff --git a/arch/x86/crypto/crc32-pclmul_glue.c b/arch/x86/crypto/crc32-pclmul_glue.c
1180 +index 27226df3f7d8..c8d9cdacbf10 100644
1181 +--- a/arch/x86/crypto/crc32-pclmul_glue.c
1182 ++++ b/arch/x86/crypto/crc32-pclmul_glue.c
1183 +@@ -162,6 +162,7 @@ static struct shash_alg alg = {
1184 + .cra_name = "crc32",
1185 + .cra_driver_name = "crc32-pclmul",
1186 + .cra_priority = 200,
1187 ++ .cra_flags = CRYPTO_ALG_OPTIONAL_KEY,
1188 + .cra_blocksize = CHKSUM_BLOCK_SIZE,
1189 + .cra_ctxsize = sizeof(u32),
1190 + .cra_module = THIS_MODULE,
1191 +diff --git a/arch/x86/crypto/crc32c-intel_glue.c b/arch/x86/crypto/crc32c-intel_glue.c
1192 +index 0857b1a1de3b..60a391b8c4a2 100644
1193 +--- a/arch/x86/crypto/crc32c-intel_glue.c
1194 ++++ b/arch/x86/crypto/crc32c-intel_glue.c
1195 +@@ -239,6 +239,7 @@ static struct shash_alg alg = {
1196 + .cra_name = "crc32c",
1197 + .cra_driver_name = "crc32c-intel",
1198 + .cra_priority = 200,
1199 ++ .cra_flags = CRYPTO_ALG_OPTIONAL_KEY,
1200 + .cra_blocksize = CHKSUM_BLOCK_SIZE,
1201 + .cra_ctxsize = sizeof(u32),
1202 + .cra_module = THIS_MODULE,
1203 +diff --git a/arch/x86/crypto/twofish-x86_64-asm_64-3way.S b/arch/x86/crypto/twofish-x86_64-asm_64-3way.S
1204 +index 1c3b7ceb36d2..e7273a606a07 100644
1205 +--- a/arch/x86/crypto/twofish-x86_64-asm_64-3way.S
1206 ++++ b/arch/x86/crypto/twofish-x86_64-asm_64-3way.S
1207 +@@ -55,29 +55,31 @@
1208 + #define RAB1bl %bl
1209 + #define RAB2bl %cl
1210 +
1211 ++#define CD0 0x0(%rsp)
1212 ++#define CD1 0x8(%rsp)
1213 ++#define CD2 0x10(%rsp)
1214 ++
1215 ++# used only before/after all rounds
1216 + #define RCD0 %r8
1217 + #define RCD1 %r9
1218 + #define RCD2 %r10
1219 +
1220 +-#define RCD0d %r8d
1221 +-#define RCD1d %r9d
1222 +-#define RCD2d %r10d
1223 +-
1224 +-#define RX0 %rbp
1225 +-#define RX1 %r11
1226 +-#define RX2 %r12
1227 ++# used only during rounds
1228 ++#define RX0 %r8
1229 ++#define RX1 %r9
1230 ++#define RX2 %r10
1231 +
1232 +-#define RX0d %ebp
1233 +-#define RX1d %r11d
1234 +-#define RX2d %r12d
1235 ++#define RX0d %r8d
1236 ++#define RX1d %r9d
1237 ++#define RX2d %r10d
1238 +
1239 +-#define RY0 %r13
1240 +-#define RY1 %r14
1241 +-#define RY2 %r15
1242 ++#define RY0 %r11
1243 ++#define RY1 %r12
1244 ++#define RY2 %r13
1245 +
1246 +-#define RY0d %r13d
1247 +-#define RY1d %r14d
1248 +-#define RY2d %r15d
1249 ++#define RY0d %r11d
1250 ++#define RY1d %r12d
1251 ++#define RY2d %r13d
1252 +
1253 + #define RT0 %rdx
1254 + #define RT1 %rsi
1255 +@@ -85,6 +87,8 @@
1256 + #define RT0d %edx
1257 + #define RT1d %esi
1258 +
1259 ++#define RT1bl %sil
1260 ++
1261 + #define do16bit_ror(rot, op1, op2, T0, T1, tmp1, tmp2, ab, dst) \
1262 + movzbl ab ## bl, tmp2 ## d; \
1263 + movzbl ab ## bh, tmp1 ## d; \
1264 +@@ -92,6 +96,11 @@
1265 + op1##l T0(CTX, tmp2, 4), dst ## d; \
1266 + op2##l T1(CTX, tmp1, 4), dst ## d;
1267 +
1268 ++#define swap_ab_with_cd(ab, cd, tmp) \
1269 ++ movq cd, tmp; \
1270 ++ movq ab, cd; \
1271 ++ movq tmp, ab;
1272 ++
1273 + /*
1274 + * Combined G1 & G2 function. Reordered with help of rotates to have moves
1275 + * at begining.
1276 +@@ -110,15 +119,15 @@
1277 + /* G1,2 && G2,2 */ \
1278 + do16bit_ror(32, xor, xor, Tx2, Tx3, RT0, RT1, ab ## 0, x ## 0); \
1279 + do16bit_ror(16, xor, xor, Ty3, Ty0, RT0, RT1, ab ## 0, y ## 0); \
1280 +- xchgq cd ## 0, ab ## 0; \
1281 ++ swap_ab_with_cd(ab ## 0, cd ## 0, RT0); \
1282 + \
1283 + do16bit_ror(32, xor, xor, Tx2, Tx3, RT0, RT1, ab ## 1, x ## 1); \
1284 + do16bit_ror(16, xor, xor, Ty3, Ty0, RT0, RT1, ab ## 1, y ## 1); \
1285 +- xchgq cd ## 1, ab ## 1; \
1286 ++ swap_ab_with_cd(ab ## 1, cd ## 1, RT0); \
1287 + \
1288 + do16bit_ror(32, xor, xor, Tx2, Tx3, RT0, RT1, ab ## 2, x ## 2); \
1289 + do16bit_ror(16, xor, xor, Ty3, Ty0, RT0, RT1, ab ## 2, y ## 2); \
1290 +- xchgq cd ## 2, ab ## 2;
1291 ++ swap_ab_with_cd(ab ## 2, cd ## 2, RT0);
1292 +
1293 + #define enc_round_end(ab, x, y, n) \
1294 + addl y ## d, x ## d; \
1295 +@@ -168,6 +177,16 @@
1296 + decrypt_round3(ba, dc, (n*2)+1); \
1297 + decrypt_round3(ba, dc, (n*2));
1298 +
1299 ++#define push_cd() \
1300 ++ pushq RCD2; \
1301 ++ pushq RCD1; \
1302 ++ pushq RCD0;
1303 ++
1304 ++#define pop_cd() \
1305 ++ popq RCD0; \
1306 ++ popq RCD1; \
1307 ++ popq RCD2;
1308 ++
1309 + #define inpack3(in, n, xy, m) \
1310 + movq 4*(n)(in), xy ## 0; \
1311 + xorq w+4*m(CTX), xy ## 0; \
1312 +@@ -223,11 +242,8 @@ ENTRY(__twofish_enc_blk_3way)
1313 + * %rdx: src, RIO
1314 + * %rcx: bool, if true: xor output
1315 + */
1316 +- pushq %r15;
1317 +- pushq %r14;
1318 + pushq %r13;
1319 + pushq %r12;
1320 +- pushq %rbp;
1321 + pushq %rbx;
1322 +
1323 + pushq %rcx; /* bool xor */
1324 +@@ -235,40 +251,36 @@ ENTRY(__twofish_enc_blk_3way)
1325 +
1326 + inpack_enc3();
1327 +
1328 +- encrypt_cycle3(RAB, RCD, 0);
1329 +- encrypt_cycle3(RAB, RCD, 1);
1330 +- encrypt_cycle3(RAB, RCD, 2);
1331 +- encrypt_cycle3(RAB, RCD, 3);
1332 +- encrypt_cycle3(RAB, RCD, 4);
1333 +- encrypt_cycle3(RAB, RCD, 5);
1334 +- encrypt_cycle3(RAB, RCD, 6);
1335 +- encrypt_cycle3(RAB, RCD, 7);
1336 ++ push_cd();
1337 ++ encrypt_cycle3(RAB, CD, 0);
1338 ++ encrypt_cycle3(RAB, CD, 1);
1339 ++ encrypt_cycle3(RAB, CD, 2);
1340 ++ encrypt_cycle3(RAB, CD, 3);
1341 ++ encrypt_cycle3(RAB, CD, 4);
1342 ++ encrypt_cycle3(RAB, CD, 5);
1343 ++ encrypt_cycle3(RAB, CD, 6);
1344 ++ encrypt_cycle3(RAB, CD, 7);
1345 ++ pop_cd();
1346 +
1347 + popq RIO; /* dst */
1348 +- popq %rbp; /* bool xor */
1349 ++ popq RT1; /* bool xor */
1350 +
1351 +- testb %bpl, %bpl;
1352 ++ testb RT1bl, RT1bl;
1353 + jnz .L__enc_xor3;
1354 +
1355 + outunpack_enc3(mov);
1356 +
1357 + popq %rbx;
1358 +- popq %rbp;
1359 + popq %r12;
1360 + popq %r13;
1361 +- popq %r14;
1362 +- popq %r15;
1363 + ret;
1364 +
1365 + .L__enc_xor3:
1366 + outunpack_enc3(xor);
1367 +
1368 + popq %rbx;
1369 +- popq %rbp;
1370 + popq %r12;
1371 + popq %r13;
1372 +- popq %r14;
1373 +- popq %r15;
1374 + ret;
1375 + ENDPROC(__twofish_enc_blk_3way)
1376 +
1377 +@@ -278,35 +290,31 @@ ENTRY(twofish_dec_blk_3way)
1378 + * %rsi: dst
1379 + * %rdx: src, RIO
1380 + */
1381 +- pushq %r15;
1382 +- pushq %r14;
1383 + pushq %r13;
1384 + pushq %r12;
1385 +- pushq %rbp;
1386 + pushq %rbx;
1387 +
1388 + pushq %rsi; /* dst */
1389 +
1390 + inpack_dec3();
1391 +
1392 +- decrypt_cycle3(RAB, RCD, 7);
1393 +- decrypt_cycle3(RAB, RCD, 6);
1394 +- decrypt_cycle3(RAB, RCD, 5);
1395 +- decrypt_cycle3(RAB, RCD, 4);
1396 +- decrypt_cycle3(RAB, RCD, 3);
1397 +- decrypt_cycle3(RAB, RCD, 2);
1398 +- decrypt_cycle3(RAB, RCD, 1);
1399 +- decrypt_cycle3(RAB, RCD, 0);
1400 ++ push_cd();
1401 ++ decrypt_cycle3(RAB, CD, 7);
1402 ++ decrypt_cycle3(RAB, CD, 6);
1403 ++ decrypt_cycle3(RAB, CD, 5);
1404 ++ decrypt_cycle3(RAB, CD, 4);
1405 ++ decrypt_cycle3(RAB, CD, 3);
1406 ++ decrypt_cycle3(RAB, CD, 2);
1407 ++ decrypt_cycle3(RAB, CD, 1);
1408 ++ decrypt_cycle3(RAB, CD, 0);
1409 ++ pop_cd();
1410 +
1411 + popq RIO; /* dst */
1412 +
1413 + outunpack_dec3();
1414 +
1415 + popq %rbx;
1416 +- popq %rbp;
1417 + popq %r12;
1418 + popq %r13;
1419 +- popq %r14;
1420 +- popq %r15;
1421 + ret;
1422 + ENDPROC(twofish_dec_blk_3way)
1423 +diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c
1424 +index 9604b2574d6c..f73796db8758 100644
1425 +--- a/arch/x86/events/core.c
1426 ++++ b/arch/x86/events/core.c
1427 +@@ -190,8 +190,8 @@ static void release_pmc_hardware(void) {}
1428 +
1429 + static bool check_hw_exists(void)
1430 + {
1431 +- u64 val, val_fail, val_new= ~0;
1432 +- int i, reg, reg_fail, ret = 0;
1433 ++ u64 val, val_fail = -1, val_new= ~0;
1434 ++ int i, reg, reg_fail = -1, ret = 0;
1435 + int bios_fail = 0;
1436 + int reg_safe = -1;
1437 +
1438 +diff --git a/arch/x86/include/asm/microcode_amd.h b/arch/x86/include/asm/microcode_amd.h
1439 +index 15eb75484cc0..98ccbd1dbb01 100644
1440 +--- a/arch/x86/include/asm/microcode_amd.h
1441 ++++ b/arch/x86/include/asm/microcode_amd.h
1442 +@@ -59,7 +59,6 @@ static inline u16 find_equiv_id(struct equiv_cpu_entry *equiv_cpu_table,
1443 +
1444 + extern int __apply_microcode_amd(struct microcode_amd *mc_amd);
1445 + extern int apply_microcode_amd(int cpu);
1446 +-extern enum ucode_state load_microcode_amd(int cpu, u8 family, const u8 *data, size_t size);
1447 +
1448 + #define PATCH_MAX_SIZE PAGE_SIZE
1449 +
1450 +diff --git a/arch/x86/include/asm/vmx.h b/arch/x86/include/asm/vmx.h
1451 +index a002b07a7099..6899cf187ba2 100644
1452 +--- a/arch/x86/include/asm/vmx.h
1453 ++++ b/arch/x86/include/asm/vmx.h
1454 +@@ -399,10 +399,11 @@ enum vmcs_field {
1455 + #define IDENTITY_PAGETABLE_PRIVATE_MEMSLOT (KVM_USER_MEM_SLOTS + 2)
1456 +
1457 + #define VMX_NR_VPIDS (1 << 16)
1458 ++#define VMX_VPID_EXTENT_INDIVIDUAL_ADDR 0
1459 + #define VMX_VPID_EXTENT_SINGLE_CONTEXT 1
1460 + #define VMX_VPID_EXTENT_ALL_CONTEXT 2
1461 ++#define VMX_VPID_EXTENT_SINGLE_NON_GLOBAL 3
1462 +
1463 +-#define VMX_EPT_EXTENT_INDIVIDUAL_ADDR 0
1464 + #define VMX_EPT_EXTENT_CONTEXT 1
1465 + #define VMX_EPT_EXTENT_GLOBAL 2
1466 + #define VMX_EPT_EXTENT_SHIFT 24
1467 +@@ -419,8 +420,10 @@ enum vmcs_field {
1468 + #define VMX_EPT_EXTENT_GLOBAL_BIT (1ull << 26)
1469 +
1470 + #define VMX_VPID_INVVPID_BIT (1ull << 0) /* (32 - 32) */
1471 ++#define VMX_VPID_EXTENT_INDIVIDUAL_ADDR_BIT (1ull << 8) /* (40 - 32) */
1472 + #define VMX_VPID_EXTENT_SINGLE_CONTEXT_BIT (1ull << 9) /* (41 - 32) */
1473 + #define VMX_VPID_EXTENT_GLOBAL_CONTEXT_BIT (1ull << 10) /* (42 - 32) */
1474 ++#define VMX_VPID_EXTENT_SINGLE_NON_GLOBAL_BIT (1ull << 11) /* (43 - 32) */
1475 +
1476 + #define VMX_EPT_DEFAULT_GAW 3
1477 + #define VMX_EPT_MAX_GAW 0x4
1478 +diff --git a/arch/x86/kernel/cpu/mcheck/mce-inject.c b/arch/x86/kernel/cpu/mcheck/mce-inject.c
1479 +index 517619ea6498..99165b206df3 100644
1480 +--- a/arch/x86/kernel/cpu/mcheck/mce-inject.c
1481 ++++ b/arch/x86/kernel/cpu/mcheck/mce-inject.c
1482 +@@ -152,7 +152,6 @@ static void raise_mce(struct mce *m)
1483 + if (context == MCJ_CTX_RANDOM)
1484 + return;
1485 +
1486 +-#ifdef CONFIG_X86_LOCAL_APIC
1487 + if (m->inject_flags & (MCJ_IRQ_BROADCAST | MCJ_NMI_BROADCAST)) {
1488 + unsigned long start;
1489 + int cpu;
1490 +@@ -192,9 +191,7 @@ static void raise_mce(struct mce *m)
1491 + raise_local();
1492 + put_cpu();
1493 + put_online_cpus();
1494 +- } else
1495 +-#endif
1496 +- {
1497 ++ } else {
1498 + preempt_disable();
1499 + raise_local();
1500 + preempt_enable();
1501 +diff --git a/arch/x86/kernel/cpu/microcode/amd.c b/arch/x86/kernel/cpu/microcode/amd.c
1502 +index b74bb29db6b9..732bb03fcf91 100644
1503 +--- a/arch/x86/kernel/cpu/microcode/amd.c
1504 ++++ b/arch/x86/kernel/cpu/microcode/amd.c
1505 +@@ -135,6 +135,9 @@ static size_t compute_container_size(u8 *data, u32 total_size)
1506 + return size;
1507 + }
1508 +
1509 ++static enum ucode_state
1510 ++load_microcode_amd(bool save, u8 family, const u8 *data, size_t size);
1511 ++
1512 + /*
1513 + * Early load occurs before we can vmalloc(). So we look for the microcode
1514 + * patch container file in initrd, traverse equivalent cpu table, look for a
1515 +@@ -451,7 +454,7 @@ int __init save_microcode_in_initrd_amd(void)
1516 + eax = cpuid_eax(0x00000001);
1517 + eax = ((eax >> 8) & 0xf) + ((eax >> 20) & 0xff);
1518 +
1519 +- ret = load_microcode_amd(smp_processor_id(), eax, container, container_size);
1520 ++ ret = load_microcode_amd(true, eax, container, container_size);
1521 + if (ret != UCODE_OK)
1522 + retval = -EINVAL;
1523 +
1524 +@@ -864,7 +867,8 @@ static enum ucode_state __load_microcode_amd(u8 family, const u8 *data,
1525 + return UCODE_OK;
1526 + }
1527 +
1528 +-enum ucode_state load_microcode_amd(int cpu, u8 family, const u8 *data, size_t size)
1529 ++static enum ucode_state
1530 ++load_microcode_amd(bool save, u8 family, const u8 *data, size_t size)
1531 + {
1532 + enum ucode_state ret;
1533 +
1534 +@@ -878,8 +882,8 @@ enum ucode_state load_microcode_amd(int cpu, u8 family, const u8 *data, size_t s
1535 +
1536 + #ifdef CONFIG_X86_32
1537 + /* save BSP's matching patch for early load */
1538 +- if (cpu_data(cpu).cpu_index == boot_cpu_data.cpu_index) {
1539 +- struct ucode_patch *p = find_patch(cpu);
1540 ++ if (save) {
1541 ++ struct ucode_patch *p = find_patch(0);
1542 + if (p) {
1543 + memset(amd_ucode_patch, 0, PATCH_MAX_SIZE);
1544 + memcpy(amd_ucode_patch, p->data, min_t(u32, ksize(p->data),
1545 +@@ -911,11 +915,12 @@ static enum ucode_state request_microcode_amd(int cpu, struct device *device,
1546 + {
1547 + char fw_name[36] = "amd-ucode/microcode_amd.bin";
1548 + struct cpuinfo_x86 *c = &cpu_data(cpu);
1549 ++ bool bsp = c->cpu_index == boot_cpu_data.cpu_index;
1550 + enum ucode_state ret = UCODE_NFOUND;
1551 + const struct firmware *fw;
1552 +
1553 + /* reload ucode container only on the boot cpu */
1554 +- if (!refresh_fw || c->cpu_index != boot_cpu_data.cpu_index)
1555 ++ if (!refresh_fw || !bsp)
1556 + return UCODE_OK;
1557 +
1558 + if (c->x86 >= 0x15)
1559 +@@ -932,7 +937,7 @@ static enum ucode_state request_microcode_amd(int cpu, struct device *device,
1560 + goto fw_release;
1561 + }
1562 +
1563 +- ret = load_microcode_amd(cpu, c->x86, fw->data, fw->size);
1564 ++ ret = load_microcode_amd(bsp, c->x86, fw->data, fw->size);
1565 +
1566 + fw_release:
1567 + release_firmware(fw);
1568 +diff --git a/arch/x86/kernel/vm86_32.c b/arch/x86/kernel/vm86_32.c
1569 +index 4b3012888ada..8a1d63591399 100644
1570 +--- a/arch/x86/kernel/vm86_32.c
1571 ++++ b/arch/x86/kernel/vm86_32.c
1572 +@@ -160,11 +160,12 @@ void save_v86_state(struct kernel_vm86_regs *regs, int retval)
1573 +
1574 + static void mark_screen_rdonly(struct mm_struct *mm)
1575 + {
1576 ++ struct vm_area_struct *vma;
1577 ++ spinlock_t *ptl;
1578 + pgd_t *pgd;
1579 + pud_t *pud;
1580 + pmd_t *pmd;
1581 + pte_t *pte;
1582 +- spinlock_t *ptl;
1583 + int i;
1584 +
1585 + down_write(&mm->mmap_sem);
1586 +@@ -177,7 +178,7 @@ static void mark_screen_rdonly(struct mm_struct *mm)
1587 + pmd = pmd_offset(pud, 0xA0000);
1588 +
1589 + if (pmd_trans_huge(*pmd)) {
1590 +- struct vm_area_struct *vma = find_vma(mm, 0xA0000);
1591 ++ vma = find_vma(mm, 0xA0000);
1592 + split_huge_pmd(vma, pmd, 0xA0000);
1593 + }
1594 + if (pmd_none_or_clear_bad(pmd))
1595 +diff --git a/arch/x86/kvm/Kconfig b/arch/x86/kvm/Kconfig
1596 +index ab8e32f7b9a8..9150e09773cb 100644
1597 +--- a/arch/x86/kvm/Kconfig
1598 ++++ b/arch/x86/kvm/Kconfig
1599 +@@ -22,7 +22,8 @@ config KVM
1600 + depends on HAVE_KVM
1601 + depends on HIGH_RES_TIMERS
1602 + # for TASKSTATS/TASK_DELAY_ACCT:
1603 +- depends on NET
1604 ++ depends on NET && MULTIUSER
1605 ++ depends on X86_LOCAL_APIC
1606 + select PREEMPT_NOTIFIERS
1607 + select MMU_NOTIFIER
1608 + select ANON_INODES
1609 +diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
1610 +index 1e16821c1378..c51aaac953b4 100644
1611 +--- a/arch/x86/kvm/vmx.c
1612 ++++ b/arch/x86/kvm/vmx.c
1613 +@@ -142,6 +142,12 @@ module_param_named(preemption_timer, enable_preemption_timer, bool, S_IRUGO);
1614 +
1615 + #define VMX_MISC_EMULATED_PREEMPTION_TIMER_RATE 5
1616 +
1617 ++#define VMX_VPID_EXTENT_SUPPORTED_MASK \
1618 ++ (VMX_VPID_EXTENT_INDIVIDUAL_ADDR_BIT | \
1619 ++ VMX_VPID_EXTENT_SINGLE_CONTEXT_BIT | \
1620 ++ VMX_VPID_EXTENT_GLOBAL_CONTEXT_BIT | \
1621 ++ VMX_VPID_EXTENT_SINGLE_NON_GLOBAL_BIT)
1622 ++
1623 + /*
1624 + * These 2 parameters are used to config the controls for Pause-Loop Exiting:
1625 + * ple_gap: upper bound on the amount of time between two successive
1626 +@@ -2839,8 +2845,7 @@ static void nested_vmx_setup_ctls_msrs(struct vcpu_vmx *vmx)
1627 + */
1628 + if (enable_vpid)
1629 + vmx->nested.nested_vmx_vpid_caps = VMX_VPID_INVVPID_BIT |
1630 +- VMX_VPID_EXTENT_SINGLE_CONTEXT_BIT |
1631 +- VMX_VPID_EXTENT_GLOBAL_CONTEXT_BIT;
1632 ++ VMX_VPID_EXTENT_SUPPORTED_MASK;
1633 + else
1634 + vmx->nested.nested_vmx_vpid_caps = 0;
1635 +
1636 +@@ -7685,7 +7690,8 @@ static int handle_invvpid(struct kvm_vcpu *vcpu)
1637 + vmx_instruction_info = vmcs_read32(VMX_INSTRUCTION_INFO);
1638 + type = kvm_register_readl(vcpu, (vmx_instruction_info >> 28) & 0xf);
1639 +
1640 +- types = (vmx->nested.nested_vmx_vpid_caps >> 8) & 0x7;
1641 ++ types = (vmx->nested.nested_vmx_vpid_caps &
1642 ++ VMX_VPID_EXTENT_SUPPORTED_MASK) >> 8;
1643 +
1644 + if (type >= 32 || !(types & (1 << type))) {
1645 + nested_vmx_failValid(vcpu,
1646 +@@ -7707,21 +7713,27 @@ static int handle_invvpid(struct kvm_vcpu *vcpu)
1647 + }
1648 +
1649 + switch (type) {
1650 ++ case VMX_VPID_EXTENT_INDIVIDUAL_ADDR:
1651 + case VMX_VPID_EXTENT_SINGLE_CONTEXT:
1652 +- /*
1653 +- * Old versions of KVM use the single-context version so we
1654 +- * have to support it; just treat it the same as all-context.
1655 +- */
1656 ++ case VMX_VPID_EXTENT_SINGLE_NON_GLOBAL:
1657 ++ if (!vpid) {
1658 ++ nested_vmx_failValid(vcpu,
1659 ++ VMXERR_INVALID_OPERAND_TO_INVEPT_INVVPID);
1660 ++ skip_emulated_instruction(vcpu);
1661 ++ return 1;
1662 ++ }
1663 ++ break;
1664 + case VMX_VPID_EXTENT_ALL_CONTEXT:
1665 +- __vmx_flush_tlb(vcpu, to_vmx(vcpu)->nested.vpid02);
1666 +- nested_vmx_succeed(vcpu);
1667 + break;
1668 + default:
1669 +- /* Trap individual address invalidation invvpid calls */
1670 +- BUG_ON(1);
1671 +- break;
1672 ++ WARN_ON_ONCE(1);
1673 ++ skip_emulated_instruction(vcpu);
1674 ++ return 1;
1675 + }
1676 +
1677 ++ __vmx_flush_tlb(vcpu, vmx->nested.vpid02);
1678 ++ nested_vmx_succeed(vcpu);
1679 ++
1680 + skip_emulated_instruction(vcpu);
1681 + return 1;
1682 + }
1683 +diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
1684 +index 75f756eac979..4b19ec1da22d 100644
1685 +--- a/arch/x86/kvm/x86.c
1686 ++++ b/arch/x86/kvm/x86.c
1687 +@@ -2847,6 +2847,12 @@ void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu)
1688 + kvm_x86_ops->vcpu_put(vcpu);
1689 + kvm_put_guest_fpu(vcpu);
1690 + vcpu->arch.last_host_tsc = rdtsc();
1691 ++ /*
1692 ++ * If userspace has set any breakpoints or watchpoints, dr6 is restored
1693 ++ * on every vmexit, but if not, we might have a stale dr6 from the
1694 ++ * guest. do_debug expects dr6 to be cleared after it runs, do the same.
1695 ++ */
1696 ++ set_debugreg(0, 6);
1697 + }
1698 +
1699 + static int kvm_vcpu_ioctl_get_lapic(struct kvm_vcpu *vcpu,
1700 +@@ -8421,6 +8427,13 @@ static int apf_put_user(struct kvm_vcpu *vcpu, u32 val)
1701 + sizeof(val));
1702 + }
1703 +
1704 ++static int apf_get_user(struct kvm_vcpu *vcpu, u32 *val)
1705 ++{
1706 ++
1707 ++ return kvm_read_guest_cached(vcpu->kvm, &vcpu->arch.apf.data, val,
1708 ++ sizeof(u32));
1709 ++}
1710 ++
1711 + void kvm_arch_async_page_not_present(struct kvm_vcpu *vcpu,
1712 + struct kvm_async_pf *work)
1713 + {
1714 +@@ -8447,6 +8460,7 @@ void kvm_arch_async_page_present(struct kvm_vcpu *vcpu,
1715 + struct kvm_async_pf *work)
1716 + {
1717 + struct x86_exception fault;
1718 ++ u32 val;
1719 +
1720 + if (work->wakeup_all)
1721 + work->arch.token = ~0; /* broadcast wakeup */
1722 +@@ -8454,14 +8468,24 @@ void kvm_arch_async_page_present(struct kvm_vcpu *vcpu,
1723 + kvm_del_async_pf_gfn(vcpu, work->arch.gfn);
1724 + trace_kvm_async_pf_ready(work->arch.token, work->gva);
1725 +
1726 +- if ((vcpu->arch.apf.msr_val & KVM_ASYNC_PF_ENABLED) &&
1727 +- !apf_put_user(vcpu, KVM_PV_REASON_PAGE_READY)) {
1728 +- fault.vector = PF_VECTOR;
1729 +- fault.error_code_valid = true;
1730 +- fault.error_code = 0;
1731 +- fault.nested_page_fault = false;
1732 +- fault.address = work->arch.token;
1733 +- kvm_inject_page_fault(vcpu, &fault);
1734 ++ if (vcpu->arch.apf.msr_val & KVM_ASYNC_PF_ENABLED &&
1735 ++ !apf_get_user(vcpu, &val)) {
1736 ++ if (val == KVM_PV_REASON_PAGE_NOT_PRESENT &&
1737 ++ vcpu->arch.exception.pending &&
1738 ++ vcpu->arch.exception.nr == PF_VECTOR &&
1739 ++ !apf_put_user(vcpu, 0)) {
1740 ++ vcpu->arch.exception.pending = false;
1741 ++ vcpu->arch.exception.nr = 0;
1742 ++ vcpu->arch.exception.has_error_code = false;
1743 ++ vcpu->arch.exception.error_code = 0;
1744 ++ } else if (!apf_put_user(vcpu, KVM_PV_REASON_PAGE_READY)) {
1745 ++ fault.vector = PF_VECTOR;
1746 ++ fault.error_code_valid = true;
1747 ++ fault.error_code = 0;
1748 ++ fault.nested_page_fault = false;
1749 ++ fault.address = work->arch.token;
1750 ++ kvm_inject_page_fault(vcpu, &fault);
1751 ++ }
1752 + }
1753 + vcpu->arch.apf.halted = false;
1754 + vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE;
1755 +diff --git a/arch/x86/math-emu/Makefile b/arch/x86/math-emu/Makefile
1756 +index 9b0c63b60302..1b2dac174321 100644
1757 +--- a/arch/x86/math-emu/Makefile
1758 ++++ b/arch/x86/math-emu/Makefile
1759 +@@ -5,8 +5,8 @@
1760 + #DEBUG = -DDEBUGGING
1761 + DEBUG =
1762 + PARANOID = -DPARANOID
1763 +-EXTRA_CFLAGS := $(PARANOID) $(DEBUG) -fno-builtin $(MATH_EMULATION)
1764 +-EXTRA_AFLAGS := $(PARANOID)
1765 ++ccflags-y += $(PARANOID) $(DEBUG) -fno-builtin $(MATH_EMULATION)
1766 ++asflags-y += $(PARANOID)
1767 +
1768 + # From 'C' language sources:
1769 + C_OBJS =fpu_entry.o errors.o \
1770 +diff --git a/arch/x86/math-emu/reg_compare.c b/arch/x86/math-emu/reg_compare.c
1771 +index b77360fdbf4a..19b33b50adfa 100644
1772 +--- a/arch/x86/math-emu/reg_compare.c
1773 ++++ b/arch/x86/math-emu/reg_compare.c
1774 +@@ -168,7 +168,7 @@ static int compare(FPU_REG const *b, int tagb)
1775 + /* This function requires that st(0) is not empty */
1776 + int FPU_compare_st_data(FPU_REG const *loaded_data, u_char loaded_tag)
1777 + {
1778 +- int f = 0, c;
1779 ++ int f, c;
1780 +
1781 + c = compare(loaded_data, loaded_tag);
1782 +
1783 +@@ -189,12 +189,12 @@ int FPU_compare_st_data(FPU_REG const *loaded_data, u_char loaded_tag)
1784 + case COMP_No_Comp:
1785 + f = SW_C3 | SW_C2 | SW_C0;
1786 + break;
1787 +-#ifdef PARANOID
1788 + default:
1789 ++#ifdef PARANOID
1790 + EXCEPTION(EX_INTERNAL | 0x121);
1791 ++#endif /* PARANOID */
1792 + f = SW_C3 | SW_C2 | SW_C0;
1793 + break;
1794 +-#endif /* PARANOID */
1795 + }
1796 + setcc(f);
1797 + if (c & COMP_Denormal) {
1798 +@@ -205,7 +205,7 @@ int FPU_compare_st_data(FPU_REG const *loaded_data, u_char loaded_tag)
1799 +
1800 + static int compare_st_st(int nr)
1801 + {
1802 +- int f = 0, c;
1803 ++ int f, c;
1804 + FPU_REG *st_ptr;
1805 +
1806 + if (!NOT_EMPTY(0) || !NOT_EMPTY(nr)) {
1807 +@@ -235,12 +235,12 @@ static int compare_st_st(int nr)
1808 + case COMP_No_Comp:
1809 + f = SW_C3 | SW_C2 | SW_C0;
1810 + break;
1811 +-#ifdef PARANOID
1812 + default:
1813 ++#ifdef PARANOID
1814 + EXCEPTION(EX_INTERNAL | 0x122);
1815 ++#endif /* PARANOID */
1816 + f = SW_C3 | SW_C2 | SW_C0;
1817 + break;
1818 +-#endif /* PARANOID */
1819 + }
1820 + setcc(f);
1821 + if (c & COMP_Denormal) {
1822 +@@ -283,12 +283,12 @@ static int compare_i_st_st(int nr)
1823 + case COMP_No_Comp:
1824 + f = X86_EFLAGS_ZF | X86_EFLAGS_PF | X86_EFLAGS_CF;
1825 + break;
1826 +-#ifdef PARANOID
1827 + default:
1828 ++#ifdef PARANOID
1829 + EXCEPTION(EX_INTERNAL | 0x122);
1830 ++#endif /* PARANOID */
1831 + f = 0;
1832 + break;
1833 +-#endif /* PARANOID */
1834 + }
1835 + FPU_EFLAGS = (FPU_EFLAGS & ~(X86_EFLAGS_ZF | X86_EFLAGS_PF | X86_EFLAGS_CF)) | f;
1836 + if (c & COMP_Denormal) {
1837 +diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
1838 +index 7aaa2635862d..ecae9ac216fa 100644
1839 +--- a/arch/x86/mm/ioremap.c
1840 ++++ b/arch/x86/mm/ioremap.c
1841 +@@ -347,11 +347,11 @@ void iounmap(volatile void __iomem *addr)
1842 + (void __force *)addr < phys_to_virt(ISA_END_ADDRESS))
1843 + return;
1844 +
1845 ++ mmiotrace_iounmap(addr);
1846 ++
1847 + addr = (volatile void __iomem *)
1848 + (PAGE_MASK & (unsigned long __force)addr);
1849 +
1850 +- mmiotrace_iounmap(addr);
1851 +-
1852 + /* Use the vm area unlocked, assuming the caller
1853 + ensures there isn't another iounmap for the same address
1854 + in parallel. Reuse of the virtual address is prevented by
1855 +diff --git a/arch/x86/mm/kmmio.c b/arch/x86/mm/kmmio.c
1856 +index afc47f5c9531..cadb82be5f36 100644
1857 +--- a/arch/x86/mm/kmmio.c
1858 ++++ b/arch/x86/mm/kmmio.c
1859 +@@ -434,17 +434,18 @@ int register_kmmio_probe(struct kmmio_probe *p)
1860 + unsigned long flags;
1861 + int ret = 0;
1862 + unsigned long size = 0;
1863 ++ unsigned long addr = p->addr & PAGE_MASK;
1864 + const unsigned long size_lim = p->len + (p->addr & ~PAGE_MASK);
1865 + unsigned int l;
1866 + pte_t *pte;
1867 +
1868 + spin_lock_irqsave(&kmmio_lock, flags);
1869 +- if (get_kmmio_probe(p->addr)) {
1870 ++ if (get_kmmio_probe(addr)) {
1871 + ret = -EEXIST;
1872 + goto out;
1873 + }
1874 +
1875 +- pte = lookup_address(p->addr, &l);
1876 ++ pte = lookup_address(addr, &l);
1877 + if (!pte) {
1878 + ret = -EINVAL;
1879 + goto out;
1880 +@@ -453,7 +454,7 @@ int register_kmmio_probe(struct kmmio_probe *p)
1881 + kmmio_count++;
1882 + list_add_rcu(&p->list, &kmmio_probes);
1883 + while (size < size_lim) {
1884 +- if (add_kmmio_fault_page(p->addr + size))
1885 ++ if (add_kmmio_fault_page(addr + size))
1886 + pr_err("Unable to set page fault.\n");
1887 + size += page_level_size(l);
1888 + }
1889 +@@ -527,19 +528,20 @@ void unregister_kmmio_probe(struct kmmio_probe *p)
1890 + {
1891 + unsigned long flags;
1892 + unsigned long size = 0;
1893 ++ unsigned long addr = p->addr & PAGE_MASK;
1894 + const unsigned long size_lim = p->len + (p->addr & ~PAGE_MASK);
1895 + struct kmmio_fault_page *release_list = NULL;
1896 + struct kmmio_delayed_release *drelease;
1897 + unsigned int l;
1898 + pte_t *pte;
1899 +
1900 +- pte = lookup_address(p->addr, &l);
1901 ++ pte = lookup_address(addr, &l);
1902 + if (!pte)
1903 + return;
1904 +
1905 + spin_lock_irqsave(&kmmio_lock, flags);
1906 + while (size < size_lim) {
1907 +- release_kmmio_fault_page(p->addr + size, &release_list);
1908 ++ release_kmmio_fault_page(addr + size, &release_list);
1909 + size += page_level_size(l);
1910 + }
1911 + list_del_rcu(&p->list);
1912 +diff --git a/block/blk-map.c b/block/blk-map.c
1913 +index 27fd8d92892d..a8b4f526d8bb 100644
1914 +--- a/block/blk-map.c
1915 ++++ b/block/blk-map.c
1916 +@@ -116,7 +116,7 @@ int blk_rq_map_user_iov(struct request_queue *q, struct request *rq,
1917 + unsigned long align = q->dma_pad_mask | queue_dma_alignment(q);
1918 + struct bio *bio = NULL;
1919 + struct iov_iter i;
1920 +- int ret;
1921 ++ int ret = -EINVAL;
1922 +
1923 + if (!iter_is_iovec(iter))
1924 + goto fail;
1925 +@@ -145,7 +145,7 @@ int blk_rq_map_user_iov(struct request_queue *q, struct request *rq,
1926 + __blk_rq_unmap_user(bio);
1927 + fail:
1928 + rq->bio = NULL;
1929 +- return -EINVAL;
1930 ++ return ret;
1931 + }
1932 + EXPORT_SYMBOL(blk_rq_map_user_iov);
1933 +
1934 +diff --git a/crypto/ahash.c b/crypto/ahash.c
1935 +index f3fa104de479..14402ef6d826 100644
1936 +--- a/crypto/ahash.c
1937 ++++ b/crypto/ahash.c
1938 +@@ -192,11 +192,18 @@ int crypto_ahash_setkey(struct crypto_ahash *tfm, const u8 *key,
1939 + unsigned int keylen)
1940 + {
1941 + unsigned long alignmask = crypto_ahash_alignmask(tfm);
1942 ++ int err;
1943 +
1944 + if ((unsigned long)key & alignmask)
1945 +- return ahash_setkey_unaligned(tfm, key, keylen);
1946 ++ err = ahash_setkey_unaligned(tfm, key, keylen);
1947 ++ else
1948 ++ err = tfm->setkey(tfm, key, keylen);
1949 ++
1950 ++ if (err)
1951 ++ return err;
1952 +
1953 +- return tfm->setkey(tfm, key, keylen);
1954 ++ crypto_ahash_clear_flags(tfm, CRYPTO_TFM_NEED_KEY);
1955 ++ return 0;
1956 + }
1957 + EXPORT_SYMBOL_GPL(crypto_ahash_setkey);
1958 +
1959 +@@ -369,7 +376,12 @@ EXPORT_SYMBOL_GPL(crypto_ahash_finup);
1960 +
1961 + int crypto_ahash_digest(struct ahash_request *req)
1962 + {
1963 +- return crypto_ahash_op(req, crypto_ahash_reqtfm(req)->digest);
1964 ++ struct crypto_ahash *tfm = crypto_ahash_reqtfm(req);
1965 ++
1966 ++ if (crypto_ahash_get_flags(tfm) & CRYPTO_TFM_NEED_KEY)
1967 ++ return -ENOKEY;
1968 ++
1969 ++ return crypto_ahash_op(req, tfm->digest);
1970 + }
1971 + EXPORT_SYMBOL_GPL(crypto_ahash_digest);
1972 +
1973 +@@ -455,7 +467,6 @@ static int crypto_ahash_init_tfm(struct crypto_tfm *tfm)
1974 + struct ahash_alg *alg = crypto_ahash_alg(hash);
1975 +
1976 + hash->setkey = ahash_nosetkey;
1977 +- hash->has_setkey = false;
1978 + hash->export = ahash_no_export;
1979 + hash->import = ahash_no_import;
1980 +
1981 +@@ -470,7 +481,8 @@ static int crypto_ahash_init_tfm(struct crypto_tfm *tfm)
1982 +
1983 + if (alg->setkey) {
1984 + hash->setkey = alg->setkey;
1985 +- hash->has_setkey = true;
1986 ++ if (!(alg->halg.base.cra_flags & CRYPTO_ALG_OPTIONAL_KEY))
1987 ++ crypto_ahash_set_flags(hash, CRYPTO_TFM_NEED_KEY);
1988 + }
1989 + if (alg->export)
1990 + hash->export = alg->export;
1991 +diff --git a/crypto/algif_hash.c b/crypto/algif_hash.c
1992 +index 54fc90e8339c..731b5fb8567b 100644
1993 +--- a/crypto/algif_hash.c
1994 ++++ b/crypto/algif_hash.c
1995 +@@ -34,11 +34,6 @@ struct hash_ctx {
1996 + struct ahash_request req;
1997 + };
1998 +
1999 +-struct algif_hash_tfm {
2000 +- struct crypto_ahash *hash;
2001 +- bool has_key;
2002 +-};
2003 +-
2004 + static int hash_alloc_result(struct sock *sk, struct hash_ctx *ctx)
2005 + {
2006 + unsigned ds;
2007 +@@ -308,7 +303,7 @@ static int hash_check_key(struct socket *sock)
2008 + int err = 0;
2009 + struct sock *psk;
2010 + struct alg_sock *pask;
2011 +- struct algif_hash_tfm *tfm;
2012 ++ struct crypto_ahash *tfm;
2013 + struct sock *sk = sock->sk;
2014 + struct alg_sock *ask = alg_sk(sk);
2015 +
2016 +@@ -322,7 +317,7 @@ static int hash_check_key(struct socket *sock)
2017 +
2018 + err = -ENOKEY;
2019 + lock_sock_nested(psk, SINGLE_DEPTH_NESTING);
2020 +- if (!tfm->has_key)
2021 ++ if (crypto_ahash_get_flags(tfm) & CRYPTO_TFM_NEED_KEY)
2022 + goto unlock;
2023 +
2024 + if (!pask->refcnt++)
2025 +@@ -413,41 +408,17 @@ static struct proto_ops algif_hash_ops_nokey = {
2026 +
2027 + static void *hash_bind(const char *name, u32 type, u32 mask)
2028 + {
2029 +- struct algif_hash_tfm *tfm;
2030 +- struct crypto_ahash *hash;
2031 +-
2032 +- tfm = kzalloc(sizeof(*tfm), GFP_KERNEL);
2033 +- if (!tfm)
2034 +- return ERR_PTR(-ENOMEM);
2035 +-
2036 +- hash = crypto_alloc_ahash(name, type, mask);
2037 +- if (IS_ERR(hash)) {
2038 +- kfree(tfm);
2039 +- return ERR_CAST(hash);
2040 +- }
2041 +-
2042 +- tfm->hash = hash;
2043 +-
2044 +- return tfm;
2045 ++ return crypto_alloc_ahash(name, type, mask);
2046 + }
2047 +
2048 + static void hash_release(void *private)
2049 + {
2050 +- struct algif_hash_tfm *tfm = private;
2051 +-
2052 +- crypto_free_ahash(tfm->hash);
2053 +- kfree(tfm);
2054 ++ crypto_free_ahash(private);
2055 + }
2056 +
2057 + static int hash_setkey(void *private, const u8 *key, unsigned int keylen)
2058 + {
2059 +- struct algif_hash_tfm *tfm = private;
2060 +- int err;
2061 +-
2062 +- err = crypto_ahash_setkey(tfm->hash, key, keylen);
2063 +- tfm->has_key = !err;
2064 +-
2065 +- return err;
2066 ++ return crypto_ahash_setkey(private, key, keylen);
2067 + }
2068 +
2069 + static void hash_sock_destruct(struct sock *sk)
2070 +@@ -462,11 +433,10 @@ static void hash_sock_destruct(struct sock *sk)
2071 +
2072 + static int hash_accept_parent_nokey(void *private, struct sock *sk)
2073 + {
2074 +- struct hash_ctx *ctx;
2075 ++ struct crypto_ahash *tfm = private;
2076 + struct alg_sock *ask = alg_sk(sk);
2077 +- struct algif_hash_tfm *tfm = private;
2078 +- struct crypto_ahash *hash = tfm->hash;
2079 +- unsigned len = sizeof(*ctx) + crypto_ahash_reqsize(hash);
2080 ++ struct hash_ctx *ctx;
2081 ++ unsigned int len = sizeof(*ctx) + crypto_ahash_reqsize(tfm);
2082 +
2083 + ctx = sock_kmalloc(sk, len, GFP_KERNEL);
2084 + if (!ctx)
2085 +@@ -479,7 +449,7 @@ static int hash_accept_parent_nokey(void *private, struct sock *sk)
2086 +
2087 + ask->private = ctx;
2088 +
2089 +- ahash_request_set_tfm(&ctx->req, hash);
2090 ++ ahash_request_set_tfm(&ctx->req, tfm);
2091 + ahash_request_set_callback(&ctx->req, CRYPTO_TFM_REQ_MAY_BACKLOG,
2092 + af_alg_complete, &ctx->completion);
2093 +
2094 +@@ -490,9 +460,9 @@ static int hash_accept_parent_nokey(void *private, struct sock *sk)
2095 +
2096 + static int hash_accept_parent(void *private, struct sock *sk)
2097 + {
2098 +- struct algif_hash_tfm *tfm = private;
2099 ++ struct crypto_ahash *tfm = private;
2100 +
2101 +- if (!tfm->has_key && crypto_ahash_has_setkey(tfm->hash))
2102 ++ if (crypto_ahash_get_flags(tfm) & CRYPTO_TFM_NEED_KEY)
2103 + return -ENOKEY;
2104 +
2105 + return hash_accept_parent_nokey(private, sk);
2106 +diff --git a/crypto/crc32_generic.c b/crypto/crc32_generic.c
2107 +index aa2a25fc7482..718cbce8d169 100644
2108 +--- a/crypto/crc32_generic.c
2109 ++++ b/crypto/crc32_generic.c
2110 +@@ -133,6 +133,7 @@ static struct shash_alg alg = {
2111 + .cra_name = "crc32",
2112 + .cra_driver_name = "crc32-generic",
2113 + .cra_priority = 100,
2114 ++ .cra_flags = CRYPTO_ALG_OPTIONAL_KEY,
2115 + .cra_blocksize = CHKSUM_BLOCK_SIZE,
2116 + .cra_ctxsize = sizeof(u32),
2117 + .cra_module = THIS_MODULE,
2118 +diff --git a/crypto/crc32c_generic.c b/crypto/crc32c_generic.c
2119 +index 4c0a0e271876..372320399622 100644
2120 +--- a/crypto/crc32c_generic.c
2121 ++++ b/crypto/crc32c_generic.c
2122 +@@ -146,6 +146,7 @@ static struct shash_alg alg = {
2123 + .cra_name = "crc32c",
2124 + .cra_driver_name = "crc32c-generic",
2125 + .cra_priority = 100,
2126 ++ .cra_flags = CRYPTO_ALG_OPTIONAL_KEY,
2127 + .cra_blocksize = CHKSUM_BLOCK_SIZE,
2128 + .cra_alignmask = 3,
2129 + .cra_ctxsize = sizeof(struct chksum_ctx),
2130 +diff --git a/crypto/cryptd.c b/crypto/cryptd.c
2131 +index af9ad45d1909..9b66ce7e728d 100644
2132 +--- a/crypto/cryptd.c
2133 ++++ b/crypto/cryptd.c
2134 +@@ -673,10 +673,9 @@ static int cryptd_create_hash(struct crypto_template *tmpl, struct rtattr **tb,
2135 + if (err)
2136 + goto out_free_inst;
2137 +
2138 +- type = CRYPTO_ALG_ASYNC;
2139 +- if (alg->cra_flags & CRYPTO_ALG_INTERNAL)
2140 +- type |= CRYPTO_ALG_INTERNAL;
2141 +- inst->alg.halg.base.cra_flags = type;
2142 ++ inst->alg.halg.base.cra_flags = CRYPTO_ALG_ASYNC |
2143 ++ (alg->cra_flags & (CRYPTO_ALG_INTERNAL |
2144 ++ CRYPTO_ALG_OPTIONAL_KEY));
2145 +
2146 + inst->alg.halg.digestsize = salg->digestsize;
2147 + inst->alg.halg.statesize = salg->statesize;
2148 +diff --git a/crypto/mcryptd.c b/crypto/mcryptd.c
2149 +index 6e9389c8bfbd..7406ed0745be 100644
2150 +--- a/crypto/mcryptd.c
2151 ++++ b/crypto/mcryptd.c
2152 +@@ -516,10 +516,9 @@ static int mcryptd_create_hash(struct crypto_template *tmpl, struct rtattr **tb,
2153 + if (err)
2154 + goto out_free_inst;
2155 +
2156 +- type = CRYPTO_ALG_ASYNC;
2157 +- if (alg->cra_flags & CRYPTO_ALG_INTERNAL)
2158 +- type |= CRYPTO_ALG_INTERNAL;
2159 +- inst->alg.halg.base.cra_flags = type;
2160 ++ inst->alg.halg.base.cra_flags = CRYPTO_ALG_ASYNC |
2161 ++ (alg->cra_flags & (CRYPTO_ALG_INTERNAL |
2162 ++ CRYPTO_ALG_OPTIONAL_KEY));
2163 +
2164 + inst->alg.halg.digestsize = halg->digestsize;
2165 + inst->alg.halg.statesize = halg->statesize;
2166 +diff --git a/crypto/shash.c b/crypto/shash.c
2167 +index 9bd5044d467b..d5bd2f05d036 100644
2168 +--- a/crypto/shash.c
2169 ++++ b/crypto/shash.c
2170 +@@ -57,11 +57,18 @@ int crypto_shash_setkey(struct crypto_shash *tfm, const u8 *key,
2171 + {
2172 + struct shash_alg *shash = crypto_shash_alg(tfm);
2173 + unsigned long alignmask = crypto_shash_alignmask(tfm);
2174 ++ int err;
2175 +
2176 + if ((unsigned long)key & alignmask)
2177 +- return shash_setkey_unaligned(tfm, key, keylen);
2178 ++ err = shash_setkey_unaligned(tfm, key, keylen);
2179 ++ else
2180 ++ err = shash->setkey(tfm, key, keylen);
2181 ++
2182 ++ if (err)
2183 ++ return err;
2184 +
2185 +- return shash->setkey(tfm, key, keylen);
2186 ++ crypto_shash_clear_flags(tfm, CRYPTO_TFM_NEED_KEY);
2187 ++ return 0;
2188 + }
2189 + EXPORT_SYMBOL_GPL(crypto_shash_setkey);
2190 +
2191 +@@ -180,6 +187,9 @@ int crypto_shash_digest(struct shash_desc *desc, const u8 *data,
2192 + struct shash_alg *shash = crypto_shash_alg(tfm);
2193 + unsigned long alignmask = crypto_shash_alignmask(tfm);
2194 +
2195 ++ if (crypto_shash_get_flags(tfm) & CRYPTO_TFM_NEED_KEY)
2196 ++ return -ENOKEY;
2197 ++
2198 + if (((unsigned long)data | (unsigned long)out) & alignmask)
2199 + return shash_digest_unaligned(desc, data, len, out);
2200 +
2201 +@@ -359,7 +369,8 @@ int crypto_init_shash_ops_async(struct crypto_tfm *tfm)
2202 + crt->digest = shash_async_digest;
2203 + crt->setkey = shash_async_setkey;
2204 +
2205 +- crt->has_setkey = alg->setkey != shash_no_setkey;
2206 ++ crypto_ahash_set_flags(crt, crypto_shash_get_flags(shash) &
2207 ++ CRYPTO_TFM_NEED_KEY);
2208 +
2209 + if (alg->export)
2210 + crt->export = shash_async_export;
2211 +@@ -374,8 +385,14 @@ int crypto_init_shash_ops_async(struct crypto_tfm *tfm)
2212 + static int crypto_shash_init_tfm(struct crypto_tfm *tfm)
2213 + {
2214 + struct crypto_shash *hash = __crypto_shash_cast(tfm);
2215 ++ struct shash_alg *alg = crypto_shash_alg(hash);
2216 ++
2217 ++ hash->descsize = alg->descsize;
2218 ++
2219 ++ if (crypto_shash_alg_has_setkey(alg) &&
2220 ++ !(alg->base.cra_flags & CRYPTO_ALG_OPTIONAL_KEY))
2221 ++ crypto_shash_set_flags(hash, CRYPTO_TFM_NEED_KEY);
2222 +
2223 +- hash->descsize = crypto_shash_alg(hash)->descsize;
2224 + return 0;
2225 + }
2226 +
2227 +diff --git a/drivers/Makefile b/drivers/Makefile
2228 +index 733bf0b2613f..7c3d58dcf6b3 100644
2229 +--- a/drivers/Makefile
2230 ++++ b/drivers/Makefile
2231 +@@ -99,6 +99,7 @@ obj-$(CONFIG_TC) += tc/
2232 + obj-$(CONFIG_UWB) += uwb/
2233 + obj-$(CONFIG_USB_PHY) += usb/
2234 + obj-$(CONFIG_USB) += usb/
2235 ++obj-$(CONFIG_USB_SUPPORT) += usb/
2236 + obj-$(CONFIG_PCI) += usb/
2237 + obj-$(CONFIG_USB_GADGET) += usb/
2238 + obj-$(CONFIG_OF) += usb/
2239 +diff --git a/drivers/android/binder.c b/drivers/android/binder.c
2240 +index 15009b2b33c7..3b6ac80b2127 100644
2241 +--- a/drivers/android/binder.c
2242 ++++ b/drivers/android/binder.c
2243 +@@ -2628,6 +2628,8 @@ static unsigned int binder_poll(struct file *filp,
2244 + binder_lock(__func__);
2245 +
2246 + thread = binder_get_thread(proc);
2247 ++ if (!thread)
2248 ++ return POLLERR;
2249 +
2250 + wait_for_proc_work = thread->transaction_stack == NULL &&
2251 + list_empty(&thread->todo) && thread->return_error == BR_OK;
2252 +diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
2253 +index e32badd26c8a..343cad9bf7e7 100644
2254 +--- a/drivers/block/rbd.c
2255 ++++ b/drivers/block/rbd.c
2256 +@@ -3756,7 +3756,7 @@ static void rbd_watch_cb(void *arg, u64 notify_id, u64 cookie,
2257 + struct rbd_device *rbd_dev = arg;
2258 + void *p = data;
2259 + void *const end = p + data_len;
2260 +- u8 struct_v;
2261 ++ u8 struct_v = 0;
2262 + u32 len;
2263 + u32 notify_op;
2264 + int ret;
2265 +diff --git a/drivers/clk/meson/Kconfig b/drivers/clk/meson/Kconfig
2266 +index 19480bcc7046..2f29ee1a4d00 100644
2267 +--- a/drivers/clk/meson/Kconfig
2268 ++++ b/drivers/clk/meson/Kconfig
2269 +@@ -14,6 +14,7 @@ config COMMON_CLK_MESON8B
2270 + config COMMON_CLK_GXBB
2271 + bool
2272 + depends on COMMON_CLK_AMLOGIC
2273 ++ select RESET_CONTROLLER
2274 + help
2275 + Support for the clock controller on AmLogic S905 devices, aka gxbb.
2276 + Say Y if you want peripherals and CPU frequency scaling to work.
2277 +diff --git a/drivers/clk/sunxi-ng/Kconfig b/drivers/clk/sunxi-ng/Kconfig
2278 +index 254d9526c018..4e8e9bc8f3e5 100644
2279 +--- a/drivers/clk/sunxi-ng/Kconfig
2280 ++++ b/drivers/clk/sunxi-ng/Kconfig
2281 +@@ -1,6 +1,7 @@
2282 + config SUNXI_CCU
2283 + bool "Clock support for Allwinner SoCs"
2284 + depends on ARCH_SUNXI || COMPILE_TEST
2285 ++ select RESET_CONTROLLER
2286 + default ARCH_SUNXI
2287 +
2288 + if SUNXI_CCU
2289 +diff --git a/drivers/crypto/bfin_crc.c b/drivers/crypto/bfin_crc.c
2290 +index 10db7df366c8..2ee11802992f 100644
2291 +--- a/drivers/crypto/bfin_crc.c
2292 ++++ b/drivers/crypto/bfin_crc.c
2293 +@@ -494,7 +494,8 @@ static struct ahash_alg algs = {
2294 + .cra_driver_name = DRIVER_NAME,
2295 + .cra_priority = 100,
2296 + .cra_flags = CRYPTO_ALG_TYPE_AHASH |
2297 +- CRYPTO_ALG_ASYNC,
2298 ++ CRYPTO_ALG_ASYNC |
2299 ++ CRYPTO_ALG_OPTIONAL_KEY,
2300 + .cra_blocksize = CHKSUM_BLOCK_SIZE,
2301 + .cra_ctxsize = sizeof(struct bfin_crypto_crc_ctx),
2302 + .cra_alignmask = 3,
2303 +diff --git a/drivers/crypto/s5p-sss.c b/drivers/crypto/s5p-sss.c
2304 +index a668286d62cb..500e4090e2fd 100644
2305 +--- a/drivers/crypto/s5p-sss.c
2306 ++++ b/drivers/crypto/s5p-sss.c
2307 +@@ -542,15 +542,21 @@ static void s5p_aes_crypt_start(struct s5p_aes_dev *dev, unsigned long mode)
2308 + uint32_t aes_control;
2309 + unsigned long flags;
2310 + int err;
2311 ++ u8 *iv;
2312 +
2313 + aes_control = SSS_AES_KEY_CHANGE_MODE;
2314 + if (mode & FLAGS_AES_DECRYPT)
2315 + aes_control |= SSS_AES_MODE_DECRYPT;
2316 +
2317 +- if ((mode & FLAGS_AES_MODE_MASK) == FLAGS_AES_CBC)
2318 ++ if ((mode & FLAGS_AES_MODE_MASK) == FLAGS_AES_CBC) {
2319 + aes_control |= SSS_AES_CHAIN_MODE_CBC;
2320 +- else if ((mode & FLAGS_AES_MODE_MASK) == FLAGS_AES_CTR)
2321 ++ iv = req->info;
2322 ++ } else if ((mode & FLAGS_AES_MODE_MASK) == FLAGS_AES_CTR) {
2323 + aes_control |= SSS_AES_CHAIN_MODE_CTR;
2324 ++ iv = req->info;
2325 ++ } else {
2326 ++ iv = NULL; /* AES_ECB */
2327 ++ }
2328 +
2329 + if (dev->ctx->keylen == AES_KEYSIZE_192)
2330 + aes_control |= SSS_AES_KEY_SIZE_192;
2331 +@@ -581,7 +587,7 @@ static void s5p_aes_crypt_start(struct s5p_aes_dev *dev, unsigned long mode)
2332 + goto outdata_error;
2333 +
2334 + SSS_AES_WRITE(dev, AES_CONTROL, aes_control);
2335 +- s5p_set_aes(dev, dev->ctx->aes_key, req->info, dev->ctx->keylen);
2336 ++ s5p_set_aes(dev, dev->ctx->aes_key, iv, dev->ctx->keylen);
2337 +
2338 + s5p_set_dma_indata(dev, dev->sg_src);
2339 + s5p_set_dma_outdata(dev, dev->sg_dst);
2340 +diff --git a/drivers/crypto/talitos.c b/drivers/crypto/talitos.c
2341 +index 1c8d79d93098..42c060c7ae15 100644
2342 +--- a/drivers/crypto/talitos.c
2343 ++++ b/drivers/crypto/talitos.c
2344 +@@ -1124,6 +1124,11 @@ int talitos_sg_map(struct device *dev, struct scatterlist *src,
2345 + struct talitos_private *priv = dev_get_drvdata(dev);
2346 + bool is_sec1 = has_ftr_sec1(priv);
2347 +
2348 ++ if (!src) {
2349 ++ *ptr = zero_entry;
2350 ++ return 1;
2351 ++ }
2352 ++
2353 + to_talitos_ptr_len(ptr, len, is_sec1);
2354 + to_talitos_ptr_ext_set(ptr, 0, is_sec1);
2355 +
2356 +diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c
2357 +index a4c8f80db29d..e2cec5b357fd 100644
2358 +--- a/drivers/dma/at_hdmac.c
2359 ++++ b/drivers/dma/at_hdmac.c
2360 +@@ -709,7 +709,7 @@ atc_prep_dma_interleaved(struct dma_chan *chan,
2361 + unsigned long flags)
2362 + {
2363 + struct at_dma_chan *atchan = to_at_dma_chan(chan);
2364 +- struct data_chunk *first = xt->sgl;
2365 ++ struct data_chunk *first;
2366 + struct at_desc *desc = NULL;
2367 + size_t xfer_count;
2368 + unsigned int dwidth;
2369 +@@ -721,6 +721,8 @@ atc_prep_dma_interleaved(struct dma_chan *chan,
2370 + if (unlikely(!xt || xt->numf != 1 || !xt->frame_size))
2371 + return NULL;
2372 +
2373 ++ first = xt->sgl;
2374 ++
2375 + dev_info(chan2dev(chan),
2376 + "%s: src=%pad, dest=%pad, numf=%d, frame_size=%d, flags=0x%lx\n",
2377 + __func__, &xt->src_start, &xt->dst_start, xt->numf,
2378 +diff --git a/drivers/dma/dma-jz4740.c b/drivers/dma/dma-jz4740.c
2379 +index d50273fed715..afd5e10f8927 100644
2380 +--- a/drivers/dma/dma-jz4740.c
2381 ++++ b/drivers/dma/dma-jz4740.c
2382 +@@ -555,7 +555,7 @@ static int jz4740_dma_probe(struct platform_device *pdev)
2383 +
2384 + ret = dma_async_device_register(dd);
2385 + if (ret)
2386 +- return ret;
2387 ++ goto err_clk;
2388 +
2389 + irq = platform_get_irq(pdev, 0);
2390 + ret = request_irq(irq, jz4740_dma_irq, 0, dev_name(&pdev->dev), dmadev);
2391 +@@ -568,6 +568,8 @@ static int jz4740_dma_probe(struct platform_device *pdev)
2392 +
2393 + err_unregister:
2394 + dma_async_device_unregister(dd);
2395 ++err_clk:
2396 ++ clk_disable_unprepare(dmadev->clk);
2397 + return ret;
2398 + }
2399 +
2400 +diff --git a/drivers/dma/ioat/init.c b/drivers/dma/ioat/init.c
2401 +index 0dea6d55f0ff..84eb83eb2efe 100644
2402 +--- a/drivers/dma/ioat/init.c
2403 ++++ b/drivers/dma/ioat/init.c
2404 +@@ -388,7 +388,7 @@ static int ioat_dma_self_test(struct ioatdma_device *ioat_dma)
2405 + if (memcmp(src, dest, IOAT_TEST_SIZE)) {
2406 + dev_err(dev, "Self-test copy failed compare, disabling\n");
2407 + err = -ENODEV;
2408 +- goto free_resources;
2409 ++ goto unmap_dma;
2410 + }
2411 +
2412 + unmap_dma:
2413 +diff --git a/drivers/dma/zx296702_dma.c b/drivers/dma/zx296702_dma.c
2414 +index 6059d81e701a..8e55403847b2 100644
2415 +--- a/drivers/dma/zx296702_dma.c
2416 ++++ b/drivers/dma/zx296702_dma.c
2417 +@@ -26,7 +26,7 @@
2418 +
2419 + #define DRIVER_NAME "zx-dma"
2420 + #define DMA_ALIGN 4
2421 +-#define DMA_MAX_SIZE (0x10000 - PAGE_SIZE)
2422 ++#define DMA_MAX_SIZE (0x10000 - 512)
2423 + #define LLI_BLOCK_SIZE (4 * PAGE_SIZE)
2424 +
2425 + #define REG_ZX_SRC_ADDR 0x00
2426 +diff --git a/drivers/gpio/gpio-intel-mid.c b/drivers/gpio/gpio-intel-mid.c
2427 +index 164de64b11fc..9d46af0c4084 100644
2428 +--- a/drivers/gpio/gpio-intel-mid.c
2429 ++++ b/drivers/gpio/gpio-intel-mid.c
2430 +@@ -321,7 +321,7 @@ static void intel_mid_irq_init_hw(struct intel_mid_gpio *priv)
2431 + }
2432 + }
2433 +
2434 +-static int intel_gpio_runtime_idle(struct device *dev)
2435 ++static int __maybe_unused intel_gpio_runtime_idle(struct device *dev)
2436 + {
2437 + int err = pm_schedule_suspend(dev, 500);
2438 + return err ?: -EBUSY;
2439 +diff --git a/drivers/gpio/gpio-xgene.c b/drivers/gpio/gpio-xgene.c
2440 +index 40a8881c2ce8..f1c6ec17b90a 100644
2441 +--- a/drivers/gpio/gpio-xgene.c
2442 ++++ b/drivers/gpio/gpio-xgene.c
2443 +@@ -42,9 +42,7 @@ struct xgene_gpio {
2444 + struct gpio_chip chip;
2445 + void __iomem *base;
2446 + spinlock_t lock;
2447 +-#ifdef CONFIG_PM
2448 + u32 set_dr_val[XGENE_MAX_GPIO_BANKS];
2449 +-#endif
2450 + };
2451 +
2452 + static int xgene_gpio_get(struct gpio_chip *gc, unsigned int offset)
2453 +@@ -138,8 +136,7 @@ static int xgene_gpio_dir_out(struct gpio_chip *gc,
2454 + return 0;
2455 + }
2456 +
2457 +-#ifdef CONFIG_PM
2458 +-static int xgene_gpio_suspend(struct device *dev)
2459 ++static __maybe_unused int xgene_gpio_suspend(struct device *dev)
2460 + {
2461 + struct xgene_gpio *gpio = dev_get_drvdata(dev);
2462 + unsigned long bank_offset;
2463 +@@ -152,7 +149,7 @@ static int xgene_gpio_suspend(struct device *dev)
2464 + return 0;
2465 + }
2466 +
2467 +-static int xgene_gpio_resume(struct device *dev)
2468 ++static __maybe_unused int xgene_gpio_resume(struct device *dev)
2469 + {
2470 + struct xgene_gpio *gpio = dev_get_drvdata(dev);
2471 + unsigned long bank_offset;
2472 +@@ -166,10 +163,6 @@ static int xgene_gpio_resume(struct device *dev)
2473 + }
2474 +
2475 + static SIMPLE_DEV_PM_OPS(xgene_gpio_pm, xgene_gpio_suspend, xgene_gpio_resume);
2476 +-#define XGENE_GPIO_PM_OPS (&xgene_gpio_pm)
2477 +-#else
2478 +-#define XGENE_GPIO_PM_OPS NULL
2479 +-#endif
2480 +
2481 + static int xgene_gpio_probe(struct platform_device *pdev)
2482 + {
2483 +@@ -241,7 +234,7 @@ static struct platform_driver xgene_gpio_driver = {
2484 + .name = "xgene-gpio",
2485 + .of_match_table = xgene_gpio_of_match,
2486 + .acpi_match_table = ACPI_PTR(xgene_gpio_acpi_match),
2487 +- .pm = XGENE_GPIO_PM_OPS,
2488 ++ .pm = &xgene_gpio_pm,
2489 + },
2490 + .probe = xgene_gpio_probe,
2491 + };
2492 +diff --git a/drivers/gpu/drm/armada/armada_crtc.c b/drivers/gpu/drm/armada/armada_crtc.c
2493 +index a51f8cbcfe26..3137adf7b0af 100644
2494 +--- a/drivers/gpu/drm/armada/armada_crtc.c
2495 ++++ b/drivers/gpu/drm/armada/armada_crtc.c
2496 +@@ -1178,17 +1178,13 @@ static int armada_drm_crtc_create(struct drm_device *drm, struct device *dev,
2497 +
2498 + ret = devm_request_irq(dev, irq, armada_drm_irq, 0, "armada_drm_crtc",
2499 + dcrtc);
2500 +- if (ret < 0) {
2501 +- kfree(dcrtc);
2502 +- return ret;
2503 +- }
2504 ++ if (ret < 0)
2505 ++ goto err_crtc;
2506 +
2507 + if (dcrtc->variant->init) {
2508 + ret = dcrtc->variant->init(dcrtc, dev);
2509 +- if (ret) {
2510 +- kfree(dcrtc);
2511 +- return ret;
2512 +- }
2513 ++ if (ret)
2514 ++ goto err_crtc;
2515 + }
2516 +
2517 + /* Ensure AXI pipeline is enabled */
2518 +@@ -1199,13 +1195,15 @@ static int armada_drm_crtc_create(struct drm_device *drm, struct device *dev,
2519 + dcrtc->crtc.port = port;
2520 +
2521 + primary = kzalloc(sizeof(*primary), GFP_KERNEL);
2522 +- if (!primary)
2523 +- return -ENOMEM;
2524 ++ if (!primary) {
2525 ++ ret = -ENOMEM;
2526 ++ goto err_crtc;
2527 ++ }
2528 +
2529 + ret = armada_drm_plane_init(primary);
2530 + if (ret) {
2531 + kfree(primary);
2532 +- return ret;
2533 ++ goto err_crtc;
2534 + }
2535 +
2536 + ret = drm_universal_plane_init(drm, &primary->base, 0,
2537 +@@ -1215,7 +1213,7 @@ static int armada_drm_crtc_create(struct drm_device *drm, struct device *dev,
2538 + DRM_PLANE_TYPE_PRIMARY, NULL);
2539 + if (ret) {
2540 + kfree(primary);
2541 +- return ret;
2542 ++ goto err_crtc;
2543 + }
2544 +
2545 + ret = drm_crtc_init_with_planes(drm, &dcrtc->crtc, &primary->base, NULL,
2546 +@@ -1234,6 +1232,9 @@ static int armada_drm_crtc_create(struct drm_device *drm, struct device *dev,
2547 +
2548 + err_crtc_init:
2549 + primary->base.funcs->destroy(&primary->base);
2550 ++err_crtc:
2551 ++ kfree(dcrtc);
2552 ++
2553 + return ret;
2554 + }
2555 +
2556 +diff --git a/drivers/gpu/drm/drm_modeset_lock.c b/drivers/gpu/drm/drm_modeset_lock.c
2557 +index 61146f5b4f56..0a6bf815640e 100644
2558 +--- a/drivers/gpu/drm/drm_modeset_lock.c
2559 ++++ b/drivers/gpu/drm/drm_modeset_lock.c
2560 +@@ -81,7 +81,7 @@ void drm_modeset_lock_all(struct drm_device *dev)
2561 + struct drm_modeset_acquire_ctx *ctx;
2562 + int ret;
2563 +
2564 +- ctx = kzalloc(sizeof(*ctx), GFP_KERNEL);
2565 ++ ctx = kzalloc(sizeof(*ctx), GFP_KERNEL | __GFP_NOFAIL);
2566 + if (WARN_ON(!ctx))
2567 + return;
2568 +
2569 +diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c
2570 +index 38eaa63afb31..4198e50fa27b 100644
2571 +--- a/drivers/gpu/drm/exynos/exynos_hdmi.c
2572 ++++ b/drivers/gpu/drm/exynos/exynos_hdmi.c
2573 +@@ -1939,8 +1939,7 @@ static int hdmi_remove(struct platform_device *pdev)
2574 + return 0;
2575 + }
2576 +
2577 +-#ifdef CONFIG_PM
2578 +-static int exynos_hdmi_suspend(struct device *dev)
2579 ++static int __maybe_unused exynos_hdmi_suspend(struct device *dev)
2580 + {
2581 + struct hdmi_context *hdata = dev_get_drvdata(dev);
2582 +
2583 +@@ -1949,7 +1948,7 @@ static int exynos_hdmi_suspend(struct device *dev)
2584 + return 0;
2585 + }
2586 +
2587 +-static int exynos_hdmi_resume(struct device *dev)
2588 ++static int __maybe_unused exynos_hdmi_resume(struct device *dev)
2589 + {
2590 + struct hdmi_context *hdata = dev_get_drvdata(dev);
2591 + int ret;
2592 +@@ -1960,7 +1959,6 @@ static int exynos_hdmi_resume(struct device *dev)
2593 +
2594 + return 0;
2595 + }
2596 +-#endif
2597 +
2598 + static const struct dev_pm_ops exynos_hdmi_pm_ops = {
2599 + SET_RUNTIME_PM_OPS(exynos_hdmi_suspend, exynos_hdmi_resume, NULL)
2600 +diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
2601 +index a19ec06f9e42..6a9860df208f 100644
2602 +--- a/drivers/gpu/drm/i915/intel_drv.h
2603 ++++ b/drivers/gpu/drm/i915/intel_drv.h
2604 +@@ -1581,7 +1581,7 @@ extern struct drm_display_mode *intel_find_panel_downclock(
2605 + int intel_backlight_device_register(struct intel_connector *connector);
2606 + void intel_backlight_device_unregister(struct intel_connector *connector);
2607 + #else /* CONFIG_BACKLIGHT_CLASS_DEVICE */
2608 +-static int intel_backlight_device_register(struct intel_connector *connector)
2609 ++static inline int intel_backlight_device_register(struct intel_connector *connector)
2610 + {
2611 + return 0;
2612 + }
2613 +diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
2614 +index be4b4d546fd9..1cb1b01e4471 100644
2615 +--- a/drivers/gpu/drm/i915/intel_panel.c
2616 ++++ b/drivers/gpu/drm/i915/intel_panel.c
2617 +@@ -544,25 +544,6 @@ static u32 pwm_get_backlight(struct intel_connector *connector)
2618 + return DIV_ROUND_UP(duty_ns * 100, CRC_PMIC_PWM_PERIOD_NS);
2619 + }
2620 +
2621 +-static u32 intel_panel_get_backlight(struct intel_connector *connector)
2622 +-{
2623 +- struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
2624 +- struct intel_panel *panel = &connector->panel;
2625 +- u32 val = 0;
2626 +-
2627 +- mutex_lock(&dev_priv->backlight_lock);
2628 +-
2629 +- if (panel->backlight.enabled) {
2630 +- val = panel->backlight.get(connector);
2631 +- val = intel_panel_compute_brightness(connector, val);
2632 +- }
2633 +-
2634 +- mutex_unlock(&dev_priv->backlight_lock);
2635 +-
2636 +- DRM_DEBUG_DRIVER("get backlight PWM = %d\n", val);
2637 +- return val;
2638 +-}
2639 +-
2640 + static void lpt_set_backlight(struct intel_connector *connector, u32 level)
2641 + {
2642 + struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
2643 +@@ -646,30 +627,6 @@ intel_panel_actually_set_backlight(struct intel_connector *connector, u32 level)
2644 + panel->backlight.set(connector, level);
2645 + }
2646 +
2647 +-/* set backlight brightness to level in range [0..max], scaling wrt hw min */
2648 +-static void intel_panel_set_backlight(struct intel_connector *connector,
2649 +- u32 user_level, u32 user_max)
2650 +-{
2651 +- struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
2652 +- struct intel_panel *panel = &connector->panel;
2653 +- u32 hw_level;
2654 +-
2655 +- if (!panel->backlight.present)
2656 +- return;
2657 +-
2658 +- mutex_lock(&dev_priv->backlight_lock);
2659 +-
2660 +- WARN_ON(panel->backlight.max == 0);
2661 +-
2662 +- hw_level = scale_user_to_hw(connector, user_level, user_max);
2663 +- panel->backlight.level = hw_level;
2664 +-
2665 +- if (panel->backlight.enabled)
2666 +- intel_panel_actually_set_backlight(connector, hw_level);
2667 +-
2668 +- mutex_unlock(&dev_priv->backlight_lock);
2669 +-}
2670 +-
2671 + /* set backlight brightness to level in range [0..max], assuming hw min is
2672 + * respected.
2673 + */
2674 +@@ -1122,6 +1079,49 @@ void intel_panel_enable_backlight(struct intel_connector *connector)
2675 + }
2676 +
2677 + #if IS_ENABLED(CONFIG_BACKLIGHT_CLASS_DEVICE)
2678 ++static u32 intel_panel_get_backlight(struct intel_connector *connector)
2679 ++{
2680 ++ struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
2681 ++ struct intel_panel *panel = &connector->panel;
2682 ++ u32 val = 0;
2683 ++
2684 ++ mutex_lock(&dev_priv->backlight_lock);
2685 ++
2686 ++ if (panel->backlight.enabled) {
2687 ++ val = panel->backlight.get(connector);
2688 ++ val = intel_panel_compute_brightness(connector, val);
2689 ++ }
2690 ++
2691 ++ mutex_unlock(&dev_priv->backlight_lock);
2692 ++
2693 ++ DRM_DEBUG_DRIVER("get backlight PWM = %d\n", val);
2694 ++ return val;
2695 ++}
2696 ++
2697 ++/* set backlight brightness to level in range [0..max], scaling wrt hw min */
2698 ++static void intel_panel_set_backlight(struct intel_connector *connector,
2699 ++ u32 user_level, u32 user_max)
2700 ++{
2701 ++ struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
2702 ++ struct intel_panel *panel = &connector->panel;
2703 ++ u32 hw_level;
2704 ++
2705 ++ if (!panel->backlight.present)
2706 ++ return;
2707 ++
2708 ++ mutex_lock(&dev_priv->backlight_lock);
2709 ++
2710 ++ WARN_ON(panel->backlight.max == 0);
2711 ++
2712 ++ hw_level = scale_user_to_hw(connector, user_level, user_max);
2713 ++ panel->backlight.level = hw_level;
2714 ++
2715 ++ if (panel->backlight.enabled)
2716 ++ intel_panel_actually_set_backlight(connector, hw_level);
2717 ++
2718 ++ mutex_unlock(&dev_priv->backlight_lock);
2719 ++}
2720 ++
2721 + static int intel_backlight_device_update_status(struct backlight_device *bd)
2722 + {
2723 + struct intel_connector *connector = bl_get_data(bd);
2724 +diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.c b/drivers/gpu/drm/nouveau/nouveau_gem.c
2725 +index 72e2399bce39..909f69a302ee 100644
2726 +--- a/drivers/gpu/drm/nouveau/nouveau_gem.c
2727 ++++ b/drivers/gpu/drm/nouveau/nouveau_gem.c
2728 +@@ -369,7 +369,7 @@ validate_init(struct nouveau_channel *chan, struct drm_file *file_priv,
2729 + {
2730 + struct nouveau_cli *cli = nouveau_cli(file_priv);
2731 + int trycnt = 0;
2732 +- int ret, i;
2733 ++ int ret = -EINVAL, i;
2734 + struct nouveau_bo *res_bo = NULL;
2735 + LIST_HEAD(gart_list);
2736 + LIST_HEAD(vram_list);
2737 +diff --git a/drivers/idle/Kconfig b/drivers/idle/Kconfig
2738 +index 4732dfc15447..331adc509f3a 100644
2739 +--- a/drivers/idle/Kconfig
2740 ++++ b/drivers/idle/Kconfig
2741 +@@ -17,6 +17,7 @@ config I7300_IDLE_IOAT_CHANNEL
2742 +
2743 + config I7300_IDLE
2744 + tristate "Intel chipset idle memory power saving driver"
2745 ++ depends on PCI
2746 + select I7300_IDLE_IOAT_CHANNEL
2747 + help
2748 + Enable memory power savings when idle with certain Intel server
2749 +diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
2750 +index a09d6eed3b88..30f01613b518 100644
2751 +--- a/drivers/infiniband/core/cma.c
2752 ++++ b/drivers/infiniband/core/cma.c
2753 +@@ -744,6 +744,7 @@ struct rdma_cm_id *rdma_create_id(struct net *net,
2754 + INIT_LIST_HEAD(&id_priv->mc_list);
2755 + get_random_bytes(&id_priv->seq_num, sizeof id_priv->seq_num);
2756 + id_priv->id.route.addr.dev_addr.net = get_net(net);
2757 ++ id_priv->seq_num &= 0x00ffffff;
2758 +
2759 + return &id_priv->id;
2760 + }
2761 +diff --git a/drivers/infiniband/hw/i40iw/i40iw_d.h b/drivers/infiniband/hw/i40iw/i40iw_d.h
2762 +index 2fac1db0e0a0..d1328a697750 100644
2763 +--- a/drivers/infiniband/hw/i40iw/i40iw_d.h
2764 ++++ b/drivers/infiniband/hw/i40iw/i40iw_d.h
2765 +@@ -1102,7 +1102,7 @@
2766 + #define I40IWQPC_VLANTAG_MASK (0xffffULL << I40IWQPC_VLANTAG_SHIFT)
2767 +
2768 + #define I40IWQPC_ARPIDX_SHIFT 48
2769 +-#define I40IWQPC_ARPIDX_MASK (0xfffULL << I40IWQPC_ARPIDX_SHIFT)
2770 ++#define I40IWQPC_ARPIDX_MASK (0xffffULL << I40IWQPC_ARPIDX_SHIFT)
2771 +
2772 + #define I40IWQPC_FLOWLABEL_SHIFT 0
2773 + #define I40IWQPC_FLOWLABEL_MASK (0xfffffUL << I40IWQPC_FLOWLABEL_SHIFT)
2774 +diff --git a/drivers/input/keyboard/tca8418_keypad.c b/drivers/input/keyboard/tca8418_keypad.c
2775 +index 9002298698fc..3048ef3e3e16 100644
2776 +--- a/drivers/input/keyboard/tca8418_keypad.c
2777 ++++ b/drivers/input/keyboard/tca8418_keypad.c
2778 +@@ -164,11 +164,18 @@ static void tca8418_read_keypad(struct tca8418_keypad *keypad_data)
2779 + int error, col, row;
2780 + u8 reg, state, code;
2781 +
2782 +- /* Initial read of the key event FIFO */
2783 +- error = tca8418_read_byte(keypad_data, REG_KEY_EVENT_A, &reg);
2784 ++ do {
2785 ++ error = tca8418_read_byte(keypad_data, REG_KEY_EVENT_A, &reg);
2786 ++ if (error < 0) {
2787 ++ dev_err(&keypad_data->client->dev,
2788 ++ "unable to read REG_KEY_EVENT_A\n");
2789 ++ break;
2790 ++ }
2791 ++
2792 ++ /* Assume that key code 0 signifies empty FIFO */
2793 ++ if (reg <= 0)
2794 ++ break;
2795 +
2796 +- /* Assume that key code 0 signifies empty FIFO */
2797 +- while (error >= 0 && reg > 0) {
2798 + state = reg & KEY_EVENT_VALUE;
2799 + code = reg & KEY_EVENT_CODE;
2800 +
2801 +@@ -184,11 +191,7 @@ static void tca8418_read_keypad(struct tca8418_keypad *keypad_data)
2802 +
2803 + /* Read for next loop */
2804 + error = tca8418_read_byte(keypad_data, REG_KEY_EVENT_A, &reg);
2805 +- }
2806 +-
2807 +- if (error < 0)
2808 +- dev_err(&keypad_data->client->dev,
2809 +- "unable to read REG_KEY_EVENT_A\n");
2810 ++ } while (1);
2811 +
2812 + input_sync(input);
2813 + }
2814 +diff --git a/drivers/isdn/hardware/eicon/message.c b/drivers/isdn/hardware/eicon/message.c
2815 +index 296f1411fe84..3b11422b1cce 100644
2816 +--- a/drivers/isdn/hardware/eicon/message.c
2817 ++++ b/drivers/isdn/hardware/eicon/message.c
2818 +@@ -147,7 +147,7 @@ static word plci_remove_check(PLCI *);
2819 + static void listen_check(DIVA_CAPI_ADAPTER *);
2820 + static byte AddInfo(byte **, byte **, byte *, byte *);
2821 + static byte getChannel(API_PARSE *);
2822 +-static void IndParse(PLCI *, word *, byte **, byte);
2823 ++static void IndParse(PLCI *, const word *, byte **, byte);
2824 + static byte ie_compare(byte *, byte *);
2825 + static word find_cip(DIVA_CAPI_ADAPTER *, byte *, byte *);
2826 + static word CPN_filter_ok(byte *cpn, DIVA_CAPI_ADAPTER *, word);
2827 +@@ -4858,7 +4858,7 @@ static void sig_ind(PLCI *plci)
2828 + /* included before the ESC_MSGTYPE and MAXPARMSIDS has to be incremented */
2829 + /* SMSG is situated at the end because its 0 (for compatibility reasons */
2830 + /* (see Info_Mask Bit 4, first IE. then the message type) */
2831 +- word parms_id[] =
2832 ++ static const word parms_id[] =
2833 + {MAXPARMSIDS, CPN, 0xff, DSA, OSA, BC, LLC, HLC, ESC_CAUSE, DSP, DT, CHA,
2834 + UUI, CONG_RR, CONG_RNR, ESC_CHI, KEY, CHI, CAU, ESC_LAW,
2835 + RDN, RDX, CONN_NR, RIN, NI, CAI, ESC_CR,
2836 +@@ -4866,12 +4866,12 @@ static void sig_ind(PLCI *plci)
2837 + /* 14 FTY repl by ESC_CHI */
2838 + /* 18 PI repl by ESC_LAW */
2839 + /* removed OAD changed to 0xff for future use, OAD is multiIE now */
2840 +- word multi_fac_id[] = {1, FTY};
2841 +- word multi_pi_id[] = {1, PI};
2842 +- word multi_CiPN_id[] = {1, OAD};
2843 +- word multi_ssext_id[] = {1, ESC_SSEXT};
2844 ++ static const word multi_fac_id[] = {1, FTY};
2845 ++ static const word multi_pi_id[] = {1, PI};
2846 ++ static const word multi_CiPN_id[] = {1, OAD};
2847 ++ static const word multi_ssext_id[] = {1, ESC_SSEXT};
2848 +
2849 +- word multi_vswitch_id[] = {1, ESC_VSWITCH};
2850 ++ static const word multi_vswitch_id[] = {1, ESC_VSWITCH};
2851 +
2852 + byte *cau;
2853 + word ncci;
2854 +@@ -8924,7 +8924,7 @@ static void listen_check(DIVA_CAPI_ADAPTER *a)
2855 + /* functions for all parameters sent in INDs */
2856 + /*------------------------------------------------------------------*/
2857 +
2858 +-static void IndParse(PLCI *plci, word *parms_id, byte **parms, byte multiIEsize)
2859 ++static void IndParse(PLCI *plci, const word *parms_id, byte **parms, byte multiIEsize)
2860 + {
2861 + word ploc; /* points to current location within packet */
2862 + byte w;
2863 +diff --git a/drivers/media/i2c/s5k6aa.c b/drivers/media/i2c/s5k6aa.c
2864 +index faee11383cb7..4b615b4b0463 100644
2865 +--- a/drivers/media/i2c/s5k6aa.c
2866 ++++ b/drivers/media/i2c/s5k6aa.c
2867 +@@ -421,6 +421,7 @@ static int s5k6aa_set_ahb_address(struct i2c_client *client)
2868 +
2869 + /**
2870 + * s5k6aa_configure_pixel_clock - apply ISP main clock/PLL configuration
2871 ++ * @s5k6aa: pointer to &struct s5k6aa describing the device
2872 + *
2873 + * Configure the internal ISP PLL for the required output frequency.
2874 + * Locking: called with s5k6aa.lock mutex held.
2875 +@@ -669,6 +670,7 @@ static int s5k6aa_set_input_params(struct s5k6aa *s5k6aa)
2876 +
2877 + /**
2878 + * s5k6aa_configure_video_bus - configure the video output interface
2879 ++ * @s5k6aa: pointer to &struct s5k6aa describing the device
2880 + * @bus_type: video bus type: parallel or MIPI-CSI
2881 + * @nlanes: number of MIPI lanes to be used (MIPI-CSI only)
2882 + *
2883 +@@ -724,6 +726,8 @@ static int s5k6aa_new_config_sync(struct i2c_client *client, int timeout,
2884 +
2885 + /**
2886 + * s5k6aa_set_prev_config - write user preview register set
2887 ++ * @s5k6aa: pointer to &struct s5k6aa describing the device
2888 ++ * @preset: s5kaa preset to be applied
2889 + *
2890 + * Configure output resolution and color fromat, pixel clock
2891 + * frequency range, device frame rate type and frame period range.
2892 +@@ -777,6 +781,7 @@ static int s5k6aa_set_prev_config(struct s5k6aa *s5k6aa,
2893 +
2894 + /**
2895 + * s5k6aa_initialize_isp - basic ISP MCU initialization
2896 ++ * @sd: pointer to V4L2 sub-device descriptor
2897 + *
2898 + * Configure AHB addresses for registers read/write; configure PLLs for
2899 + * required output pixel clock. The ISP power supply needs to be already
2900 +diff --git a/drivers/media/i2c/tc358743.c b/drivers/media/i2c/tc358743.c
2901 +index 1e3a0dd2238c..26d999c812c9 100644
2902 +--- a/drivers/media/i2c/tc358743.c
2903 ++++ b/drivers/media/i2c/tc358743.c
2904 +@@ -193,57 +193,61 @@ static void i2c_wr(struct v4l2_subdev *sd, u16 reg, u8 *values, u32 n)
2905 + }
2906 + }
2907 +
2908 +-static u8 i2c_rd8(struct v4l2_subdev *sd, u16 reg)
2909 ++static noinline u32 i2c_rdreg(struct v4l2_subdev *sd, u16 reg, u32 n)
2910 + {
2911 +- u8 val;
2912 ++ __le32 val = 0;
2913 +
2914 +- i2c_rd(sd, reg, &val, 1);
2915 ++ i2c_rd(sd, reg, (u8 __force *)&val, n);
2916 +
2917 +- return val;
2918 ++ return le32_to_cpu(val);
2919 ++}
2920 ++
2921 ++static noinline void i2c_wrreg(struct v4l2_subdev *sd, u16 reg, u32 val, u32 n)
2922 ++{
2923 ++ __le32 raw = cpu_to_le32(val);
2924 ++
2925 ++ i2c_wr(sd, reg, (u8 __force *)&raw, n);
2926 ++}
2927 ++
2928 ++static u8 i2c_rd8(struct v4l2_subdev *sd, u16 reg)
2929 ++{
2930 ++ return i2c_rdreg(sd, reg, 1);
2931 + }
2932 +
2933 + static void i2c_wr8(struct v4l2_subdev *sd, u16 reg, u8 val)
2934 + {
2935 +- i2c_wr(sd, reg, &val, 1);
2936 ++ i2c_wrreg(sd, reg, val, 1);
2937 + }
2938 +
2939 + static void i2c_wr8_and_or(struct v4l2_subdev *sd, u16 reg,
2940 + u8 mask, u8 val)
2941 + {
2942 +- i2c_wr8(sd, reg, (i2c_rd8(sd, reg) & mask) | val);
2943 ++ i2c_wrreg(sd, reg, (i2c_rdreg(sd, reg, 2) & mask) | val, 2);
2944 + }
2945 +
2946 + static u16 i2c_rd16(struct v4l2_subdev *sd, u16 reg)
2947 + {
2948 +- u16 val;
2949 +-
2950 +- i2c_rd(sd, reg, (u8 *)&val, 2);
2951 +-
2952 +- return val;
2953 ++ return i2c_rdreg(sd, reg, 2);
2954 + }
2955 +
2956 + static void i2c_wr16(struct v4l2_subdev *sd, u16 reg, u16 val)
2957 + {
2958 +- i2c_wr(sd, reg, (u8 *)&val, 2);
2959 ++ i2c_wrreg(sd, reg, val, 2);
2960 + }
2961 +
2962 + static void i2c_wr16_and_or(struct v4l2_subdev *sd, u16 reg, u16 mask, u16 val)
2963 + {
2964 +- i2c_wr16(sd, reg, (i2c_rd16(sd, reg) & mask) | val);
2965 ++ i2c_wrreg(sd, reg, (i2c_rdreg(sd, reg, 2) & mask) | val, 2);
2966 + }
2967 +
2968 + static u32 i2c_rd32(struct v4l2_subdev *sd, u16 reg)
2969 + {
2970 +- u32 val;
2971 +-
2972 +- i2c_rd(sd, reg, (u8 *)&val, 4);
2973 +-
2974 +- return val;
2975 ++ return i2c_rdreg(sd, reg, 4);
2976 + }
2977 +
2978 + static void i2c_wr32(struct v4l2_subdev *sd, u16 reg, u32 val)
2979 + {
2980 +- i2c_wr(sd, reg, (u8 *)&val, 4);
2981 ++ i2c_wrreg(sd, reg, val, 4);
2982 + }
2983 +
2984 + /* --------------- STATUS --------------- */
2985 +@@ -1236,7 +1240,7 @@ static int tc358743_g_register(struct v4l2_subdev *sd,
2986 +
2987 + reg->size = tc358743_get_reg_size(reg->reg);
2988 +
2989 +- i2c_rd(sd, reg->reg, (u8 *)&reg->val, reg->size);
2990 ++ reg->val = i2c_rdreg(sd, reg->reg, reg->size);
2991 +
2992 + return 0;
2993 + }
2994 +@@ -1262,7 +1266,7 @@ static int tc358743_s_register(struct v4l2_subdev *sd,
2995 + reg->reg == BCAPS)
2996 + return 0;
2997 +
2998 +- i2c_wr(sd, (u16)reg->reg, (u8 *)&reg->val,
2999 ++ i2c_wrreg(sd, (u16)reg->reg, reg->val,
3000 + tc358743_get_reg_size(reg->reg));
3001 +
3002 + return 0;
3003 +diff --git a/drivers/media/pci/tw5864/tw5864-video.c b/drivers/media/pci/tw5864/tw5864-video.c
3004 +index 652a059b2e0a..1ddf80f85c24 100644
3005 +--- a/drivers/media/pci/tw5864/tw5864-video.c
3006 ++++ b/drivers/media/pci/tw5864/tw5864-video.c
3007 +@@ -708,6 +708,8 @@ static void tw5864_frame_interval_set(struct tw5864_input *input)
3008 + static int tw5864_frameinterval_get(struct tw5864_input *input,
3009 + struct v4l2_fract *frameinterval)
3010 + {
3011 ++ struct tw5864_dev *dev = input->root;
3012 ++
3013 + switch (input->std) {
3014 + case STD_NTSC:
3015 + frameinterval->numerator = 1001;
3016 +@@ -719,8 +721,8 @@ static int tw5864_frameinterval_get(struct tw5864_input *input,
3017 + frameinterval->denominator = 25;
3018 + break;
3019 + default:
3020 +- WARN(1, "tw5864_frameinterval_get requested for unknown std %d\n",
3021 +- input->std);
3022 ++ dev_warn(&dev->pci->dev, "tw5864_frameinterval_get requested for unknown std %d\n",
3023 ++ input->std);
3024 + return -EINVAL;
3025 + }
3026 +
3027 +diff --git a/drivers/media/usb/em28xx/Kconfig b/drivers/media/usb/em28xx/Kconfig
3028 +index d917b0a2beb1..aa131cf9989b 100644
3029 +--- a/drivers/media/usb/em28xx/Kconfig
3030 ++++ b/drivers/media/usb/em28xx/Kconfig
3031 +@@ -11,7 +11,7 @@ config VIDEO_EM28XX_V4L2
3032 + select VIDEO_SAA711X if MEDIA_SUBDRV_AUTOSELECT
3033 + select VIDEO_TVP5150 if MEDIA_SUBDRV_AUTOSELECT
3034 + select VIDEO_MSP3400 if MEDIA_SUBDRV_AUTOSELECT
3035 +- select VIDEO_MT9V011 if MEDIA_SUBDRV_AUTOSELECT
3036 ++ select VIDEO_MT9V011 if MEDIA_SUBDRV_AUTOSELECT && MEDIA_CAMERA_SUPPORT
3037 +
3038 + ---help---
3039 + This is a video4linux driver for Empia 28xx based TV cards.
3040 +diff --git a/drivers/media/usb/go7007/Kconfig b/drivers/media/usb/go7007/Kconfig
3041 +index 95a3af644a92..af1d02430931 100644
3042 +--- a/drivers/media/usb/go7007/Kconfig
3043 ++++ b/drivers/media/usb/go7007/Kconfig
3044 +@@ -11,7 +11,7 @@ config VIDEO_GO7007
3045 + select VIDEO_TW2804 if MEDIA_SUBDRV_AUTOSELECT
3046 + select VIDEO_TW9903 if MEDIA_SUBDRV_AUTOSELECT
3047 + select VIDEO_TW9906 if MEDIA_SUBDRV_AUTOSELECT
3048 +- select VIDEO_OV7640 if MEDIA_SUBDRV_AUTOSELECT
3049 ++ select VIDEO_OV7640 if MEDIA_SUBDRV_AUTOSELECT && MEDIA_CAMERA_SUPPORT
3050 + select VIDEO_UDA1342 if MEDIA_SUBDRV_AUTOSELECT
3051 + ---help---
3052 + This is a video4linux driver for the WIS GO7007 MPEG
3053 +diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
3054 +index 95c32f2d7601..db28e22edbf9 100644
3055 +--- a/drivers/net/Kconfig
3056 ++++ b/drivers/net/Kconfig
3057 +@@ -437,6 +437,9 @@ config XEN_NETDEV_BACKEND
3058 + config VMXNET3
3059 + tristate "VMware VMXNET3 ethernet driver"
3060 + depends on PCI && INET
3061 ++ depends on !(PAGE_SIZE_64KB || ARM64_64K_PAGES || \
3062 ++ IA64_PAGE_SIZE_64KB || MICROBLAZE_64K_PAGES || \
3063 ++ PARISC_PAGE_SIZE_64KB || PPC_64K_PAGES)
3064 + help
3065 + This driver supports VMware's vmxnet3 virtual ethernet NIC.
3066 + To compile this driver as a module, choose M here: the
3067 +diff --git a/drivers/net/ethernet/arc/emac_rockchip.c b/drivers/net/ethernet/arc/emac_rockchip.c
3068 +index e278e3d96ee0..c6163874e4e7 100644
3069 +--- a/drivers/net/ethernet/arc/emac_rockchip.c
3070 ++++ b/drivers/net/ethernet/arc/emac_rockchip.c
3071 +@@ -220,9 +220,11 @@ static int emac_rockchip_probe(struct platform_device *pdev)
3072 +
3073 + /* RMII TX/RX needs always a rate of 25MHz */
3074 + err = clk_set_rate(priv->macclk, 25000000);
3075 +- if (err)
3076 ++ if (err) {
3077 + dev_err(dev,
3078 + "failed to change mac clock rate (%d)\n", err);
3079 ++ goto out_clk_disable_macclk;
3080 ++ }
3081 + }
3082 +
3083 + err = arc_emac_probe(ndev, interface);
3084 +@@ -232,7 +234,8 @@ static int emac_rockchip_probe(struct platform_device *pdev)
3085 + }
3086 +
3087 + return 0;
3088 +-
3089 ++out_clk_disable_macclk:
3090 ++ clk_disable_unprepare(priv->macclk);
3091 + out_regulator_disable:
3092 + if (priv->regulator)
3093 + regulator_disable(priv->regulator);
3094 +diff --git a/drivers/net/ethernet/freescale/gianfar.c b/drivers/net/ethernet/freescale/gianfar.c
3095 +index fd206889a433..e3b41ba95168 100644
3096 +--- a/drivers/net/ethernet/freescale/gianfar.c
3097 ++++ b/drivers/net/ethernet/freescale/gianfar.c
3098 +@@ -1375,9 +1375,11 @@ static int gfar_probe(struct platform_device *ofdev)
3099 +
3100 + gfar_init_addr_hash_table(priv);
3101 +
3102 +- /* Insert receive time stamps into padding alignment bytes */
3103 ++ /* Insert receive time stamps into padding alignment bytes, and
3104 ++ * plus 2 bytes padding to ensure the cpu alignment.
3105 ++ */
3106 + if (priv->device_flags & FSL_GIANFAR_DEV_HAS_TIMER)
3107 +- priv->padding = 8;
3108 ++ priv->padding = 8 + DEFAULT_PADDING;
3109 +
3110 + if (dev->features & NETIF_F_IP_CSUM ||
3111 + priv->device_flags & FSL_GIANFAR_DEV_HAS_TIMER)
3112 +@@ -1787,6 +1789,7 @@ static int init_phy(struct net_device *dev)
3113 + GFAR_SUPPORTED_GBIT : 0;
3114 + phy_interface_t interface;
3115 + struct phy_device *phydev;
3116 ++ struct ethtool_eee edata;
3117 +
3118 + priv->oldlink = 0;
3119 + priv->oldspeed = 0;
3120 +@@ -1811,6 +1814,10 @@ static int init_phy(struct net_device *dev)
3121 + /* Add support for flow control, but don't advertise it by default */
3122 + phydev->supported |= (SUPPORTED_Pause | SUPPORTED_Asym_Pause);
3123 +
3124 ++ /* disable EEE autoneg, EEE not supported by eTSEC */
3125 ++ memset(&edata, 0, sizeof(struct ethtool_eee));
3126 ++ phy_ethtool_set_eee(phydev, &edata);
3127 ++
3128 + return 0;
3129 + }
3130 +
3131 +diff --git a/drivers/net/hippi/rrunner.c b/drivers/net/hippi/rrunner.c
3132 +index 95c0b45a68fb..313e006f74fe 100644
3133 +--- a/drivers/net/hippi/rrunner.c
3134 ++++ b/drivers/net/hippi/rrunner.c
3135 +@@ -1381,8 +1381,8 @@ static int rr_close(struct net_device *dev)
3136 + rrpriv->info_dma);
3137 + rrpriv->info = NULL;
3138 +
3139 +- free_irq(pdev->irq, dev);
3140 + spin_unlock_irqrestore(&rrpriv->lock, flags);
3141 ++ free_irq(pdev->irq, dev);
3142 +
3143 + return 0;
3144 + }
3145 +diff --git a/drivers/net/ipvlan/ipvlan_core.c b/drivers/net/ipvlan/ipvlan_core.c
3146 +index 980e38524418..627eb825eb74 100644
3147 +--- a/drivers/net/ipvlan/ipvlan_core.c
3148 ++++ b/drivers/net/ipvlan/ipvlan_core.c
3149 +@@ -370,6 +370,7 @@ static int ipvlan_process_v4_outbound(struct sk_buff *skb)
3150 + .flowi4_oif = dev->ifindex,
3151 + .flowi4_tos = RT_TOS(ip4h->tos),
3152 + .flowi4_flags = FLOWI_FLAG_ANYSRC,
3153 ++ .flowi4_mark = skb->mark,
3154 + .daddr = ip4h->daddr,
3155 + .saddr = ip4h->saddr,
3156 + };
3157 +diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
3158 +index edffe5aeeeb1..d46f086e6360 100644
3159 +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
3160 ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
3161 +@@ -2049,7 +2049,7 @@ static int brcmf_sdio_txpkt_hdalign(struct brcmf_sdio *bus, struct sk_buff *pkt)
3162 + return head_pad;
3163 + }
3164 +
3165 +-/**
3166 ++/*
3167 + * struct brcmf_skbuff_cb reserves first two bytes in sk_buff::cb for
3168 + * bus layer usage.
3169 + */
3170 +diff --git a/drivers/net/wireless/st/cw1200/wsm.c b/drivers/net/wireless/st/cw1200/wsm.c
3171 +index 680d60eabc75..ed93bf3474ec 100644
3172 +--- a/drivers/net/wireless/st/cw1200/wsm.c
3173 ++++ b/drivers/net/wireless/st/cw1200/wsm.c
3174 +@@ -379,7 +379,6 @@ static int wsm_multi_tx_confirm(struct cw1200_common *priv,
3175 + {
3176 + int ret;
3177 + int count;
3178 +- int i;
3179 +
3180 + count = WSM_GET32(buf);
3181 + if (WARN_ON(count <= 0))
3182 +@@ -395,11 +394,10 @@ static int wsm_multi_tx_confirm(struct cw1200_common *priv,
3183 + }
3184 +
3185 + cw1200_debug_txed_multi(priv, count);
3186 +- for (i = 0; i < count; ++i) {
3187 ++ do {
3188 + ret = wsm_tx_confirm(priv, buf, link_id);
3189 +- if (ret)
3190 +- return ret;
3191 +- }
3192 ++ } while (!ret && --count);
3193 ++
3194 + return ret;
3195 +
3196 + underflow:
3197 +diff --git a/drivers/pci/host/vmd.c b/drivers/pci/host/vmd.c
3198 +index 37e29b580be3..0e7f8f319fe3 100644
3199 +--- a/drivers/pci/host/vmd.c
3200 ++++ b/drivers/pci/host/vmd.c
3201 +@@ -727,7 +727,7 @@ static void vmd_remove(struct pci_dev *dev)
3202 + irq_domain_remove(vmd->irq_domain);
3203 + }
3204 +
3205 +-#ifdef CONFIG_PM
3206 ++#ifdef CONFIG_PM_SLEEP
3207 + static int vmd_suspend(struct device *dev)
3208 + {
3209 + struct pci_dev *pdev = to_pci_dev(dev);
3210 +diff --git a/drivers/perf/xgene_pmu.c b/drivers/perf/xgene_pmu.c
3211 +index a8ac4bcef2c0..35b5289bc5da 100644
3212 +--- a/drivers/perf/xgene_pmu.c
3213 ++++ b/drivers/perf/xgene_pmu.c
3214 +@@ -25,6 +25,7 @@
3215 + #include <linux/interrupt.h>
3216 + #include <linux/io.h>
3217 + #include <linux/mfd/syscon.h>
3218 ++#include <linux/module.h>
3219 + #include <linux/of_address.h>
3220 + #include <linux/of_fdt.h>
3221 + #include <linux/of_irq.h>
3222 +diff --git a/drivers/pinctrl/sunxi/pinctrl-sun50i-a64.c b/drivers/pinctrl/sunxi/pinctrl-sun50i-a64.c
3223 +index 4f2a726bbaeb..f5f77432ce6f 100644
3224 +--- a/drivers/pinctrl/sunxi/pinctrl-sun50i-a64.c
3225 ++++ b/drivers/pinctrl/sunxi/pinctrl-sun50i-a64.c
3226 +@@ -428,7 +428,7 @@ static const struct sunxi_desc_pin a64_pins[] = {
3227 + SUNXI_FUNCTION(0x0, "gpio_in"),
3228 + SUNXI_FUNCTION(0x1, "gpio_out"),
3229 + SUNXI_FUNCTION(0x2, "mmc0"), /* D3 */
3230 +- SUNXI_FUNCTION(0x4, "uart0")), /* RX */
3231 ++ SUNXI_FUNCTION(0x3, "uart0")), /* RX */
3232 + SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 5),
3233 + SUNXI_FUNCTION(0x0, "gpio_in"),
3234 + SUNXI_FUNCTION(0x1, "gpio_out"),
3235 +diff --git a/drivers/pinctrl/sunxi/pinctrl-sun9i-a80.c b/drivers/pinctrl/sunxi/pinctrl-sun9i-a80.c
3236 +index 1b580ba76453..907d7db3fcee 100644
3237 +--- a/drivers/pinctrl/sunxi/pinctrl-sun9i-a80.c
3238 ++++ b/drivers/pinctrl/sunxi/pinctrl-sun9i-a80.c
3239 +@@ -145,19 +145,19 @@ static const struct sunxi_desc_pin sun9i_a80_pins[] = {
3240 + SUNXI_FUNCTION(0x0, "gpio_in"),
3241 + SUNXI_FUNCTION(0x1, "gpio_out"),
3242 + SUNXI_FUNCTION(0x3, "mcsi"), /* MCLK */
3243 +- SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 14)), /* PB_EINT14 */
3244 ++ SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 14)), /* PB_EINT14 */
3245 + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 15),
3246 + SUNXI_FUNCTION(0x0, "gpio_in"),
3247 + SUNXI_FUNCTION(0x1, "gpio_out"),
3248 + SUNXI_FUNCTION(0x3, "mcsi"), /* SCK */
3249 + SUNXI_FUNCTION(0x4, "i2c4"), /* SCK */
3250 +- SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 15)), /* PB_EINT15 */
3251 ++ SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 15)), /* PB_EINT15 */
3252 + SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 16),
3253 + SUNXI_FUNCTION(0x0, "gpio_in"),
3254 + SUNXI_FUNCTION(0x1, "gpio_out"),
3255 + SUNXI_FUNCTION(0x3, "mcsi"), /* SDA */
3256 + SUNXI_FUNCTION(0x4, "i2c4"), /* SDA */
3257 +- SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 16)), /* PB_EINT16 */
3258 ++ SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 16)), /* PB_EINT16 */
3259 +
3260 + /* Hole */
3261 + SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 0),
3262 +diff --git a/drivers/platform/x86/dell-laptop.c b/drivers/platform/x86/dell-laptop.c
3263 +index 2c2f02b2e08a..167d5042a629 100644
3264 +--- a/drivers/platform/x86/dell-laptop.c
3265 ++++ b/drivers/platform/x86/dell-laptop.c
3266 +@@ -45,6 +45,7 @@
3267 +
3268 + struct quirk_entry {
3269 + u8 touchpad_led;
3270 ++ u8 kbd_led_levels_off_1;
3271 +
3272 + int needs_kbd_timeouts;
3273 + /*
3274 +@@ -75,6 +76,10 @@ static struct quirk_entry quirk_dell_xps13_9333 = {
3275 + .kbd_timeouts = { 0, 5, 15, 60, 5 * 60, 15 * 60, -1 },
3276 + };
3277 +
3278 ++static struct quirk_entry quirk_dell_latitude_e6410 = {
3279 ++ .kbd_led_levels_off_1 = 1,
3280 ++};
3281 ++
3282 + static struct platform_driver platform_driver = {
3283 + .driver = {
3284 + .name = "dell-laptop",
3285 +@@ -270,6 +275,15 @@ static const struct dmi_system_id dell_quirks[] __initconst = {
3286 + },
3287 + .driver_data = &quirk_dell_xps13_9333,
3288 + },
3289 ++ {
3290 ++ .callback = dmi_matched,
3291 ++ .ident = "Dell Latitude E6410",
3292 ++ .matches = {
3293 ++ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
3294 ++ DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6410"),
3295 ++ },
3296 ++ .driver_data = &quirk_dell_latitude_e6410,
3297 ++ },
3298 + { }
3299 + };
3300 +
3301 +@@ -1170,6 +1184,9 @@ static int kbd_get_info(struct kbd_info *info)
3302 + units = (buffer->output[2] >> 8) & 0xFF;
3303 + info->levels = (buffer->output[2] >> 16) & 0xFF;
3304 +
3305 ++ if (quirks && quirks->kbd_led_levels_off_1 && info->levels)
3306 ++ info->levels--;
3307 ++
3308 + if (units & BIT(0))
3309 + info->seconds = (buffer->output[3] >> 0) & 0xFF;
3310 + if (units & BIT(1))
3311 +diff --git a/drivers/platform/x86/intel_mid_thermal.c b/drivers/platform/x86/intel_mid_thermal.c
3312 +index 5c768c4627d3..78e1bfee698a 100644
3313 +--- a/drivers/platform/x86/intel_mid_thermal.c
3314 ++++ b/drivers/platform/x86/intel_mid_thermal.c
3315 +@@ -415,6 +415,7 @@ static struct thermal_device_info *initialize_sensor(int index)
3316 + return td_info;
3317 + }
3318 +
3319 ++#ifdef CONFIG_PM_SLEEP
3320 + /**
3321 + * mid_thermal_resume - resume routine
3322 + * @dev: device structure
3323 +@@ -442,6 +443,7 @@ static int mid_thermal_suspend(struct device *dev)
3324 + */
3325 + return configure_adc(0);
3326 + }
3327 ++#endif
3328 +
3329 + static SIMPLE_DEV_PM_OPS(mid_thermal_pm,
3330 + mid_thermal_suspend, mid_thermal_resume);
3331 +diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c
3332 +index a7a88476e215..0f5bc2f8382b 100644
3333 +--- a/drivers/s390/block/dasd_eckd.c
3334 ++++ b/drivers/s390/block/dasd_eckd.c
3335 +@@ -521,10 +521,12 @@ static int prefix_LRE(struct ccw1 *ccw, struct PFX_eckd_data *pfxdata,
3336 + pfxdata->validity.define_extent = 1;
3337 +
3338 + /* private uid is kept up to date, conf_data may be outdated */
3339 +- if (startpriv->uid.type != UA_BASE_DEVICE) {
3340 ++ if (startpriv->uid.type == UA_BASE_PAV_ALIAS)
3341 + pfxdata->validity.verify_base = 1;
3342 +- if (startpriv->uid.type == UA_HYPER_PAV_ALIAS)
3343 +- pfxdata->validity.hyper_pav = 1;
3344 ++
3345 ++ if (startpriv->uid.type == UA_HYPER_PAV_ALIAS) {
3346 ++ pfxdata->validity.verify_base = 1;
3347 ++ pfxdata->validity.hyper_pav = 1;
3348 + }
3349 +
3350 + /* define extend data (mostly)*/
3351 +@@ -3471,10 +3473,12 @@ static int prepare_itcw(struct itcw *itcw,
3352 + pfxdata.validity.define_extent = 1;
3353 +
3354 + /* private uid is kept up to date, conf_data may be outdated */
3355 +- if (startpriv->uid.type != UA_BASE_DEVICE) {
3356 ++ if (startpriv->uid.type == UA_BASE_PAV_ALIAS)
3357 ++ pfxdata.validity.verify_base = 1;
3358 ++
3359 ++ if (startpriv->uid.type == UA_HYPER_PAV_ALIAS) {
3360 + pfxdata.validity.verify_base = 1;
3361 +- if (startpriv->uid.type == UA_HYPER_PAV_ALIAS)
3362 +- pfxdata.validity.hyper_pav = 1;
3363 ++ pfxdata.validity.hyper_pav = 1;
3364 + }
3365 +
3366 + switch (cmd) {
3367 +diff --git a/drivers/scsi/advansys.c b/drivers/scsi/advansys.c
3368 +index febbd83e2ecd..24e57e770432 100644
3369 +--- a/drivers/scsi/advansys.c
3370 ++++ b/drivers/scsi/advansys.c
3371 +@@ -6291,18 +6291,17 @@ static uchar AscGetSynPeriodIndex(ASC_DVC_VAR *asc_dvc, uchar syn_time)
3372 + static uchar
3373 + AscMsgOutSDTR(ASC_DVC_VAR *asc_dvc, uchar sdtr_period, uchar sdtr_offset)
3374 + {
3375 +- EXT_MSG sdtr_buf;
3376 +- uchar sdtr_period_index;
3377 +- PortAddr iop_base;
3378 +-
3379 +- iop_base = asc_dvc->iop_base;
3380 +- sdtr_buf.msg_type = EXTENDED_MESSAGE;
3381 +- sdtr_buf.msg_len = MS_SDTR_LEN;
3382 +- sdtr_buf.msg_req = EXTENDED_SDTR;
3383 +- sdtr_buf.xfer_period = sdtr_period;
3384 ++ PortAddr iop_base = asc_dvc->iop_base;
3385 ++ uchar sdtr_period_index = AscGetSynPeriodIndex(asc_dvc, sdtr_period);
3386 ++ EXT_MSG sdtr_buf = {
3387 ++ .msg_type = EXTENDED_MESSAGE,
3388 ++ .msg_len = MS_SDTR_LEN,
3389 ++ .msg_req = EXTENDED_SDTR,
3390 ++ .xfer_period = sdtr_period,
3391 ++ .req_ack_offset = sdtr_offset,
3392 ++ };
3393 + sdtr_offset &= ASC_SYN_MAX_OFFSET;
3394 +- sdtr_buf.req_ack_offset = sdtr_offset;
3395 +- sdtr_period_index = AscGetSynPeriodIndex(asc_dvc, sdtr_period);
3396 ++
3397 + if (sdtr_period_index <= asc_dvc->max_sdtr_index) {
3398 + AscMemWordCopyPtrToLram(iop_base, ASCV_MSGOUT_BEG,
3399 + (uchar *)&sdtr_buf,
3400 +@@ -11030,6 +11029,9 @@ static int advansys_board_found(struct Scsi_Host *shost, unsigned int iop,
3401 + ASC_DBG(2, "AdvInitGetConfig()\n");
3402 +
3403 + ret = AdvInitGetConfig(pdev, shost) ? -ENODEV : 0;
3404 ++#else
3405 ++ share_irq = 0;
3406 ++ ret = -ENODEV;
3407 + #endif /* CONFIG_PCI */
3408 + }
3409 +
3410 +diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig
3411 +index b7995474148c..0e7415f6d093 100644
3412 +--- a/drivers/spi/Kconfig
3413 ++++ b/drivers/spi/Kconfig
3414 +@@ -156,6 +156,7 @@ config SPI_BCM63XX_HSSPI
3415 + config SPI_BCM_QSPI
3416 + tristate "Broadcom BSPI and MSPI controller support"
3417 + depends on ARCH_BRCMSTB || ARCH_BCM || ARCH_BCM_IPROC || COMPILE_TEST
3418 ++ depends on MTD_NORFLASH
3419 + default ARCH_BCM_IPROC
3420 + help
3421 + Enables support for the Broadcom SPI flash and MSPI controller.
3422 +diff --git a/drivers/spi/spi-sun4i.c b/drivers/spi/spi-sun4i.c
3423 +index 4969dc10684a..d8995b6c5a7e 100644
3424 +--- a/drivers/spi/spi-sun4i.c
3425 ++++ b/drivers/spi/spi-sun4i.c
3426 +@@ -466,7 +466,7 @@ static int sun4i_spi_probe(struct platform_device *pdev)
3427 +
3428 + static int sun4i_spi_remove(struct platform_device *pdev)
3429 + {
3430 +- pm_runtime_disable(&pdev->dev);
3431 ++ pm_runtime_force_suspend(&pdev->dev);
3432 +
3433 + return 0;
3434 + }
3435 +diff --git a/drivers/staging/android/ashmem.c b/drivers/staging/android/ashmem.c
3436 +index 558a66b459fa..d08324998933 100644
3437 +--- a/drivers/staging/android/ashmem.c
3438 ++++ b/drivers/staging/android/ashmem.c
3439 +@@ -719,30 +719,32 @@ static int ashmem_pin_unpin(struct ashmem_area *asma, unsigned long cmd,
3440 + size_t pgstart, pgend;
3441 + int ret = -EINVAL;
3442 +
3443 ++ mutex_lock(&ashmem_mutex);
3444 ++
3445 + if (unlikely(!asma->file))
3446 +- return -EINVAL;
3447 ++ goto out_unlock;
3448 +
3449 +- if (unlikely(copy_from_user(&pin, p, sizeof(pin))))
3450 +- return -EFAULT;
3451 ++ if (unlikely(copy_from_user(&pin, p, sizeof(pin)))) {
3452 ++ ret = -EFAULT;
3453 ++ goto out_unlock;
3454 ++ }
3455 +
3456 + /* per custom, you can pass zero for len to mean "everything onward" */
3457 + if (!pin.len)
3458 + pin.len = PAGE_ALIGN(asma->size) - pin.offset;
3459 +
3460 + if (unlikely((pin.offset | pin.len) & ~PAGE_MASK))
3461 +- return -EINVAL;
3462 ++ goto out_unlock;
3463 +
3464 + if (unlikely(((__u32)-1) - pin.offset < pin.len))
3465 +- return -EINVAL;
3466 ++ goto out_unlock;
3467 +
3468 + if (unlikely(PAGE_ALIGN(asma->size) < pin.offset + pin.len))
3469 +- return -EINVAL;
3470 ++ goto out_unlock;
3471 +
3472 + pgstart = pin.offset / PAGE_SIZE;
3473 + pgend = pgstart + (pin.len / PAGE_SIZE) - 1;
3474 +
3475 +- mutex_lock(&ashmem_mutex);
3476 +-
3477 + switch (cmd) {
3478 + case ASHMEM_PIN:
3479 + ret = ashmem_pin(asma, pgstart, pgend);
3480 +@@ -755,6 +757,7 @@ static int ashmem_pin_unpin(struct ashmem_area *asma, unsigned long cmd,
3481 + break;
3482 + }
3483 +
3484 ++out_unlock:
3485 + mutex_unlock(&ashmem_mutex);
3486 +
3487 + return ret;
3488 +diff --git a/drivers/staging/android/ion/ion-ioctl.c b/drivers/staging/android/ion/ion-ioctl.c
3489 +index 7e7431d8d49f..2b700e8455c6 100644
3490 +--- a/drivers/staging/android/ion/ion-ioctl.c
3491 ++++ b/drivers/staging/android/ion/ion-ioctl.c
3492 +@@ -83,8 +83,10 @@ long ion_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
3493 + return -EFAULT;
3494 +
3495 + ret = validate_ioctl_arg(cmd, &data);
3496 +- if (WARN_ON_ONCE(ret))
3497 ++ if (ret) {
3498 ++ pr_warn_once("%s: ioctl validate failed\n", __func__);
3499 + return ret;
3500 ++ }
3501 +
3502 + if (!(dir & _IOC_WRITE))
3503 + memset(&data, 0, sizeof(data));
3504 +diff --git a/drivers/staging/android/ion/ion_system_heap.c b/drivers/staging/android/ion/ion_system_heap.c
3505 +index 7e023d505af8..d270a424ecac 100644
3506 +--- a/drivers/staging/android/ion/ion_system_heap.c
3507 ++++ b/drivers/staging/android/ion/ion_system_heap.c
3508 +@@ -384,7 +384,7 @@ static int ion_system_contig_heap_allocate(struct ion_heap *heap,
3509 + if (align > (PAGE_SIZE << order))
3510 + return -EINVAL;
3511 +
3512 +- page = alloc_pages(low_order_gfp_flags, order);
3513 ++ page = alloc_pages(low_order_gfp_flags | __GFP_NOWARN, order);
3514 + if (!page)
3515 + return -ENOMEM;
3516 +
3517 +diff --git a/drivers/staging/iio/adc/ad7192.c b/drivers/staging/iio/adc/ad7192.c
3518 +index eeacb0e55db7..4dc9ca3a11b4 100644
3519 +--- a/drivers/staging/iio/adc/ad7192.c
3520 ++++ b/drivers/staging/iio/adc/ad7192.c
3521 +@@ -141,6 +141,8 @@
3522 + #define AD7192_GPOCON_P1DAT BIT(1) /* P1 state */
3523 + #define AD7192_GPOCON_P0DAT BIT(0) /* P0 state */
3524 +
3525 ++#define AD7192_EXT_FREQ_MHZ_MIN 2457600
3526 ++#define AD7192_EXT_FREQ_MHZ_MAX 5120000
3527 + #define AD7192_INT_FREQ_MHZ 4915200
3528 +
3529 + /* NOTE:
3530 +@@ -216,6 +218,12 @@ static int ad7192_calibrate_all(struct ad7192_state *st)
3531 + ARRAY_SIZE(ad7192_calib_arr));
3532 + }
3533 +
3534 ++static inline bool ad7192_valid_external_frequency(u32 freq)
3535 ++{
3536 ++ return (freq >= AD7192_EXT_FREQ_MHZ_MIN &&
3537 ++ freq <= AD7192_EXT_FREQ_MHZ_MAX);
3538 ++}
3539 ++
3540 + static int ad7192_setup(struct ad7192_state *st,
3541 + const struct ad7192_platform_data *pdata)
3542 + {
3543 +@@ -241,17 +249,20 @@ static int ad7192_setup(struct ad7192_state *st,
3544 + id);
3545 +
3546 + switch (pdata->clock_source_sel) {
3547 +- case AD7192_CLK_EXT_MCLK1_2:
3548 +- case AD7192_CLK_EXT_MCLK2:
3549 +- st->mclk = AD7192_INT_FREQ_MHZ;
3550 +- break;
3551 + case AD7192_CLK_INT:
3552 + case AD7192_CLK_INT_CO:
3553 +- if (pdata->ext_clk_hz)
3554 +- st->mclk = pdata->ext_clk_hz;
3555 +- else
3556 +- st->mclk = AD7192_INT_FREQ_MHZ;
3557 ++ st->mclk = AD7192_INT_FREQ_MHZ;
3558 + break;
3559 ++ case AD7192_CLK_EXT_MCLK1_2:
3560 ++ case AD7192_CLK_EXT_MCLK2:
3561 ++ if (ad7192_valid_external_frequency(pdata->ext_clk_hz)) {
3562 ++ st->mclk = pdata->ext_clk_hz;
3563 ++ break;
3564 ++ }
3565 ++ dev_err(&st->sd.spi->dev, "Invalid frequency setting %u\n",
3566 ++ pdata->ext_clk_hz);
3567 ++ ret = -EINVAL;
3568 ++ goto out;
3569 + default:
3570 + ret = -EINVAL;
3571 + goto out;
3572 +diff --git a/drivers/staging/iio/impedance-analyzer/ad5933.c b/drivers/staging/iio/impedance-analyzer/ad5933.c
3573 +index 3892a7470410..4c7465c2d91c 100644
3574 +--- a/drivers/staging/iio/impedance-analyzer/ad5933.c
3575 ++++ b/drivers/staging/iio/impedance-analyzer/ad5933.c
3576 +@@ -642,8 +642,6 @@ static int ad5933_register_ring_funcs_and_init(struct iio_dev *indio_dev)
3577 + /* Ring buffer functions - here trigger setup related */
3578 + indio_dev->setup_ops = &ad5933_ring_setup_ops;
3579 +
3580 +- indio_dev->modes |= INDIO_BUFFER_HARDWARE;
3581 +-
3582 + return 0;
3583 + }
3584 +
3585 +@@ -754,7 +752,7 @@ static int ad5933_probe(struct i2c_client *client,
3586 + indio_dev->dev.parent = &client->dev;
3587 + indio_dev->info = &ad5933_info;
3588 + indio_dev->name = id->name;
3589 +- indio_dev->modes = INDIO_DIRECT_MODE;
3590 ++ indio_dev->modes = (INDIO_BUFFER_SOFTWARE | INDIO_DIRECT_MODE);
3591 + indio_dev->channels = ad5933_channels;
3592 + indio_dev->num_channels = ARRAY_SIZE(ad5933_channels);
3593 +
3594 +diff --git a/drivers/staging/lustre/lnet/libcfs/linux/linux-crypto-adler.c b/drivers/staging/lustre/lnet/libcfs/linux/linux-crypto-adler.c
3595 +index db0572733712..ab30a0f5129c 100644
3596 +--- a/drivers/staging/lustre/lnet/libcfs/linux/linux-crypto-adler.c
3597 ++++ b/drivers/staging/lustre/lnet/libcfs/linux/linux-crypto-adler.c
3598 +@@ -119,6 +119,7 @@ static struct shash_alg alg = {
3599 + .cra_name = "adler32",
3600 + .cra_driver_name = "adler32-zlib",
3601 + .cra_priority = 100,
3602 ++ .cra_flags = CRYPTO_ALG_OPTIONAL_KEY,
3603 + .cra_blocksize = CHKSUM_BLOCK_SIZE,
3604 + .cra_ctxsize = sizeof(u32),
3605 + .cra_module = THIS_MODULE,
3606 +diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
3607 +index a13541bdc726..6356295672cb 100644
3608 +--- a/drivers/thermal/Kconfig
3609 ++++ b/drivers/thermal/Kconfig
3610 +@@ -316,7 +316,7 @@ config X86_PKG_TEMP_THERMAL
3611 +
3612 + config INTEL_SOC_DTS_IOSF_CORE
3613 + tristate
3614 +- depends on X86
3615 ++ depends on X86 && PCI
3616 + select IOSF_MBI
3617 + help
3618 + This is becoming a common feature for Intel SoCs to expose the additional
3619 +@@ -326,7 +326,7 @@ config INTEL_SOC_DTS_IOSF_CORE
3620 +
3621 + config INTEL_SOC_DTS_THERMAL
3622 + tristate "Intel SoCs DTS thermal driver"
3623 +- depends on X86
3624 ++ depends on X86 && PCI
3625 + select INTEL_SOC_DTS_IOSF_CORE
3626 + select THERMAL_WRITABLE_TRIPS
3627 + help
3628 +diff --git a/drivers/usb/dwc3/dwc3-of-simple.c b/drivers/usb/dwc3/dwc3-of-simple.c
3629 +index fe414e7a9c78..a3e2200f5b5f 100644
3630 +--- a/drivers/usb/dwc3/dwc3-of-simple.c
3631 ++++ b/drivers/usb/dwc3/dwc3-of-simple.c
3632 +@@ -58,8 +58,10 @@ static int dwc3_of_simple_clk_init(struct dwc3_of_simple *simple, int count)
3633 +
3634 + clk = of_clk_get(np, i);
3635 + if (IS_ERR(clk)) {
3636 +- while (--i >= 0)
3637 ++ while (--i >= 0) {
3638 ++ clk_disable_unprepare(simple->clks[i]);
3639 + clk_put(simple->clks[i]);
3640 ++ }
3641 + return PTR_ERR(clk);
3642 + }
3643 +
3644 +diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
3645 +index 16c67120d72b..f483c3b1e971 100644
3646 +--- a/drivers/usb/dwc3/gadget.c
3647 ++++ b/drivers/usb/dwc3/gadget.c
3648 +@@ -247,7 +247,7 @@ int dwc3_send_gadget_ep_cmd(struct dwc3_ep *dep, unsigned cmd,
3649 + struct dwc3_gadget_ep_cmd_params *params)
3650 + {
3651 + struct dwc3 *dwc = dep->dwc;
3652 +- u32 timeout = 500;
3653 ++ u32 timeout = 1000;
3654 + u32 reg;
3655 +
3656 + int cmd_status = 0;
3657 +diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
3658 +index aac28d998073..2d9a8067eaca 100644
3659 +--- a/drivers/usb/musb/musb_core.c
3660 ++++ b/drivers/usb/musb/musb_core.c
3661 +@@ -2043,6 +2043,7 @@ struct musb_pending_work {
3662 + struct list_head node;
3663 + };
3664 +
3665 ++#ifdef CONFIG_PM
3666 + /*
3667 + * Called from musb_runtime_resume(), musb_resume(), and
3668 + * musb_queue_resume_work(). Callers must take musb->lock.
3669 +@@ -2070,6 +2071,7 @@ static int musb_run_resume_work(struct musb *musb)
3670 +
3671 + return error;
3672 + }
3673 ++#endif
3674 +
3675 + /*
3676 + * Called to run work if device is active or else queue the work to happen
3677 +diff --git a/drivers/usb/phy/Kconfig b/drivers/usb/phy/Kconfig
3678 +index b9c409a18faa..125cea1c3c8d 100644
3679 +--- a/drivers/usb/phy/Kconfig
3680 ++++ b/drivers/usb/phy/Kconfig
3681 +@@ -147,6 +147,7 @@ config USB_MSM_OTG
3682 + depends on (USB || USB_GADGET) && (ARCH_QCOM || COMPILE_TEST)
3683 + depends on USB_GADGET || !USB_GADGET # if USB_GADGET=m, this can't be 'y'
3684 + depends on RESET_CONTROLLER
3685 ++ depends on REGULATOR
3686 + depends on EXTCON
3687 + select USB_PHY
3688 + help
3689 +diff --git a/drivers/usb/usbip/stub_dev.c b/drivers/usb/usbip/stub_dev.c
3690 +index 1886d8e4f14e..3550224f4d69 100644
3691 +--- a/drivers/usb/usbip/stub_dev.c
3692 ++++ b/drivers/usb/usbip/stub_dev.c
3693 +@@ -87,6 +87,7 @@ static ssize_t store_sockfd(struct device *dev, struct device_attribute *attr,
3694 + goto err;
3695 +
3696 + sdev->ud.tcp_socket = socket;
3697 ++ sdev->ud.sockfd = sockfd;
3698 +
3699 + spin_unlock_irq(&sdev->ud.lock);
3700 +
3701 +@@ -186,6 +187,7 @@ static void stub_shutdown_connection(struct usbip_device *ud)
3702 + if (ud->tcp_socket) {
3703 + sockfd_put(ud->tcp_socket);
3704 + ud->tcp_socket = NULL;
3705 ++ ud->sockfd = -1;
3706 + }
3707 +
3708 + /* 3. free used data */
3709 +@@ -280,6 +282,7 @@ static struct stub_device *stub_device_alloc(struct usb_device *udev)
3710 + sdev->ud.status = SDEV_ST_AVAILABLE;
3711 + spin_lock_init(&sdev->ud.lock);
3712 + sdev->ud.tcp_socket = NULL;
3713 ++ sdev->ud.sockfd = -1;
3714 +
3715 + INIT_LIST_HEAD(&sdev->priv_init);
3716 + INIT_LIST_HEAD(&sdev->priv_tx);
3717 +diff --git a/drivers/usb/usbip/vhci_hcd.c b/drivers/usb/usbip/vhci_hcd.c
3718 +index dbe615ba07c9..9936a2f199b1 100644
3719 +--- a/drivers/usb/usbip/vhci_hcd.c
3720 ++++ b/drivers/usb/usbip/vhci_hcd.c
3721 +@@ -832,6 +832,7 @@ static void vhci_shutdown_connection(struct usbip_device *ud)
3722 + if (vdev->ud.tcp_socket) {
3723 + sockfd_put(vdev->ud.tcp_socket);
3724 + vdev->ud.tcp_socket = NULL;
3725 ++ vdev->ud.sockfd = -1;
3726 + }
3727 + pr_info("release socket\n");
3728 +
3729 +@@ -879,6 +880,7 @@ static void vhci_device_reset(struct usbip_device *ud)
3730 + if (ud->tcp_socket) {
3731 + sockfd_put(ud->tcp_socket);
3732 + ud->tcp_socket = NULL;
3733 ++ ud->sockfd = -1;
3734 + }
3735 + ud->status = VDEV_ST_NULL;
3736 +
3737 +diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c
3738 +index 64613fbf5cf8..cd38f5add254 100644
3739 +--- a/drivers/vhost/vhost.c
3740 ++++ b/drivers/vhost/vhost.c
3741 +@@ -849,7 +849,7 @@ static void vhost_dev_lock_vqs(struct vhost_dev *d)
3742 + {
3743 + int i = 0;
3744 + for (i = 0; i < d->nvqs; ++i)
3745 +- mutex_lock(&d->vqs[i]->mutex);
3746 ++ mutex_lock_nested(&d->vqs[i]->mutex, i);
3747 + }
3748 +
3749 + static void vhost_dev_unlock_vqs(struct vhost_dev *d)
3750 +diff --git a/drivers/video/fbdev/mmp/core.c b/drivers/video/fbdev/mmp/core.c
3751 +index a0f496049db7..3a6bb6561ba0 100644
3752 +--- a/drivers/video/fbdev/mmp/core.c
3753 ++++ b/drivers/video/fbdev/mmp/core.c
3754 +@@ -23,6 +23,7 @@
3755 + #include <linux/slab.h>
3756 + #include <linux/dma-mapping.h>
3757 + #include <linux/export.h>
3758 ++#include <linux/module.h>
3759 + #include <video/mmp_disp.h>
3760 +
3761 + static struct mmp_overlay *path_get_overlay(struct mmp_path *path,
3762 +@@ -249,3 +250,7 @@ void mmp_unregister_path(struct mmp_path *path)
3763 + mutex_unlock(&disp_lock);
3764 + }
3765 + EXPORT_SYMBOL_GPL(mmp_unregister_path);
3766 ++
3767 ++MODULE_AUTHOR("Zhou Zhu <zzhu3@×××××××.com>");
3768 ++MODULE_DESCRIPTION("Marvell MMP display framework");
3769 ++MODULE_LICENSE("GPL");
3770 +diff --git a/drivers/video/fbdev/via/viafbdev.c b/drivers/video/fbdev/via/viafbdev.c
3771 +index f9718f012aae..badee04ef496 100644
3772 +--- a/drivers/video/fbdev/via/viafbdev.c
3773 ++++ b/drivers/video/fbdev/via/viafbdev.c
3774 +@@ -1630,16 +1630,14 @@ static void viafb_init_proc(struct viafb_shared *shared)
3775 + }
3776 + static void viafb_remove_proc(struct viafb_shared *shared)
3777 + {
3778 +- struct proc_dir_entry *viafb_entry = shared->proc_entry,
3779 +- *iga1_entry = shared->iga1_proc_entry,
3780 +- *iga2_entry = shared->iga2_proc_entry;
3781 ++ struct proc_dir_entry *viafb_entry = shared->proc_entry;
3782 +
3783 + if (!viafb_entry)
3784 + return;
3785 +
3786 +- remove_proc_entry("output_devices", iga2_entry);
3787 ++ remove_proc_entry("output_devices", shared->iga2_proc_entry);
3788 + remove_proc_entry("iga2", viafb_entry);
3789 +- remove_proc_entry("output_devices", iga1_entry);
3790 ++ remove_proc_entry("output_devices", shared->iga1_proc_entry);
3791 + remove_proc_entry("iga1", viafb_entry);
3792 + remove_proc_entry("supported_output_devices", viafb_entry);
3793 +
3794 +diff --git a/drivers/xen/Kconfig b/drivers/xen/Kconfig
3795 +index f15bb3b789d5..98b8f3205322 100644
3796 +--- a/drivers/xen/Kconfig
3797 ++++ b/drivers/xen/Kconfig
3798 +@@ -246,7 +246,7 @@ config XEN_ACPI_HOTPLUG_CPU
3799 +
3800 + config XEN_ACPI_PROCESSOR
3801 + tristate "Xen ACPI processor"
3802 +- depends on XEN && X86 && ACPI_PROCESSOR && CPU_FREQ
3803 ++ depends on XEN && XEN_DOM0 && X86 && ACPI_PROCESSOR && CPU_FREQ
3804 + default m
3805 + help
3806 + This ACPI processor uploads Power Management information to the Xen
3807 +diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
3808 +index 0fe346c4bd28..d3dd631432eb 100644
3809 +--- a/fs/btrfs/ioctl.c
3810 ++++ b/fs/btrfs/ioctl.c
3811 +@@ -2244,7 +2244,7 @@ static noinline int btrfs_search_path_in_tree(struct btrfs_fs_info *info,
3812 + if (!path)
3813 + return -ENOMEM;
3814 +
3815 +- ptr = &name[BTRFS_INO_LOOKUP_PATH_MAX];
3816 ++ ptr = &name[BTRFS_INO_LOOKUP_PATH_MAX - 1];
3817 +
3818 + key.objectid = tree_id;
3819 + key.type = BTRFS_ROOT_ITEM_KEY;
3820 +diff --git a/fs/compat_binfmt_elf.c b/fs/compat_binfmt_elf.c
3821 +index 4d24d17bcfc1..943be5ecfcd9 100644
3822 +--- a/fs/compat_binfmt_elf.c
3823 ++++ b/fs/compat_binfmt_elf.c
3824 +@@ -51,6 +51,7 @@
3825 + #define elf_prstatus compat_elf_prstatus
3826 + #define elf_prpsinfo compat_elf_prpsinfo
3827 +
3828 ++#ifdef CONFIG_ELF_CORE
3829 + /*
3830 + * Compat version of cputime_to_compat_timeval, perhaps this
3831 + * should be an inline in <linux/compat.h>.
3832 +@@ -63,6 +64,7 @@ static void cputime_to_compat_timeval(const cputime_t cputime,
3833 + value->tv_sec = tv.tv_sec;
3834 + value->tv_usec = tv.tv_usec;
3835 + }
3836 ++#endif
3837 +
3838 + #undef cputime_to_timeval
3839 + #define cputime_to_timeval cputime_to_compat_timeval
3840 +diff --git a/fs/reiserfs/lbalance.c b/fs/reiserfs/lbalance.c
3841 +index 249594a821e0..f5cebd70d903 100644
3842 +--- a/fs/reiserfs/lbalance.c
3843 ++++ b/fs/reiserfs/lbalance.c
3844 +@@ -475,7 +475,7 @@ static void leaf_item_bottle(struct buffer_info *dest_bi,
3845 + * 'cpy_bytes'; create new item header;
3846 + * n_ih = new item_header;
3847 + */
3848 +- memcpy(&n_ih, ih, SHORT_KEY_SIZE);
3849 ++ memcpy(&n_ih.ih_key, &ih->ih_key, KEY_SIZE);
3850 +
3851 + /* Endian safe, both le */
3852 + n_ih.ih_version = ih->ih_version;
3853 +diff --git a/fs/reiserfs/reiserfs.h b/fs/reiserfs/reiserfs.h
3854 +index 2adcde137c3f..5dcf3ab83886 100644
3855 +--- a/fs/reiserfs/reiserfs.h
3856 ++++ b/fs/reiserfs/reiserfs.h
3857 +@@ -1326,7 +1326,6 @@ struct cpu_key {
3858 + #define KEY_NOT_FOUND 0
3859 +
3860 + #define KEY_SIZE (sizeof(struct reiserfs_key))
3861 +-#define SHORT_KEY_SIZE (sizeof (__u32) + sizeof (__u32))
3862 +
3863 + /* return values for search_by_key and clones */
3864 + #define ITEM_FOUND 1
3865 +diff --git a/include/crypto/hash.h b/include/crypto/hash.h
3866 +index 26605888a199..d3de3b819ec0 100644
3867 +--- a/include/crypto/hash.h
3868 ++++ b/include/crypto/hash.h
3869 +@@ -205,7 +205,6 @@ struct crypto_ahash {
3870 + unsigned int keylen);
3871 +
3872 + unsigned int reqsize;
3873 +- bool has_setkey;
3874 + struct crypto_tfm base;
3875 + };
3876 +
3877 +@@ -399,11 +398,6 @@ static inline void *ahash_request_ctx(struct ahash_request *req)
3878 + int crypto_ahash_setkey(struct crypto_ahash *tfm, const u8 *key,
3879 + unsigned int keylen);
3880 +
3881 +-static inline bool crypto_ahash_has_setkey(struct crypto_ahash *tfm)
3882 +-{
3883 +- return tfm->has_setkey;
3884 +-}
3885 +-
3886 + /**
3887 + * crypto_ahash_finup() - update and finalize message digest
3888 + * @req: reference to the ahash_request handle that holds all information
3889 +@@ -475,7 +469,12 @@ static inline int crypto_ahash_export(struct ahash_request *req, void *out)
3890 + */
3891 + static inline int crypto_ahash_import(struct ahash_request *req, const void *in)
3892 + {
3893 +- return crypto_ahash_reqtfm(req)->import(req, in);
3894 ++ struct crypto_ahash *tfm = crypto_ahash_reqtfm(req);
3895 ++
3896 ++ if (crypto_ahash_get_flags(tfm) & CRYPTO_TFM_NEED_KEY)
3897 ++ return -ENOKEY;
3898 ++
3899 ++ return tfm->import(req, in);
3900 + }
3901 +
3902 + /**
3903 +@@ -492,7 +491,12 @@ static inline int crypto_ahash_import(struct ahash_request *req, const void *in)
3904 + */
3905 + static inline int crypto_ahash_init(struct ahash_request *req)
3906 + {
3907 +- return crypto_ahash_reqtfm(req)->init(req);
3908 ++ struct crypto_ahash *tfm = crypto_ahash_reqtfm(req);
3909 ++
3910 ++ if (crypto_ahash_get_flags(tfm) & CRYPTO_TFM_NEED_KEY)
3911 ++ return -ENOKEY;
3912 ++
3913 ++ return tfm->init(req);
3914 + }
3915 +
3916 + /**
3917 +@@ -845,7 +849,12 @@ static inline int crypto_shash_export(struct shash_desc *desc, void *out)
3918 + */
3919 + static inline int crypto_shash_import(struct shash_desc *desc, const void *in)
3920 + {
3921 +- return crypto_shash_alg(desc->tfm)->import(desc, in);
3922 ++ struct crypto_shash *tfm = desc->tfm;
3923 ++
3924 ++ if (crypto_shash_get_flags(tfm) & CRYPTO_TFM_NEED_KEY)
3925 ++ return -ENOKEY;
3926 ++
3927 ++ return crypto_shash_alg(tfm)->import(desc, in);
3928 + }
3929 +
3930 + /**
3931 +@@ -861,7 +870,12 @@ static inline int crypto_shash_import(struct shash_desc *desc, const void *in)
3932 + */
3933 + static inline int crypto_shash_init(struct shash_desc *desc)
3934 + {
3935 +- return crypto_shash_alg(desc->tfm)->init(desc);
3936 ++ struct crypto_shash *tfm = desc->tfm;
3937 ++
3938 ++ if (crypto_shash_get_flags(tfm) & CRYPTO_TFM_NEED_KEY)
3939 ++ return -ENOKEY;
3940 ++
3941 ++ return crypto_shash_alg(tfm)->init(desc);
3942 + }
3943 +
3944 + /**
3945 +diff --git a/include/linux/crypto.h b/include/linux/crypto.h
3946 +index 7cee5551625b..8edb3ba6f640 100644
3947 +--- a/include/linux/crypto.h
3948 ++++ b/include/linux/crypto.h
3949 +@@ -102,9 +102,17 @@
3950 + */
3951 + #define CRYPTO_ALG_INTERNAL 0x00002000
3952 +
3953 ++/*
3954 ++ * Set if the algorithm has a ->setkey() method but can be used without
3955 ++ * calling it first, i.e. there is a default key.
3956 ++ */
3957 ++#define CRYPTO_ALG_OPTIONAL_KEY 0x00004000
3958 ++
3959 + /*
3960 + * Transform masks and values (for crt_flags).
3961 + */
3962 ++#define CRYPTO_TFM_NEED_KEY 0x00000001
3963 ++
3964 + #define CRYPTO_TFM_REQ_MASK 0x000fff00
3965 + #define CRYPTO_TFM_RES_MASK 0xfff00000
3966 +
3967 +diff --git a/include/linux/pci-ecam.h b/include/linux/pci-ecam.h
3968 +index 7adad206b1f4..e19efac11d13 100644
3969 +--- a/include/linux/pci-ecam.h
3970 ++++ b/include/linux/pci-ecam.h
3971 +@@ -59,7 +59,7 @@ void __iomem *pci_ecam_map_bus(struct pci_bus *bus, unsigned int devfn,
3972 + /* default ECAM ops */
3973 + extern struct pci_ecam_ops pci_generic_ecam_ops;
3974 +
3975 +-#ifdef CONFIG_PCI_HOST_GENERIC
3976 ++#ifdef CONFIG_PCI_HOST_COMMON
3977 + /* for DT-based PCI controllers that support ECAM */
3978 + int pci_host_common_probe(struct platform_device *pdev,
3979 + struct pci_ecam_ops *ops);
3980 +diff --git a/include/linux/ptr_ring.h b/include/linux/ptr_ring.h
3981 +index e38f471a5402..05c6d20c2a7a 100644
3982 +--- a/include/linux/ptr_ring.h
3983 ++++ b/include/linux/ptr_ring.h
3984 +@@ -351,6 +351,8 @@ static inline void *ptr_ring_consume_bh(struct ptr_ring *r)
3985 +
3986 + static inline void **__ptr_ring_init_queue_alloc(unsigned int size, gfp_t gfp)
3987 + {
3988 ++ if (size * sizeof(void *) > KMALLOC_MAX_SIZE)
3989 ++ return NULL;
3990 + return kcalloc(size, sizeof(void *), gfp);
3991 + }
3992 +
3993 +diff --git a/include/linux/string.h b/include/linux/string.h
3994 +index 26b6f6a66f83..0c88c0a1a72b 100644
3995 +--- a/include/linux/string.h
3996 ++++ b/include/linux/string.h
3997 +@@ -123,6 +123,7 @@ extern char *kstrdup(const char *s, gfp_t gfp) __malloc;
3998 + extern const char *kstrdup_const(const char *s, gfp_t gfp);
3999 + extern char *kstrndup(const char *s, size_t len, gfp_t gfp);
4000 + extern void *kmemdup(const void *src, size_t len, gfp_t gfp);
4001 ++extern char *kmemdup_nul(const char *s, size_t len, gfp_t gfp);
4002 +
4003 + extern char **argv_split(gfp_t gfp, const char *str, int *argcp);
4004 + extern void argv_free(char **argv);
4005 +diff --git a/include/net/red.h b/include/net/red.h
4006 +index 76e0b5f922c6..3618cdfec884 100644
4007 +--- a/include/net/red.h
4008 ++++ b/include/net/red.h
4009 +@@ -167,6 +167,17 @@ static inline void red_set_vars(struct red_vars *v)
4010 + v->qcount = -1;
4011 + }
4012 +
4013 ++static inline bool red_check_params(u32 qth_min, u32 qth_max, u8 Wlog)
4014 ++{
4015 ++ if (fls(qth_min) + Wlog > 32)
4016 ++ return false;
4017 ++ if (fls(qth_max) + Wlog > 32)
4018 ++ return false;
4019 ++ if (qth_max < qth_min)
4020 ++ return false;
4021 ++ return true;
4022 ++}
4023 ++
4024 + static inline void red_set_parms(struct red_parms *p,
4025 + u32 qth_min, u32 qth_max, u8 Wlog, u8 Plog,
4026 + u8 Scell_log, u8 *stab, u32 max_P)
4027 +@@ -178,7 +189,7 @@ static inline void red_set_parms(struct red_parms *p,
4028 + p->qth_max = qth_max << Wlog;
4029 + p->Wlog = Wlog;
4030 + p->Plog = Plog;
4031 +- if (delta < 0)
4032 ++ if (delta <= 0)
4033 + delta = 1;
4034 + p->qth_delta = delta;
4035 + if (!max_P) {
4036 +diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h
4037 +index 61d9ce89d10d..579ded2c6ef1 100644
4038 +--- a/include/net/sctp/sctp.h
4039 ++++ b/include/net/sctp/sctp.h
4040 +@@ -433,7 +433,8 @@ static inline int sctp_frag_point(const struct sctp_association *asoc, int pmtu)
4041 + if (asoc->user_frag)
4042 + frag = min_t(int, frag, asoc->user_frag);
4043 +
4044 +- frag = SCTP_TRUNC4(min_t(int, frag, SCTP_MAX_CHUNK_LEN));
4045 ++ frag = SCTP_TRUNC4(min_t(int, frag, SCTP_MAX_CHUNK_LEN -
4046 ++ sizeof(struct sctp_data_chunk)));
4047 +
4048 + return frag;
4049 + }
4050 +diff --git a/include/trace/events/clk.h b/include/trace/events/clk.h
4051 +index 758607226bfd..2cd449328aee 100644
4052 +--- a/include/trace/events/clk.h
4053 ++++ b/include/trace/events/clk.h
4054 +@@ -134,12 +134,12 @@ DECLARE_EVENT_CLASS(clk_parent,
4055 +
4056 + TP_STRUCT__entry(
4057 + __string( name, core->name )
4058 +- __string( pname, parent->name )
4059 ++ __string( pname, parent ? parent->name : "none" )
4060 + ),
4061 +
4062 + TP_fast_assign(
4063 + __assign_str(name, core->name);
4064 +- __assign_str(pname, parent->name);
4065 ++ __assign_str(pname, parent ? parent->name : "none");
4066 + ),
4067 +
4068 + TP_printk("%s %s", __get_str(name), __get_str(pname))
4069 +diff --git a/kernel/kcov.c b/kernel/kcov.c
4070 +index 3cbb0c879705..3883df58aa12 100644
4071 +--- a/kernel/kcov.c
4072 ++++ b/kernel/kcov.c
4073 +@@ -220,9 +220,9 @@ static int kcov_ioctl_locked(struct kcov *kcov, unsigned int cmd,
4074 + if (unused != 0 || kcov->mode == KCOV_MODE_DISABLED ||
4075 + kcov->area == NULL)
4076 + return -EINVAL;
4077 +- if (kcov->t != NULL)
4078 +- return -EBUSY;
4079 + t = current;
4080 ++ if (kcov->t != NULL || t->kcov != NULL)
4081 ++ return -EBUSY;
4082 + /* Cache in task struct for performance. */
4083 + t->kcov_size = kcov->size;
4084 + t->kcov_area = kcov->area;
4085 +diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c
4086 +index dbafc5df03f3..4e17d55ba127 100644
4087 +--- a/kernel/trace/blktrace.c
4088 ++++ b/kernel/trace/blktrace.c
4089 +@@ -57,7 +57,8 @@ static struct tracer_flags blk_tracer_flags = {
4090 + };
4091 +
4092 + /* Global reference count of probes */
4093 +-static atomic_t blk_probes_ref = ATOMIC_INIT(0);
4094 ++static DEFINE_MUTEX(blk_probe_mutex);
4095 ++static int blk_probes_ref;
4096 +
4097 + static void blk_register_tracepoints(void);
4098 + static void blk_unregister_tracepoints(void);
4099 +@@ -306,11 +307,26 @@ static void blk_trace_free(struct blk_trace *bt)
4100 + kfree(bt);
4101 + }
4102 +
4103 ++static void get_probe_ref(void)
4104 ++{
4105 ++ mutex_lock(&blk_probe_mutex);
4106 ++ if (++blk_probes_ref == 1)
4107 ++ blk_register_tracepoints();
4108 ++ mutex_unlock(&blk_probe_mutex);
4109 ++}
4110 ++
4111 ++static void put_probe_ref(void)
4112 ++{
4113 ++ mutex_lock(&blk_probe_mutex);
4114 ++ if (!--blk_probes_ref)
4115 ++ blk_unregister_tracepoints();
4116 ++ mutex_unlock(&blk_probe_mutex);
4117 ++}
4118 ++
4119 + static void blk_trace_cleanup(struct blk_trace *bt)
4120 + {
4121 + blk_trace_free(bt);
4122 +- if (atomic_dec_and_test(&blk_probes_ref))
4123 +- blk_unregister_tracepoints();
4124 ++ put_probe_ref();
4125 + }
4126 +
4127 + int blk_trace_remove(struct request_queue *q)
4128 +@@ -522,8 +538,7 @@ int do_blk_trace_setup(struct request_queue *q, char *name, dev_t dev,
4129 + if (cmpxchg(&q->blk_trace, NULL, bt))
4130 + goto err;
4131 +
4132 +- if (atomic_inc_return(&blk_probes_ref) == 1)
4133 +- blk_register_tracepoints();
4134 ++ get_probe_ref();
4135 +
4136 + return 0;
4137 + err:
4138 +@@ -1469,9 +1484,7 @@ static int blk_trace_remove_queue(struct request_queue *q)
4139 + if (bt == NULL)
4140 + return -EINVAL;
4141 +
4142 +- if (atomic_dec_and_test(&blk_probes_ref))
4143 +- blk_unregister_tracepoints();
4144 +-
4145 ++ put_probe_ref();
4146 + blk_trace_free(bt);
4147 + return 0;
4148 + }
4149 +@@ -1502,8 +1515,7 @@ static int blk_trace_setup_queue(struct request_queue *q,
4150 + if (cmpxchg(&q->blk_trace, NULL, bt))
4151 + goto free_bt;
4152 +
4153 +- if (atomic_inc_return(&blk_probes_ref) == 1)
4154 +- blk_register_tracepoints();
4155 ++ get_probe_ref();
4156 + return 0;
4157 +
4158 + free_bt:
4159 +diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
4160 +index f60e67217f18..58a22ca10f33 100644
4161 +--- a/lib/Kconfig.debug
4162 ++++ b/lib/Kconfig.debug
4163 +@@ -197,7 +197,6 @@ config ENABLE_MUST_CHECK
4164 + config FRAME_WARN
4165 + int "Warn for stack frames larger than (needs gcc 4.4)"
4166 + range 0 8192
4167 +- default 0 if KASAN
4168 + default 2048 if GCC_PLUGIN_LATENT_ENTROPY
4169 + default 1024 if !64BIT
4170 + default 2048 if 64BIT
4171 +diff --git a/lib/oid_registry.c b/lib/oid_registry.c
4172 +index 318f382a010d..150e04d70303 100644
4173 +--- a/lib/oid_registry.c
4174 ++++ b/lib/oid_registry.c
4175 +@@ -116,7 +116,7 @@ int sprint_oid(const void *data, size_t datasize, char *buffer, size_t bufsize)
4176 + int count;
4177 +
4178 + if (v >= end)
4179 +- return -EBADMSG;
4180 ++ goto bad;
4181 +
4182 + n = *v++;
4183 + ret = count = snprintf(buffer, bufsize, "%u.%u", n / 40, n % 40);
4184 +@@ -134,7 +134,7 @@ int sprint_oid(const void *data, size_t datasize, char *buffer, size_t bufsize)
4185 + num = n & 0x7f;
4186 + do {
4187 + if (v >= end)
4188 +- return -EBADMSG;
4189 ++ goto bad;
4190 + n = *v++;
4191 + num <<= 7;
4192 + num |= n & 0x7f;
4193 +@@ -148,6 +148,10 @@ int sprint_oid(const void *data, size_t datasize, char *buffer, size_t bufsize)
4194 + }
4195 +
4196 + return ret;
4197 ++
4198 ++bad:
4199 ++ snprintf(buffer, bufsize, "(bad)");
4200 ++ return -EBADMSG;
4201 + }
4202 + EXPORT_SYMBOL_GPL(sprint_oid);
4203 +
4204 +diff --git a/mm/early_ioremap.c b/mm/early_ioremap.c
4205 +index 6d5717bd7197..57540de2b44c 100644
4206 +--- a/mm/early_ioremap.c
4207 ++++ b/mm/early_ioremap.c
4208 +@@ -103,7 +103,7 @@ __early_ioremap(resource_size_t phys_addr, unsigned long size, pgprot_t prot)
4209 + enum fixed_addresses idx;
4210 + int i, slot;
4211 +
4212 +- WARN_ON(system_state != SYSTEM_BOOTING);
4213 ++ WARN_ON(system_state >= SYSTEM_RUNNING);
4214 +
4215 + slot = -1;
4216 + for (i = 0; i < FIX_BTMAPS_SLOTS; i++) {
4217 +diff --git a/mm/shmem.c b/mm/shmem.c
4218 +index 004e0f87e8a8..2123bfc39ef2 100644
4219 +--- a/mm/shmem.c
4220 ++++ b/mm/shmem.c
4221 +@@ -370,6 +370,7 @@ static bool shmem_confirm_swap(struct address_space *mapping,
4222 +
4223 + int shmem_huge __read_mostly;
4224 +
4225 ++#if defined(CONFIG_SYSFS) || defined(CONFIG_TMPFS)
4226 + static int shmem_parse_huge(const char *str)
4227 + {
4228 + if (!strcmp(str, "never"))
4229 +@@ -407,6 +408,7 @@ static const char *shmem_format_huge(int huge)
4230 + return "bad_val";
4231 + }
4232 + }
4233 ++#endif
4234 +
4235 + static unsigned long shmem_unused_huge_shrink(struct shmem_sb_info *sbinfo,
4236 + struct shrink_control *sc, unsigned long nr_to_split)
4237 +@@ -1550,7 +1552,7 @@ static int shmem_getpage_gfp(struct inode *inode, pgoff_t index,
4238 + struct mm_struct *fault_mm, int *fault_type)
4239 + {
4240 + struct address_space *mapping = inode->i_mapping;
4241 +- struct shmem_inode_info *info;
4242 ++ struct shmem_inode_info *info = SHMEM_I(inode);
4243 + struct shmem_sb_info *sbinfo;
4244 + struct mm_struct *charge_mm;
4245 + struct mem_cgroup *memcg;
4246 +@@ -1600,7 +1602,6 @@ static int shmem_getpage_gfp(struct inode *inode, pgoff_t index,
4247 + * Fast cache lookup did not find it:
4248 + * bring it back from swap or allocate.
4249 + */
4250 +- info = SHMEM_I(inode);
4251 + sbinfo = SHMEM_SB(inode->i_sb);
4252 + charge_mm = fault_mm ? : current->mm;
4253 +
4254 +@@ -1852,7 +1853,6 @@ alloc_nohuge: page = shmem_alloc_and_acct_page(gfp, info, sbinfo,
4255 + put_page(page);
4256 + }
4257 + if (error == -ENOSPC && !once++) {
4258 +- info = SHMEM_I(inode);
4259 + spin_lock_irq(&info->lock);
4260 + shmem_recalc_inode(inode);
4261 + spin_unlock_irq(&info->lock);
4262 +diff --git a/mm/util.c b/mm/util.c
4263 +index 1a41553db866..8c755d05d4e6 100644
4264 +--- a/mm/util.c
4265 ++++ b/mm/util.c
4266 +@@ -80,6 +80,8 @@ EXPORT_SYMBOL(kstrdup_const);
4267 + * @s: the string to duplicate
4268 + * @max: read at most @max chars from @s
4269 + * @gfp: the GFP mask used in the kmalloc() call when allocating memory
4270 ++ *
4271 ++ * Note: Use kmemdup_nul() instead if the size is known exactly.
4272 + */
4273 + char *kstrndup(const char *s, size_t max, gfp_t gfp)
4274 + {
4275 +@@ -117,6 +119,28 @@ void *kmemdup(const void *src, size_t len, gfp_t gfp)
4276 + }
4277 + EXPORT_SYMBOL(kmemdup);
4278 +
4279 ++/**
4280 ++ * kmemdup_nul - Create a NUL-terminated string from unterminated data
4281 ++ * @s: The data to stringify
4282 ++ * @len: The size of the data
4283 ++ * @gfp: the GFP mask used in the kmalloc() call when allocating memory
4284 ++ */
4285 ++char *kmemdup_nul(const char *s, size_t len, gfp_t gfp)
4286 ++{
4287 ++ char *buf;
4288 ++
4289 ++ if (!s)
4290 ++ return NULL;
4291 ++
4292 ++ buf = kmalloc_track_caller(len + 1, gfp);
4293 ++ if (buf) {
4294 ++ memcpy(buf, s, len);
4295 ++ buf[len] = '\0';
4296 ++ }
4297 ++ return buf;
4298 ++}
4299 ++EXPORT_SYMBOL(kmemdup_nul);
4300 ++
4301 + /**
4302 + * memdup_user - duplicate memory region from user space
4303 + *
4304 +diff --git a/mm/vmscan.c b/mm/vmscan.c
4305 +index f118dc23f662..4365de74bdb0 100644
4306 +--- a/mm/vmscan.c
4307 ++++ b/mm/vmscan.c
4308 +@@ -295,10 +295,13 @@ EXPORT_SYMBOL(register_shrinker);
4309 + */
4310 + void unregister_shrinker(struct shrinker *shrinker)
4311 + {
4312 ++ if (!shrinker->nr_deferred)
4313 ++ return;
4314 + down_write(&shrinker_rwsem);
4315 + list_del(&shrinker->list);
4316 + up_write(&shrinker_rwsem);
4317 + kfree(shrinker->nr_deferred);
4318 ++ shrinker->nr_deferred = NULL;
4319 + }
4320 + EXPORT_SYMBOL(unregister_shrinker);
4321 +
4322 +diff --git a/net/core/dev.c b/net/core/dev.c
4323 +index 67b5d4d8acb1..8898618bf341 100644
4324 +--- a/net/core/dev.c
4325 ++++ b/net/core/dev.c
4326 +@@ -2763,7 +2763,7 @@ struct sk_buff *__skb_gso_segment(struct sk_buff *skb,
4327 +
4328 + segs = skb_mac_gso_segment(skb, features);
4329 +
4330 +- if (unlikely(skb_needs_check(skb, tx_path)))
4331 ++ if (unlikely(skb_needs_check(skb, tx_path) && !IS_ERR(segs)))
4332 + skb_warn_bad_offload(skb);
4333 +
4334 + return segs;
4335 +diff --git a/net/decnet/af_decnet.c b/net/decnet/af_decnet.c
4336 +index 13d6b1a6e0fc..9d8fcdefefc0 100644
4337 +--- a/net/decnet/af_decnet.c
4338 ++++ b/net/decnet/af_decnet.c
4339 +@@ -1337,6 +1337,12 @@ static int dn_setsockopt(struct socket *sock, int level, int optname, char __use
4340 + lock_sock(sk);
4341 + err = __dn_setsockopt(sock, level, optname, optval, optlen, 0);
4342 + release_sock(sk);
4343 ++#ifdef CONFIG_NETFILTER
4344 ++ /* we need to exclude all possible ENOPROTOOPTs except default case */
4345 ++ if (err == -ENOPROTOOPT && optname != DSO_LINKINFO &&
4346 ++ optname != DSO_STREAM && optname != DSO_SEQPACKET)
4347 ++ err = nf_setsockopt(sk, PF_DECnet, optname, optval, optlen);
4348 ++#endif
4349 +
4350 + return err;
4351 + }
4352 +@@ -1444,15 +1450,6 @@ static int __dn_setsockopt(struct socket *sock, int level,int optname, char __us
4353 + dn_nsp_send_disc(sk, 0x38, 0, sk->sk_allocation);
4354 + break;
4355 +
4356 +- default:
4357 +-#ifdef CONFIG_NETFILTER
4358 +- return nf_setsockopt(sk, PF_DECnet, optname, optval, optlen);
4359 +-#endif
4360 +- case DSO_LINKINFO:
4361 +- case DSO_STREAM:
4362 +- case DSO_SEQPACKET:
4363 +- return -ENOPROTOOPT;
4364 +-
4365 + case DSO_MAXWINDOW:
4366 + if (optlen != sizeof(unsigned long))
4367 + return -EINVAL;
4368 +@@ -1500,6 +1497,12 @@ static int __dn_setsockopt(struct socket *sock, int level,int optname, char __us
4369 + return -EINVAL;
4370 + scp->info_loc = u.info;
4371 + break;
4372 ++
4373 ++ case DSO_LINKINFO:
4374 ++ case DSO_STREAM:
4375 ++ case DSO_SEQPACKET:
4376 ++ default:
4377 ++ return -ENOPROTOOPT;
4378 + }
4379 +
4380 + return 0;
4381 +@@ -1513,6 +1516,20 @@ static int dn_getsockopt(struct socket *sock, int level, int optname, char __use
4382 + lock_sock(sk);
4383 + err = __dn_getsockopt(sock, level, optname, optval, optlen, 0);
4384 + release_sock(sk);
4385 ++#ifdef CONFIG_NETFILTER
4386 ++ if (err == -ENOPROTOOPT && optname != DSO_STREAM &&
4387 ++ optname != DSO_SEQPACKET && optname != DSO_CONACCEPT &&
4388 ++ optname != DSO_CONREJECT) {
4389 ++ int len;
4390 ++
4391 ++ if (get_user(len, optlen))
4392 ++ return -EFAULT;
4393 ++
4394 ++ err = nf_getsockopt(sk, PF_DECnet, optname, optval, &len);
4395 ++ if (err >= 0)
4396 ++ err = put_user(len, optlen);
4397 ++ }
4398 ++#endif
4399 +
4400 + return err;
4401 + }
4402 +@@ -1578,26 +1595,6 @@ static int __dn_getsockopt(struct socket *sock, int level,int optname, char __us
4403 + r_data = &link;
4404 + break;
4405 +
4406 +- default:
4407 +-#ifdef CONFIG_NETFILTER
4408 +- {
4409 +- int ret, len;
4410 +-
4411 +- if (get_user(len, optlen))
4412 +- return -EFAULT;
4413 +-
4414 +- ret = nf_getsockopt(sk, PF_DECnet, optname, optval, &len);
4415 +- if (ret >= 0)
4416 +- ret = put_user(len, optlen);
4417 +- return ret;
4418 +- }
4419 +-#endif
4420 +- case DSO_STREAM:
4421 +- case DSO_SEQPACKET:
4422 +- case DSO_CONACCEPT:
4423 +- case DSO_CONREJECT:
4424 +- return -ENOPROTOOPT;
4425 +-
4426 + case DSO_MAXWINDOW:
4427 + if (r_len > sizeof(unsigned long))
4428 + r_len = sizeof(unsigned long);
4429 +@@ -1629,6 +1626,13 @@ static int __dn_getsockopt(struct socket *sock, int level,int optname, char __us
4430 + r_len = sizeof(unsigned char);
4431 + r_data = &scp->info_rem;
4432 + break;
4433 ++
4434 ++ case DSO_STREAM:
4435 ++ case DSO_SEQPACKET:
4436 ++ case DSO_CONACCEPT:
4437 ++ case DSO_CONREJECT:
4438 ++ default:
4439 ++ return -ENOPROTOOPT;
4440 + }
4441 +
4442 + if (r_data) {
4443 +diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c
4444 +index 551dd393ceec..bf62fa487262 100644
4445 +--- a/net/ipv4/ip_sockglue.c
4446 ++++ b/net/ipv4/ip_sockglue.c
4447 +@@ -1243,11 +1243,8 @@ int ip_setsockopt(struct sock *sk, int level,
4448 + if (err == -ENOPROTOOPT && optname != IP_HDRINCL &&
4449 + optname != IP_IPSEC_POLICY &&
4450 + optname != IP_XFRM_POLICY &&
4451 +- !ip_mroute_opt(optname)) {
4452 +- lock_sock(sk);
4453 ++ !ip_mroute_opt(optname))
4454 + err = nf_setsockopt(sk, PF_INET, optname, optval, optlen);
4455 +- release_sock(sk);
4456 +- }
4457 + #endif
4458 + return err;
4459 + }
4460 +@@ -1272,12 +1269,9 @@ int compat_ip_setsockopt(struct sock *sk, int level, int optname,
4461 + if (err == -ENOPROTOOPT && optname != IP_HDRINCL &&
4462 + optname != IP_IPSEC_POLICY &&
4463 + optname != IP_XFRM_POLICY &&
4464 +- !ip_mroute_opt(optname)) {
4465 +- lock_sock(sk);
4466 +- err = compat_nf_setsockopt(sk, PF_INET, optname,
4467 +- optval, optlen);
4468 +- release_sock(sk);
4469 +- }
4470 ++ !ip_mroute_opt(optname))
4471 ++ err = compat_nf_setsockopt(sk, PF_INET, optname, optval,
4472 ++ optlen);
4473 + #endif
4474 + return err;
4475 + }
4476 +diff --git a/net/ipv4/netfilter/ipt_CLUSTERIP.c b/net/ipv4/netfilter/ipt_CLUSTERIP.c
4477 +index 4a9e6db9df8d..16599bae11dd 100644
4478 +--- a/net/ipv4/netfilter/ipt_CLUSTERIP.c
4479 ++++ b/net/ipv4/netfilter/ipt_CLUSTERIP.c
4480 +@@ -365,7 +365,7 @@ static int clusterip_tg_check(const struct xt_tgchk_param *par)
4481 + struct ipt_clusterip_tgt_info *cipinfo = par->targinfo;
4482 + const struct ipt_entry *e = par->entryinfo;
4483 + struct clusterip_config *config;
4484 +- int ret;
4485 ++ int ret, i;
4486 +
4487 + if (par->nft_compat) {
4488 + pr_err("cannot use CLUSTERIP target from nftables compat\n");
4489 +@@ -384,8 +384,18 @@ static int clusterip_tg_check(const struct xt_tgchk_param *par)
4490 + pr_info("Please specify destination IP\n");
4491 + return -EINVAL;
4492 + }
4493 +-
4494 +- /* FIXME: further sanity checks */
4495 ++ if (cipinfo->num_local_nodes > ARRAY_SIZE(cipinfo->local_nodes)) {
4496 ++ pr_info("bad num_local_nodes %u\n", cipinfo->num_local_nodes);
4497 ++ return -EINVAL;
4498 ++ }
4499 ++ for (i = 0; i < cipinfo->num_local_nodes; i++) {
4500 ++ if (cipinfo->local_nodes[i] - 1 >=
4501 ++ sizeof(config->local_nodes) * 8) {
4502 ++ pr_info("bad local_nodes[%d] %u\n",
4503 ++ i, cipinfo->local_nodes[i]);
4504 ++ return -EINVAL;
4505 ++ }
4506 ++ }
4507 +
4508 + config = clusterip_config_find_get(par->net, e->ip.dst.s_addr, 1);
4509 + if (!config) {
4510 +diff --git a/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c b/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c
4511 +index 0c9ded247ebb..6dc8eab0fabc 100644
4512 +--- a/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c
4513 ++++ b/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c
4514 +@@ -218,15 +218,19 @@ getorigdst(struct sock *sk, int optval, void __user *user, int *len)
4515 + struct nf_conntrack_tuple tuple;
4516 +
4517 + memset(&tuple, 0, sizeof(tuple));
4518 ++
4519 ++ lock_sock(sk);
4520 + tuple.src.u3.ip = inet->inet_rcv_saddr;
4521 + tuple.src.u.tcp.port = inet->inet_sport;
4522 + tuple.dst.u3.ip = inet->inet_daddr;
4523 + tuple.dst.u.tcp.port = inet->inet_dport;
4524 + tuple.src.l3num = PF_INET;
4525 + tuple.dst.protonum = sk->sk_protocol;
4526 ++ release_sock(sk);
4527 +
4528 + /* We only do TCP and SCTP at the moment: is there a better way? */
4529 +- if (sk->sk_protocol != IPPROTO_TCP && sk->sk_protocol != IPPROTO_SCTP) {
4530 ++ if (tuple.dst.protonum != IPPROTO_TCP &&
4531 ++ tuple.dst.protonum != IPPROTO_SCTP) {
4532 + pr_debug("SO_ORIGINAL_DST: Not a TCP/SCTP socket\n");
4533 + return -ENOPROTOOPT;
4534 + }
4535 +diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
4536 +index bcea985dd76b..493a32f6a5f2 100644
4537 +--- a/net/ipv6/ipv6_sockglue.c
4538 ++++ b/net/ipv6/ipv6_sockglue.c
4539 +@@ -907,12 +907,8 @@ int ipv6_setsockopt(struct sock *sk, int level, int optname,
4540 + #ifdef CONFIG_NETFILTER
4541 + /* we need to exclude all possible ENOPROTOOPTs except default case */
4542 + if (err == -ENOPROTOOPT && optname != IPV6_IPSEC_POLICY &&
4543 +- optname != IPV6_XFRM_POLICY) {
4544 +- lock_sock(sk);
4545 +- err = nf_setsockopt(sk, PF_INET6, optname, optval,
4546 +- optlen);
4547 +- release_sock(sk);
4548 +- }
4549 ++ optname != IPV6_XFRM_POLICY)
4550 ++ err = nf_setsockopt(sk, PF_INET6, optname, optval, optlen);
4551 + #endif
4552 + return err;
4553 + }
4554 +@@ -942,12 +938,9 @@ int compat_ipv6_setsockopt(struct sock *sk, int level, int optname,
4555 + #ifdef CONFIG_NETFILTER
4556 + /* we need to exclude all possible ENOPROTOOPTs except default case */
4557 + if (err == -ENOPROTOOPT && optname != IPV6_IPSEC_POLICY &&
4558 +- optname != IPV6_XFRM_POLICY) {
4559 +- lock_sock(sk);
4560 +- err = compat_nf_setsockopt(sk, PF_INET6, optname,
4561 +- optval, optlen);
4562 +- release_sock(sk);
4563 +- }
4564 ++ optname != IPV6_XFRM_POLICY)
4565 ++ err = compat_nf_setsockopt(sk, PF_INET6, optname, optval,
4566 ++ optlen);
4567 + #endif
4568 + return err;
4569 + }
4570 +diff --git a/net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c b/net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c
4571 +index 963ee3848675..af80e97f59b5 100644
4572 +--- a/net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c
4573 ++++ b/net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c
4574 +@@ -226,20 +226,27 @@ static struct nf_hook_ops ipv6_conntrack_ops[] __read_mostly = {
4575 + static int
4576 + ipv6_getorigdst(struct sock *sk, int optval, void __user *user, int *len)
4577 + {
4578 +- const struct inet_sock *inet = inet_sk(sk);
4579 ++ struct nf_conntrack_tuple tuple = { .src.l3num = NFPROTO_IPV6 };
4580 + const struct ipv6_pinfo *inet6 = inet6_sk(sk);
4581 ++ const struct inet_sock *inet = inet_sk(sk);
4582 + const struct nf_conntrack_tuple_hash *h;
4583 + struct sockaddr_in6 sin6;
4584 +- struct nf_conntrack_tuple tuple = { .src.l3num = NFPROTO_IPV6 };
4585 + struct nf_conn *ct;
4586 ++ __be32 flow_label;
4587 ++ int bound_dev_if;
4588 +
4589 ++ lock_sock(sk);
4590 + tuple.src.u3.in6 = sk->sk_v6_rcv_saddr;
4591 + tuple.src.u.tcp.port = inet->inet_sport;
4592 + tuple.dst.u3.in6 = sk->sk_v6_daddr;
4593 + tuple.dst.u.tcp.port = inet->inet_dport;
4594 + tuple.dst.protonum = sk->sk_protocol;
4595 ++ bound_dev_if = sk->sk_bound_dev_if;
4596 ++ flow_label = inet6->flow_label;
4597 ++ release_sock(sk);
4598 +
4599 +- if (sk->sk_protocol != IPPROTO_TCP && sk->sk_protocol != IPPROTO_SCTP)
4600 ++ if (tuple.dst.protonum != IPPROTO_TCP &&
4601 ++ tuple.dst.protonum != IPPROTO_SCTP)
4602 + return -ENOPROTOOPT;
4603 +
4604 + if (*len < 0 || (unsigned int) *len < sizeof(sin6))
4605 +@@ -257,14 +264,13 @@ ipv6_getorigdst(struct sock *sk, int optval, void __user *user, int *len)
4606 +
4607 + sin6.sin6_family = AF_INET6;
4608 + sin6.sin6_port = ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.u.tcp.port;
4609 +- sin6.sin6_flowinfo = inet6->flow_label & IPV6_FLOWINFO_MASK;
4610 ++ sin6.sin6_flowinfo = flow_label & IPV6_FLOWINFO_MASK;
4611 + memcpy(&sin6.sin6_addr,
4612 + &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.u3.in6,
4613 + sizeof(sin6.sin6_addr));
4614 +
4615 + nf_ct_put(ct);
4616 +- sin6.sin6_scope_id = ipv6_iface_scope_id(&sin6.sin6_addr,
4617 +- sk->sk_bound_dev_if);
4618 ++ sin6.sin6_scope_id = ipv6_iface_scope_id(&sin6.sin6_addr, bound_dev_if);
4619 + return copy_to_user(user, &sin6, sizeof(sin6)) ? -EFAULT : 0;
4620 + }
4621 +
4622 +diff --git a/net/kcm/kcmsock.c b/net/kcm/kcmsock.c
4623 +index 22785dc03051..179cd9b1b1f4 100644
4624 +--- a/net/kcm/kcmsock.c
4625 ++++ b/net/kcm/kcmsock.c
4626 +@@ -1381,8 +1381,13 @@ static int kcm_attach(struct socket *sock, struct socket *csock,
4627 + if (!csk)
4628 + return -EINVAL;
4629 +
4630 +- /* We must prevent loops or risk deadlock ! */
4631 +- if (csk->sk_family == PF_KCM)
4632 ++ /* Only allow TCP sockets to be attached for now */
4633 ++ if ((csk->sk_family != AF_INET && csk->sk_family != AF_INET6) ||
4634 ++ csk->sk_protocol != IPPROTO_TCP)
4635 ++ return -EOPNOTSUPP;
4636 ++
4637 ++ /* Don't allow listeners or closed sockets */
4638 ++ if (csk->sk_state == TCP_LISTEN || csk->sk_state == TCP_CLOSE)
4639 + return -EOPNOTSUPP;
4640 +
4641 + psock = kmem_cache_zalloc(kcm_psockp, GFP_KERNEL);
4642 +@@ -1404,9 +1409,18 @@ static int kcm_attach(struct socket *sock, struct socket *csock,
4643 + return err;
4644 + }
4645 +
4646 +- sock_hold(csk);
4647 +-
4648 + write_lock_bh(&csk->sk_callback_lock);
4649 ++
4650 ++ /* Check if sk_user_data is aready by KCM or someone else.
4651 ++ * Must be done under lock to prevent race conditions.
4652 ++ */
4653 ++ if (csk->sk_user_data) {
4654 ++ write_unlock_bh(&csk->sk_callback_lock);
4655 ++ strp_done(&psock->strp);
4656 ++ kmem_cache_free(kcm_psockp, psock);
4657 ++ return -EALREADY;
4658 ++ }
4659 ++
4660 + psock->save_data_ready = csk->sk_data_ready;
4661 + psock->save_write_space = csk->sk_write_space;
4662 + psock->save_state_change = csk->sk_state_change;
4663 +@@ -1414,8 +1428,11 @@ static int kcm_attach(struct socket *sock, struct socket *csock,
4664 + csk->sk_data_ready = psock_data_ready;
4665 + csk->sk_write_space = psock_write_space;
4666 + csk->sk_state_change = psock_state_change;
4667 ++
4668 + write_unlock_bh(&csk->sk_callback_lock);
4669 +
4670 ++ sock_hold(csk);
4671 ++
4672 + /* Finished initialization, now add the psock to the MUX. */
4673 + spin_lock_bh(&mux->lock);
4674 + head = &mux->psocks;
4675 +diff --git a/net/netfilter/x_tables.c b/net/netfilter/x_tables.c
4676 +index fc4977456c30..e47ade305a46 100644
4677 +--- a/net/netfilter/x_tables.c
4678 ++++ b/net/netfilter/x_tables.c
4679 +@@ -39,8 +39,6 @@ MODULE_LICENSE("GPL");
4680 + MODULE_AUTHOR("Harald Welte <laforge@×××××××××.org>");
4681 + MODULE_DESCRIPTION("{ip,ip6,arp,eb}_tables backend module");
4682 +
4683 +-#define SMP_ALIGN(x) (((x) + SMP_CACHE_BYTES-1) & ~(SMP_CACHE_BYTES-1))
4684 +-
4685 + struct compat_delta {
4686 + unsigned int offset; /* offset in kernel */
4687 + int delta; /* delta in 32bit user land */
4688 +@@ -209,6 +207,9 @@ xt_request_find_match(uint8_t nfproto, const char *name, uint8_t revision)
4689 + {
4690 + struct xt_match *match;
4691 +
4692 ++ if (strnlen(name, XT_EXTENSION_MAXNAMELEN) == XT_EXTENSION_MAXNAMELEN)
4693 ++ return ERR_PTR(-EINVAL);
4694 ++
4695 + match = xt_find_match(nfproto, name, revision);
4696 + if (IS_ERR(match)) {
4697 + request_module("%st_%s", xt_prefix[nfproto], name);
4698 +@@ -251,6 +252,9 @@ struct xt_target *xt_request_find_target(u8 af, const char *name, u8 revision)
4699 + {
4700 + struct xt_target *target;
4701 +
4702 ++ if (strnlen(name, XT_EXTENSION_MAXNAMELEN) == XT_EXTENSION_MAXNAMELEN)
4703 ++ return ERR_PTR(-EINVAL);
4704 ++
4705 + target = xt_find_target(af, name, revision);
4706 + if (IS_ERR(target)) {
4707 + request_module("%st_%s", xt_prefix[af], name);
4708 +@@ -952,7 +956,7 @@ struct xt_table_info *xt_alloc_table_info(unsigned int size)
4709 + return NULL;
4710 +
4711 + /* Pedantry: prevent them from hitting BUG() in vmalloc.c --RR */
4712 +- if ((SMP_ALIGN(size) >> PAGE_SHIFT) + 2 > totalram_pages)
4713 ++ if ((size >> PAGE_SHIFT) + 2 > totalram_pages)
4714 + return NULL;
4715 +
4716 + if (sz <= (PAGE_SIZE << PAGE_ALLOC_COSTLY_ORDER))
4717 +diff --git a/net/netfilter/xt_RATEEST.c b/net/netfilter/xt_RATEEST.c
4718 +index dbd6c4a12b97..92cfae66743b 100644
4719 +--- a/net/netfilter/xt_RATEEST.c
4720 ++++ b/net/netfilter/xt_RATEEST.c
4721 +@@ -39,23 +39,31 @@ static void xt_rateest_hash_insert(struct xt_rateest *est)
4722 + hlist_add_head(&est->list, &rateest_hash[h]);
4723 + }
4724 +
4725 +-struct xt_rateest *xt_rateest_lookup(const char *name)
4726 ++static struct xt_rateest *__xt_rateest_lookup(const char *name)
4727 + {
4728 + struct xt_rateest *est;
4729 + unsigned int h;
4730 +
4731 + h = xt_rateest_hash(name);
4732 +- mutex_lock(&xt_rateest_mutex);
4733 + hlist_for_each_entry(est, &rateest_hash[h], list) {
4734 + if (strcmp(est->name, name) == 0) {
4735 + est->refcnt++;
4736 +- mutex_unlock(&xt_rateest_mutex);
4737 + return est;
4738 + }
4739 + }
4740 +- mutex_unlock(&xt_rateest_mutex);
4741 ++
4742 + return NULL;
4743 + }
4744 ++
4745 ++struct xt_rateest *xt_rateest_lookup(const char *name)
4746 ++{
4747 ++ struct xt_rateest *est;
4748 ++
4749 ++ mutex_lock(&xt_rateest_mutex);
4750 ++ est = __xt_rateest_lookup(name);
4751 ++ mutex_unlock(&xt_rateest_mutex);
4752 ++ return est;
4753 ++}
4754 + EXPORT_SYMBOL_GPL(xt_rateest_lookup);
4755 +
4756 + void xt_rateest_put(struct xt_rateest *est)
4757 +@@ -100,8 +108,10 @@ static int xt_rateest_tg_checkentry(const struct xt_tgchk_param *par)
4758 +
4759 + net_get_random_once(&jhash_rnd, sizeof(jhash_rnd));
4760 +
4761 +- est = xt_rateest_lookup(info->name);
4762 ++ mutex_lock(&xt_rateest_mutex);
4763 ++ est = __xt_rateest_lookup(info->name);
4764 + if (est) {
4765 ++ mutex_unlock(&xt_rateest_mutex);
4766 + /*
4767 + * If estimator parameters are specified, they must match the
4768 + * existing estimator.
4769 +@@ -139,11 +149,13 @@ static int xt_rateest_tg_checkentry(const struct xt_tgchk_param *par)
4770 +
4771 + info->est = est;
4772 + xt_rateest_hash_insert(est);
4773 ++ mutex_unlock(&xt_rateest_mutex);
4774 + return 0;
4775 +
4776 + err2:
4777 + kfree(est);
4778 + err1:
4779 ++ mutex_unlock(&xt_rateest_mutex);
4780 + return ret;
4781 + }
4782 +
4783 +diff --git a/net/netfilter/xt_cgroup.c b/net/netfilter/xt_cgroup.c
4784 +index a086a914865f..0eddbd5328af 100644
4785 +--- a/net/netfilter/xt_cgroup.c
4786 ++++ b/net/netfilter/xt_cgroup.c
4787 +@@ -52,6 +52,7 @@ static int cgroup_mt_check_v1(const struct xt_mtchk_param *par)
4788 + return -EINVAL;
4789 + }
4790 +
4791 ++ info->priv = NULL;
4792 + if (info->has_path) {
4793 + cgrp = cgroup_get_from_path(info->path);
4794 + if (IS_ERR(cgrp)) {
4795 +diff --git a/net/rds/tcp.c b/net/rds/tcp.c
4796 +index 78f976d32018..d36effbf7614 100644
4797 +--- a/net/rds/tcp.c
4798 ++++ b/net/rds/tcp.c
4799 +@@ -303,7 +303,8 @@ static void rds_tcp_conn_free(void *arg)
4800 + rdsdebug("freeing tc %p\n", tc);
4801 +
4802 + spin_lock_irqsave(&rds_tcp_conn_lock, flags);
4803 +- list_del(&tc->t_tcp_node);
4804 ++ if (!tc->t_tcp_node_detached)
4805 ++ list_del(&tc->t_tcp_node);
4806 + spin_unlock_irqrestore(&rds_tcp_conn_lock, flags);
4807 +
4808 + kmem_cache_free(rds_tcp_conn_slab, tc);
4809 +@@ -528,8 +529,12 @@ static void rds_tcp_kill_sock(struct net *net)
4810 +
4811 + if (net != c_net || !tc->t_sock)
4812 + continue;
4813 +- if (!list_has_conn(&tmp_list, tc->t_cpath->cp_conn))
4814 ++ if (!list_has_conn(&tmp_list, tc->t_cpath->cp_conn)) {
4815 + list_move_tail(&tc->t_tcp_node, &tmp_list);
4816 ++ } else {
4817 ++ list_del(&tc->t_tcp_node);
4818 ++ tc->t_tcp_node_detached = true;
4819 ++ }
4820 + }
4821 + spin_unlock_irq(&rds_tcp_conn_lock);
4822 + list_for_each_entry_safe(tc, _tc, &tmp_list, t_tcp_node) {
4823 +diff --git a/net/rds/tcp.h b/net/rds/tcp.h
4824 +index 56ea6620fcf9..800e847d2e00 100644
4825 +--- a/net/rds/tcp.h
4826 ++++ b/net/rds/tcp.h
4827 +@@ -11,6 +11,7 @@ struct rds_tcp_incoming {
4828 + struct rds_tcp_connection {
4829 +
4830 + struct list_head t_tcp_node;
4831 ++ bool t_tcp_node_detached;
4832 + struct rds_conn_path *t_cpath;
4833 + /* t_conn_path_lock synchronizes the connection establishment between
4834 + * rds_tcp_accept_one and rds_tcp_conn_path_connect
4835 +diff --git a/net/sched/sch_choke.c b/net/sched/sch_choke.c
4836 +index 3b6d5bd69101..6125c17cffaf 100644
4837 +--- a/net/sched/sch_choke.c
4838 ++++ b/net/sched/sch_choke.c
4839 +@@ -424,6 +424,9 @@ static int choke_change(struct Qdisc *sch, struct nlattr *opt)
4840 +
4841 + ctl = nla_data(tb[TCA_CHOKE_PARMS]);
4842 +
4843 ++ if (!red_check_params(ctl->qth_min, ctl->qth_max, ctl->Wlog))
4844 ++ return -EINVAL;
4845 ++
4846 + if (ctl->limit > CHOKE_MAX_QUEUE)
4847 + return -EINVAL;
4848 +
4849 +diff --git a/net/sched/sch_gred.c b/net/sched/sch_gred.c
4850 +index c78a093c551a..44941e25f3ad 100644
4851 +--- a/net/sched/sch_gred.c
4852 ++++ b/net/sched/sch_gred.c
4853 +@@ -356,6 +356,9 @@ static inline int gred_change_vq(struct Qdisc *sch, int dp,
4854 + struct gred_sched *table = qdisc_priv(sch);
4855 + struct gred_sched_data *q = table->tab[dp];
4856 +
4857 ++ if (!red_check_params(ctl->qth_min, ctl->qth_max, ctl->Wlog))
4858 ++ return -EINVAL;
4859 ++
4860 + if (!q) {
4861 + table->tab[dp] = q = *prealloc;
4862 + *prealloc = NULL;
4863 +diff --git a/net/sched/sch_red.c b/net/sched/sch_red.c
4864 +index 249b2a18acbd..4610d44f58d3 100644
4865 +--- a/net/sched/sch_red.c
4866 ++++ b/net/sched/sch_red.c
4867 +@@ -184,6 +184,8 @@ static int red_change(struct Qdisc *sch, struct nlattr *opt)
4868 + max_P = tb[TCA_RED_MAX_P] ? nla_get_u32(tb[TCA_RED_MAX_P]) : 0;
4869 +
4870 + ctl = nla_data(tb[TCA_RED_PARMS]);
4871 ++ if (!red_check_params(ctl->qth_min, ctl->qth_max, ctl->Wlog))
4872 ++ return -EINVAL;
4873 +
4874 + if (ctl->limit > 0) {
4875 + child = fifo_create_dflt(sch, &bfifo_qdisc_ops, ctl->limit);
4876 +diff --git a/net/sched/sch_sfq.c b/net/sched/sch_sfq.c
4877 +index ea8a56f76b32..d8c2b6baaad2 100644
4878 +--- a/net/sched/sch_sfq.c
4879 ++++ b/net/sched/sch_sfq.c
4880 +@@ -633,6 +633,9 @@ static int sfq_change(struct Qdisc *sch, struct nlattr *opt)
4881 + if (ctl->divisor &&
4882 + (!is_power_of_2(ctl->divisor) || ctl->divisor > 65536))
4883 + return -EINVAL;
4884 ++ if (ctl_v1 && !red_check_params(ctl_v1->qth_min, ctl_v1->qth_max,
4885 ++ ctl_v1->Wlog))
4886 ++ return -EINVAL;
4887 + if (ctl_v1 && ctl_v1->qth_min) {
4888 + p = kmalloc(sizeof(*p), GFP_KERNEL);
4889 + if (!p)
4890 +diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c
4891 +index 0994ce491e7c..0188d9e8272d 100644
4892 +--- a/net/sctp/outqueue.c
4893 ++++ b/net/sctp/outqueue.c
4894 +@@ -364,7 +364,8 @@ static int sctp_prsctp_prune_sent(struct sctp_association *asoc,
4895 + asoc->sent_cnt_removable--;
4896 + asoc->abandoned_sent[SCTP_PR_INDEX(PRIO)]++;
4897 +
4898 +- if (!chk->tsn_gap_acked) {
4899 ++ if (queue != &asoc->outqueue.retransmit &&
4900 ++ !chk->tsn_gap_acked) {
4901 + if (chk->transport)
4902 + chk->transport->flight_size -=
4903 + sctp_data_size(chk);
4904 +@@ -1409,7 +1410,8 @@ static void sctp_check_transmitted(struct sctp_outq *q,
4905 + /* If this chunk has not been acked, stop
4906 + * considering it as 'outstanding'.
4907 + */
4908 +- if (!tchunk->tsn_gap_acked) {
4909 ++ if (transmitted_queue != &q->retransmit &&
4910 ++ !tchunk->tsn_gap_acked) {
4911 + if (tchunk->transport)
4912 + tchunk->transport->flight_size -=
4913 + sctp_data_size(tchunk);
4914 +diff --git a/net/sctp/socket.c b/net/sctp/socket.c
4915 +index c472b8391dde..fd5b9d573b38 100644
4916 +--- a/net/sctp/socket.c
4917 ++++ b/net/sctp/socket.c
4918 +@@ -3125,9 +3125,9 @@ static int sctp_setsockopt_mappedv4(struct sock *sk, char __user *optval, unsign
4919 + */
4920 + static int sctp_setsockopt_maxseg(struct sock *sk, char __user *optval, unsigned int optlen)
4921 + {
4922 ++ struct sctp_sock *sp = sctp_sk(sk);
4923 + struct sctp_assoc_value params;
4924 + struct sctp_association *asoc;
4925 +- struct sctp_sock *sp = sctp_sk(sk);
4926 + int val;
4927 +
4928 + if (optlen == sizeof(int)) {
4929 +@@ -3143,26 +3143,35 @@ static int sctp_setsockopt_maxseg(struct sock *sk, char __user *optval, unsigned
4930 + if (copy_from_user(&params, optval, optlen))
4931 + return -EFAULT;
4932 + val = params.assoc_value;
4933 +- } else
4934 ++ } else {
4935 + return -EINVAL;
4936 ++ }
4937 +
4938 +- if ((val != 0) && ((val < 8) || (val > SCTP_MAX_CHUNK_LEN)))
4939 +- return -EINVAL;
4940 ++ if (val) {
4941 ++ int min_len, max_len;
4942 +
4943 +- asoc = sctp_id2assoc(sk, params.assoc_id);
4944 +- if (!asoc && params.assoc_id && sctp_style(sk, UDP))
4945 +- return -EINVAL;
4946 ++ min_len = SCTP_DEFAULT_MINSEGMENT - sp->pf->af->net_header_len;
4947 ++ min_len -= sizeof(struct sctphdr) +
4948 ++ sizeof(struct sctp_data_chunk);
4949 ++
4950 ++ max_len = SCTP_MAX_CHUNK_LEN - sizeof(struct sctp_data_chunk);
4951 +
4952 ++ if (val < min_len || val > max_len)
4953 ++ return -EINVAL;
4954 ++ }
4955 ++
4956 ++ asoc = sctp_id2assoc(sk, params.assoc_id);
4957 + if (asoc) {
4958 + if (val == 0) {
4959 +- val = asoc->pathmtu;
4960 +- val -= sp->pf->af->net_header_len;
4961 ++ val = asoc->pathmtu - sp->pf->af->net_header_len;
4962 + val -= sizeof(struct sctphdr) +
4963 +- sizeof(struct sctp_data_chunk);
4964 ++ sizeof(struct sctp_data_chunk);
4965 + }
4966 + asoc->user_frag = val;
4967 + asoc->frag_point = sctp_frag_point(asoc, asoc->pathmtu);
4968 + } else {
4969 ++ if (params.assoc_id && sctp_style(sk, UDP))
4970 ++ return -EINVAL;
4971 + sp->user_frag = val;
4972 + }
4973 +
4974 +diff --git a/net/wireless/core.c b/net/wireless/core.c
4975 +index 8201e6d7449e..ce16da2905dc 100644
4976 +--- a/net/wireless/core.c
4977 ++++ b/net/wireless/core.c
4978 +@@ -421,6 +421,8 @@ struct wiphy *wiphy_new_nm(const struct cfg80211_ops *ops, int sizeof_priv,
4979 + if (rv)
4980 + goto use_default_name;
4981 + } else {
4982 ++ int rv;
4983 ++
4984 + use_default_name:
4985 + /* NOTE: This is *probably* safe w/out holding rtnl because of
4986 + * the restrictions on phy names. Probably this call could
4987 +@@ -428,7 +430,11 @@ struct wiphy *wiphy_new_nm(const struct cfg80211_ops *ops, int sizeof_priv,
4988 + * phyX. But, might should add some locking and check return
4989 + * value, and use a different name if this one exists?
4990 + */
4991 +- dev_set_name(&rdev->wiphy.dev, PHY_NAME "%d", rdev->wiphy_idx);
4992 ++ rv = dev_set_name(&rdev->wiphy.dev, PHY_NAME "%d", rdev->wiphy_idx);
4993 ++ if (rv < 0) {
4994 ++ kfree(rdev);
4995 ++ return NULL;
4996 ++ }
4997 + }
4998 +
4999 + INIT_LIST_HEAD(&rdev->wiphy.wdev_list);
5000 +diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
5001 +index f19e6a57e118..5e89b7461f99 100644
5002 +--- a/net/xfrm/xfrm_policy.c
5003 ++++ b/net/xfrm/xfrm_policy.c
5004 +@@ -643,7 +643,8 @@ static void xfrm_hash_rebuild(struct work_struct *work)
5005 +
5006 + /* re-insert all policies by order of creation */
5007 + list_for_each_entry_reverse(policy, &net->xfrm.policy_all, walk.all) {
5008 +- if (xfrm_policy_id2dir(policy->index) >= XFRM_POLICY_MAX) {
5009 ++ if (policy->walk.dead ||
5010 ++ xfrm_policy_id2dir(policy->index) >= XFRM_POLICY_MAX) {
5011 + /* skip socket policies */
5012 + continue;
5013 + }
5014 +@@ -1256,9 +1257,15 @@ static struct xfrm_policy *xfrm_sk_policy_lookup(const struct sock *sk, int dir,
5015 + again:
5016 + pol = rcu_dereference(sk->sk_policy[dir]);
5017 + if (pol != NULL) {
5018 +- bool match = xfrm_selector_match(&pol->selector, fl, family);
5019 ++ bool match;
5020 + int err = 0;
5021 +
5022 ++ if (pol->family != family) {
5023 ++ pol = NULL;
5024 ++ goto out;
5025 ++ }
5026 ++
5027 ++ match = xfrm_selector_match(&pol->selector, fl, family);
5028 + if (match) {
5029 + if ((sk->sk_mark & pol->mark.m) != pol->mark.v) {
5030 + pol = NULL;
5031 +diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c
5032 +index 22934885bd3f..5d33967d9aa1 100644
5033 +--- a/net/xfrm/xfrm_user.c
5034 ++++ b/net/xfrm/xfrm_user.c
5035 +@@ -1380,11 +1380,14 @@ static void copy_templates(struct xfrm_policy *xp, struct xfrm_user_tmpl *ut,
5036 +
5037 + static int validate_tmpl(int nr, struct xfrm_user_tmpl *ut, u16 family)
5038 + {
5039 ++ u16 prev_family;
5040 + int i;
5041 +
5042 + if (nr > XFRM_MAX_DEPTH)
5043 + return -EINVAL;
5044 +
5045 ++ prev_family = family;
5046 ++
5047 + for (i = 0; i < nr; i++) {
5048 + /* We never validated the ut->family value, so many
5049 + * applications simply leave it at zero. The check was
5050 +@@ -1396,6 +1399,12 @@ static int validate_tmpl(int nr, struct xfrm_user_tmpl *ut, u16 family)
5051 + if (!ut[i].family)
5052 + ut[i].family = family;
5053 +
5054 ++ if ((ut[i].mode == XFRM_MODE_TRANSPORT) &&
5055 ++ (ut[i].family != prev_family))
5056 ++ return -EINVAL;
5057 ++
5058 ++ prev_family = ut[i].family;
5059 ++
5060 + switch (ut[i].family) {
5061 + case AF_INET:
5062 + break;
5063 +@@ -1406,6 +1415,21 @@ static int validate_tmpl(int nr, struct xfrm_user_tmpl *ut, u16 family)
5064 + default:
5065 + return -EINVAL;
5066 + }
5067 ++
5068 ++ switch (ut[i].id.proto) {
5069 ++ case IPPROTO_AH:
5070 ++ case IPPROTO_ESP:
5071 ++ case IPPROTO_COMP:
5072 ++#if IS_ENABLED(CONFIG_IPV6)
5073 ++ case IPPROTO_ROUTING:
5074 ++ case IPPROTO_DSTOPTS:
5075 ++#endif
5076 ++ case IPSEC_PROTO_ANY:
5077 ++ break;
5078 ++ default:
5079 ++ return -EINVAL;
5080 ++ }
5081 ++
5082 + }
5083 +
5084 + return 0;
5085 +diff --git a/scripts/kernel-doc b/scripts/kernel-doc
5086 +index 93721f3c91bf..7b163f99624c 100755
5087 +--- a/scripts/kernel-doc
5088 ++++ b/scripts/kernel-doc
5089 +@@ -3139,4 +3139,4 @@ if ($verbose && $warnings) {
5090 + print STDERR "$warnings warnings\n";
5091 + }
5092 +
5093 +-exit($errors);
5094 ++exit($output_mode eq "none" ? 0 : $errors);
5095 +diff --git a/security/keys/Kconfig b/security/keys/Kconfig
5096 +index 0832f6368955..f2980084a38f 100644
5097 +--- a/security/keys/Kconfig
5098 ++++ b/security/keys/Kconfig
5099 +@@ -45,6 +45,7 @@ config BIG_KEYS
5100 + bool "Large payload keys"
5101 + depends on KEYS
5102 + depends on TMPFS
5103 ++ select CRYPTO
5104 + select CRYPTO_AES
5105 + select CRYPTO_GCM
5106 + help
5107 +diff --git a/security/selinux/ss/services.c b/security/selinux/ss/services.c
5108 +index 082b20c78363..73275a92f2e2 100644
5109 +--- a/security/selinux/ss/services.c
5110 ++++ b/security/selinux/ss/services.c
5111 +@@ -854,6 +854,9 @@ int security_bounded_transition(u32 old_sid, u32 new_sid)
5112 + int index;
5113 + int rc;
5114 +
5115 ++ if (!ss_initialized)
5116 ++ return 0;
5117 ++
5118 + read_lock(&policy_rwlock);
5119 +
5120 + rc = -EINVAL;
5121 +@@ -1400,27 +1403,25 @@ static int security_context_to_sid_core(const char *scontext, u32 scontext_len,
5122 + if (!scontext_len)
5123 + return -EINVAL;
5124 +
5125 ++ /* Copy the string to allow changes and ensure a NUL terminator */
5126 ++ scontext2 = kmemdup_nul(scontext, scontext_len, gfp_flags);
5127 ++ if (!scontext2)
5128 ++ return -ENOMEM;
5129 ++
5130 + if (!ss_initialized) {
5131 + int i;
5132 +
5133 + for (i = 1; i < SECINITSID_NUM; i++) {
5134 +- if (!strcmp(initial_sid_to_string[i], scontext)) {
5135 ++ if (!strcmp(initial_sid_to_string[i], scontext2)) {
5136 + *sid = i;
5137 +- return 0;
5138 ++ goto out;
5139 + }
5140 + }
5141 + *sid = SECINITSID_KERNEL;
5142 +- return 0;
5143 ++ goto out;
5144 + }
5145 + *sid = SECSID_NULL;
5146 +
5147 +- /* Copy the string so that we can modify the copy as we parse it. */
5148 +- scontext2 = kmalloc(scontext_len + 1, gfp_flags);
5149 +- if (!scontext2)
5150 +- return -ENOMEM;
5151 +- memcpy(scontext2, scontext, scontext_len);
5152 +- scontext2[scontext_len] = 0;
5153 +-
5154 + if (force) {
5155 + /* Save another copy for storing in uninterpreted form */
5156 + rc = -ENOMEM;
5157 +diff --git a/sound/pci/hda/patch_ca0132.c b/sound/pci/hda/patch_ca0132.c
5158 +index 11b9b2f17a2e..9ec4dba8a793 100644
5159 +--- a/sound/pci/hda/patch_ca0132.c
5160 ++++ b/sound/pci/hda/patch_ca0132.c
5161 +@@ -1482,6 +1482,9 @@ static int dspio_scp(struct hda_codec *codec,
5162 + } else if (ret_size != reply_data_size) {
5163 + codec_dbg(codec, "RetLen and HdrLen .NE.\n");
5164 + return -EINVAL;
5165 ++ } else if (!reply) {
5166 ++ codec_dbg(codec, "NULL reply\n");
5167 ++ return -EINVAL;
5168 + } else {
5169 + *reply_len = ret_size*sizeof(unsigned int);
5170 + memcpy(reply, scp_reply.data, *reply_len);
5171 +diff --git a/sound/soc/rockchip/rockchip_spdif.c b/sound/soc/rockchip/rockchip_spdif.c
5172 +index fa8101d1e16f..f387d7bae3d4 100644
5173 +--- a/sound/soc/rockchip/rockchip_spdif.c
5174 ++++ b/sound/soc/rockchip/rockchip_spdif.c
5175 +@@ -318,26 +318,30 @@ static int rk_spdif_probe(struct platform_device *pdev)
5176 + spdif->mclk = devm_clk_get(&pdev->dev, "mclk");
5177 + if (IS_ERR(spdif->mclk)) {
5178 + dev_err(&pdev->dev, "Can't retrieve rk_spdif master clock\n");
5179 +- return PTR_ERR(spdif->mclk);
5180 ++ ret = PTR_ERR(spdif->mclk);
5181 ++ goto err_disable_hclk;
5182 + }
5183 +
5184 + ret = clk_prepare_enable(spdif->mclk);
5185 + if (ret) {
5186 + dev_err(spdif->dev, "clock enable failed %d\n", ret);
5187 +- return ret;
5188 ++ goto err_disable_clocks;
5189 + }
5190 +
5191 + res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
5192 + regs = devm_ioremap_resource(&pdev->dev, res);
5193 +- if (IS_ERR(regs))
5194 +- return PTR_ERR(regs);
5195 ++ if (IS_ERR(regs)) {
5196 ++ ret = PTR_ERR(regs);
5197 ++ goto err_disable_clocks;
5198 ++ }
5199 +
5200 + spdif->regmap = devm_regmap_init_mmio_clk(&pdev->dev, "hclk", regs,
5201 + &rk_spdif_regmap_config);
5202 + if (IS_ERR(spdif->regmap)) {
5203 + dev_err(&pdev->dev,
5204 + "Failed to initialise managed register map\n");
5205 +- return PTR_ERR(spdif->regmap);
5206 ++ ret = PTR_ERR(spdif->regmap);
5207 ++ goto err_disable_clocks;
5208 + }
5209 +
5210 + spdif->playback_dma_data.addr = res->start + SPDIF_SMPDR;
5211 +@@ -369,6 +373,10 @@ static int rk_spdif_probe(struct platform_device *pdev)
5212 +
5213 + err_pm_runtime:
5214 + pm_runtime_disable(&pdev->dev);
5215 ++err_disable_clocks:
5216 ++ clk_disable_unprepare(spdif->mclk);
5217 ++err_disable_hclk:
5218 ++ clk_disable_unprepare(spdif->hclk);
5219 +
5220 + return ret;
5221 + }
5222 +diff --git a/sound/soc/ux500/mop500.c b/sound/soc/ux500/mop500.c
5223 +index ba9fc099cf67..503aef8fcde2 100644
5224 +--- a/sound/soc/ux500/mop500.c
5225 ++++ b/sound/soc/ux500/mop500.c
5226 +@@ -164,3 +164,7 @@ static struct platform_driver snd_soc_mop500_driver = {
5227 + };
5228 +
5229 + module_platform_driver(snd_soc_mop500_driver);
5230 ++
5231 ++MODULE_LICENSE("GPL v2");
5232 ++MODULE_DESCRIPTION("ASoC MOP500 board driver");
5233 ++MODULE_AUTHOR("Ola Lilja");
5234 +diff --git a/sound/soc/ux500/ux500_pcm.c b/sound/soc/ux500/ux500_pcm.c
5235 +index f12c01dddc8d..d35ba7700f46 100644
5236 +--- a/sound/soc/ux500/ux500_pcm.c
5237 ++++ b/sound/soc/ux500/ux500_pcm.c
5238 +@@ -165,3 +165,8 @@ int ux500_pcm_unregister_platform(struct platform_device *pdev)
5239 + return 0;
5240 + }
5241 + EXPORT_SYMBOL_GPL(ux500_pcm_unregister_platform);
5242 ++
5243 ++MODULE_AUTHOR("Ola Lilja");
5244 ++MODULE_AUTHOR("Roger Nilsson");
5245 ++MODULE_DESCRIPTION("ASoC UX500 driver");
5246 ++MODULE_LICENSE("GPL v2");
5247 +diff --git a/tools/build/Makefile.build b/tools/build/Makefile.build
5248 +index 99c0ccd2f176..e279a71c650d 100644
5249 +--- a/tools/build/Makefile.build
5250 ++++ b/tools/build/Makefile.build
5251 +@@ -19,6 +19,16 @@ else
5252 + Q=@
5253 + endif
5254 +
5255 ++ifneq ($(filter 4.%,$(MAKE_VERSION)),) # make-4
5256 ++ifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),)
5257 ++ quiet=silent_
5258 ++endif
5259 ++else # make-3.8x
5260 ++ifneq ($(filter s% -s%,$(MAKEFLAGS)),)
5261 ++ quiet=silent_
5262 ++endif
5263 ++endif
5264 ++
5265 + build-dir := $(srctree)/tools/build
5266 +
5267 + # Define $(fixdep) for dep-cmd function
5268 +diff --git a/tools/perf/bench/numa.c b/tools/perf/bench/numa.c
5269 +index 9e5a02d6b9a9..23cce5e5197a 100644
5270 +--- a/tools/perf/bench/numa.c
5271 ++++ b/tools/perf/bench/numa.c
5272 +@@ -211,6 +211,47 @@ static const char * const numa_usage[] = {
5273 + NULL
5274 + };
5275 +
5276 ++/*
5277 ++ * To get number of numa nodes present.
5278 ++ */
5279 ++static int nr_numa_nodes(void)
5280 ++{
5281 ++ int i, nr_nodes = 0;
5282 ++
5283 ++ for (i = 0; i < g->p.nr_nodes; i++) {
5284 ++ if (numa_bitmask_isbitset(numa_nodes_ptr, i))
5285 ++ nr_nodes++;
5286 ++ }
5287 ++
5288 ++ return nr_nodes;
5289 ++}
5290 ++
5291 ++/*
5292 ++ * To check if given numa node is present.
5293 ++ */
5294 ++static int is_node_present(int node)
5295 ++{
5296 ++ return numa_bitmask_isbitset(numa_nodes_ptr, node);
5297 ++}
5298 ++
5299 ++/*
5300 ++ * To check given numa node has cpus.
5301 ++ */
5302 ++static bool node_has_cpus(int node)
5303 ++{
5304 ++ struct bitmask *cpu = numa_allocate_cpumask();
5305 ++ unsigned int i;
5306 ++
5307 ++ if (cpu && !numa_node_to_cpus(node, cpu)) {
5308 ++ for (i = 0; i < cpu->size; i++) {
5309 ++ if (numa_bitmask_isbitset(cpu, i))
5310 ++ return true;
5311 ++ }
5312 ++ }
5313 ++
5314 ++ return false; /* lets fall back to nocpus safely */
5315 ++}
5316 ++
5317 + static cpu_set_t bind_to_cpu(int target_cpu)
5318 + {
5319 + cpu_set_t orig_mask, mask;
5320 +@@ -239,12 +280,12 @@ static cpu_set_t bind_to_cpu(int target_cpu)
5321 +
5322 + static cpu_set_t bind_to_node(int target_node)
5323 + {
5324 +- int cpus_per_node = g->p.nr_cpus/g->p.nr_nodes;
5325 ++ int cpus_per_node = g->p.nr_cpus / nr_numa_nodes();
5326 + cpu_set_t orig_mask, mask;
5327 + int cpu;
5328 + int ret;
5329 +
5330 +- BUG_ON(cpus_per_node*g->p.nr_nodes != g->p.nr_cpus);
5331 ++ BUG_ON(cpus_per_node * nr_numa_nodes() != g->p.nr_cpus);
5332 + BUG_ON(!cpus_per_node);
5333 +
5334 + ret = sched_getaffinity(0, sizeof(orig_mask), &orig_mask);
5335 +@@ -644,7 +685,7 @@ static int parse_setup_node_list(void)
5336 + int i;
5337 +
5338 + for (i = 0; i < mul; i++) {
5339 +- if (t >= g->p.nr_tasks) {
5340 ++ if (t >= g->p.nr_tasks || !node_has_cpus(bind_node)) {
5341 + printf("\n# NOTE: ignoring bind NODEs starting at NODE#%d\n", bind_node);
5342 + goto out;
5343 + }
5344 +@@ -959,6 +1000,8 @@ static void calc_convergence(double runtime_ns_max, double *convergence)
5345 + sum = 0;
5346 +
5347 + for (node = 0; node < g->p.nr_nodes; node++) {
5348 ++ if (!is_node_present(node))
5349 ++ continue;
5350 + nr = nodes[node];
5351 + nr_min = min(nr, nr_min);
5352 + nr_max = max(nr, nr_max);
5353 +@@ -979,8 +1022,11 @@ static void calc_convergence(double runtime_ns_max, double *convergence)
5354 + process_groups = 0;
5355 +
5356 + for (node = 0; node < g->p.nr_nodes; node++) {
5357 +- int processes = count_node_processes(node);
5358 ++ int processes;
5359 +
5360 ++ if (!is_node_present(node))
5361 ++ continue;
5362 ++ processes = count_node_processes(node);
5363 + nr = nodes[node];
5364 + tprintf(" %2d/%-2d", nr, processes);
5365 +
5366 +@@ -1286,7 +1332,7 @@ static void print_summary(void)
5367 +
5368 + printf("\n ###\n");
5369 + printf(" # %d %s will execute (on %d nodes, %d CPUs):\n",
5370 +- g->p.nr_tasks, g->p.nr_tasks == 1 ? "task" : "tasks", g->p.nr_nodes, g->p.nr_cpus);
5371 ++ g->p.nr_tasks, g->p.nr_tasks == 1 ? "task" : "tasks", nr_numa_nodes(), g->p.nr_cpus);
5372 + printf(" # %5dx %5ldMB global shared mem operations\n",
5373 + g->p.nr_loops, g->p.bytes_global/1024/1024);
5374 + printf(" # %5dx %5ldMB process shared mem operations\n",
5375 +diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
5376 +index 0b613e701736..c61e012e9771 100644
5377 +--- a/tools/perf/builtin-top.c
5378 ++++ b/tools/perf/builtin-top.c
5379 +@@ -73,6 +73,7 @@
5380 + #include <linux/types.h>
5381 +
5382 + static volatile int done;
5383 ++static volatile int resize;
5384 +
5385 + #define HEADER_LINE_NR 5
5386 +
5387 +@@ -82,10 +83,13 @@ static void perf_top__update_print_entries(struct perf_top *top)
5388 + }
5389 +
5390 + static void perf_top__sig_winch(int sig __maybe_unused,
5391 +- siginfo_t *info __maybe_unused, void *arg)
5392 ++ siginfo_t *info __maybe_unused, void *arg __maybe_unused)
5393 + {
5394 +- struct perf_top *top = arg;
5395 ++ resize = 1;
5396 ++}
5397 +
5398 ++static void perf_top__resize(struct perf_top *top)
5399 ++{
5400 + get_term_dimensions(&top->winsize);
5401 + perf_top__update_print_entries(top);
5402 + }
5403 +@@ -472,7 +476,7 @@ static bool perf_top__handle_keypress(struct perf_top *top, int c)
5404 + .sa_sigaction = perf_top__sig_winch,
5405 + .sa_flags = SA_SIGINFO,
5406 + };
5407 +- perf_top__sig_winch(SIGWINCH, NULL, top);
5408 ++ perf_top__resize(top);
5409 + sigaction(SIGWINCH, &act, NULL);
5410 + } else {
5411 + signal(SIGWINCH, SIG_DFL);
5412 +@@ -1003,6 +1007,11 @@ static int __cmd_top(struct perf_top *top)
5413 +
5414 + if (hits == top->samples)
5415 + ret = perf_evlist__poll(top->evlist, 100);
5416 ++
5417 ++ if (resize) {
5418 ++ perf_top__resize(top);
5419 ++ resize = 0;
5420 ++ }
5421 + }
5422 +
5423 + ret = 0;
5424 +diff --git a/tools/scripts/Makefile.include b/tools/scripts/Makefile.include
5425 +index 8abbef164b4e..19edc1a7a232 100644
5426 +--- a/tools/scripts/Makefile.include
5427 ++++ b/tools/scripts/Makefile.include
5428 +@@ -46,6 +46,16 @@ else
5429 + NO_SUBDIR = :
5430 + endif
5431 +
5432 ++ifneq ($(filter 4.%,$(MAKE_VERSION)),) # make-4
5433 ++ifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),)
5434 ++ silent=1
5435 ++endif
5436 ++else # make-3.8x
5437 ++ifneq ($(filter s% -s%,$(MAKEFLAGS)),)
5438 ++ silent=1
5439 ++endif
5440 ++endif
5441 ++
5442 + #
5443 + # Define a callable command for descending to a new directory
5444 + #
5445 +@@ -58,7 +68,7 @@ descend = \
5446 + QUIET_SUBDIR0 = +$(MAKE) $(COMMAND_O) -C # space to separate -C and subdir
5447 + QUIET_SUBDIR1 =
5448 +
5449 +-ifneq ($(findstring $(MAKEFLAGS),s),s)
5450 ++ifneq ($(silent),1)
5451 + ifneq ($(V),1)
5452 + QUIET_CC = @echo ' CC '$@;
5453 + QUIET_CC_FPIC = @echo ' CC FPIC '$@;