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, 13 Jan 2019 19:26:29
Message-Id: 1547407557.a91bc2527af23ba1fd5596159ed7fb1b45901fdc.mpagano@gentoo
1 commit: a91bc2527af23ba1fd5596159ed7fb1b45901fdc
2 Author: Mike Pagano <mpagano <AT> gentoo <DOT> org>
3 AuthorDate: Sun Jan 13 19:25:57 2019 +0000
4 Commit: Mike Pagano <mpagano <AT> gentoo <DOT> org>
5 CommitDate: Sun Jan 13 19:25:57 2019 +0000
6 URL: https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=a91bc252
7
8 proj/linux-patches: Linux patch 4.9.150
9
10 Signed-off-by: Mike Pagano <mpagano <AT> gentoo.org>
11
12 0000_README | 4 +
13 1149_linux-4.9.150.patch | 2027 ++++++++++++++++++++++++++++++++++++++++++++++
14 2 files changed, 2031 insertions(+)
15
16 diff --git a/0000_README b/0000_README
17 index 81b354f..29c249f 100644
18 --- a/0000_README
19 +++ b/0000_README
20 @@ -639,6 +639,10 @@ Patch: 1148_linux-4.9.149.patch
21 From: http://www.kernel.org
22 Desc: Linux 4.9.149
23
24 +Patch: 1149_linux-4.9.150.patch
25 +From: http://www.kernel.org
26 +Desc: Linux 4.9.150
27 +
28 Patch: 1500_XATTR_USER_PREFIX.patch
29 From: https://bugs.gentoo.org/show_bug.cgi?id=470644
30 Desc: Support for namespace user.pax.* on tmpfs.
31
32 diff --git a/1149_linux-4.9.150.patch b/1149_linux-4.9.150.patch
33 new file mode 100644
34 index 0000000..744f4aa
35 --- /dev/null
36 +++ b/1149_linux-4.9.150.patch
37 @@ -0,0 +1,2027 @@
38 +diff --git a/Makefile b/Makefile
39 +index 1feac0246fe2..0e7874951ac5 100644
40 +--- a/Makefile
41 ++++ b/Makefile
42 +@@ -1,6 +1,6 @@
43 + VERSION = 4
44 + PATCHLEVEL = 9
45 +-SUBLEVEL = 149
46 ++SUBLEVEL = 150
47 + EXTRAVERSION =
48 + NAME = Roaring Lionus
49 +
50 +diff --git a/arch/arm/boot/dts/imx7d-nitrogen7.dts b/arch/arm/boot/dts/imx7d-nitrogen7.dts
51 +index ce08f180f213..080a4ea841c9 100644
52 +--- a/arch/arm/boot/dts/imx7d-nitrogen7.dts
53 ++++ b/arch/arm/boot/dts/imx7d-nitrogen7.dts
54 +@@ -117,13 +117,17 @@
55 + compatible = "regulator-fixed";
56 + regulator-min-microvolt = <3300000>;
57 + regulator-max-microvolt = <3300000>;
58 +- clocks = <&clks IMX7D_CLKO2_ROOT_DIV>;
59 +- clock-names = "slow";
60 + regulator-name = "reg_wlan";
61 + startup-delay-us = <70000>;
62 + gpio = <&gpio4 21 GPIO_ACTIVE_HIGH>;
63 + enable-active-high;
64 + };
65 ++
66 ++ usdhc2_pwrseq: usdhc2_pwrseq {
67 ++ compatible = "mmc-pwrseq-simple";
68 ++ clocks = <&clks IMX7D_CLKO2_ROOT_DIV>;
69 ++ clock-names = "ext_clock";
70 ++ };
71 + };
72 +
73 + &adc1 {
74 +@@ -430,6 +434,7 @@
75 + bus-width = <4>;
76 + non-removable;
77 + vmmc-supply = <&reg_wlan>;
78 ++ mmc-pwrseq = <&usdhc2_pwrseq>;
79 + cap-power-off-card;
80 + keep-power-in-suspend;
81 + status = "okay";
82 +diff --git a/arch/arm/mach-imx/cpuidle-imx6sx.c b/arch/arm/mach-imx/cpuidle-imx6sx.c
83 +index c5a5c3a70ab1..edb888ac5ad3 100644
84 +--- a/arch/arm/mach-imx/cpuidle-imx6sx.c
85 ++++ b/arch/arm/mach-imx/cpuidle-imx6sx.c
86 +@@ -108,7 +108,7 @@ int __init imx6sx_cpuidle_init(void)
87 + * except for power up sw2iso which need to be
88 + * larger than LDO ramp up time.
89 + */
90 +- imx_gpc_set_arm_power_up_timing(2, 1);
91 ++ imx_gpc_set_arm_power_up_timing(0xf, 1);
92 + imx_gpc_set_arm_power_down_timing(1, 1);
93 +
94 + return cpuidle_register(&imx6sx_cpuidle_driver, NULL);
95 +diff --git a/arch/mips/kernel/vdso.c b/arch/mips/kernel/vdso.c
96 +index e88344e3d508..c6297a03d945 100644
97 +--- a/arch/mips/kernel/vdso.c
98 ++++ b/arch/mips/kernel/vdso.c
99 +@@ -111,8 +111,8 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
100 +
101 + /* Map delay slot emulation page */
102 + base = mmap_region(NULL, STACK_TOP, PAGE_SIZE,
103 +- VM_READ|VM_WRITE|VM_EXEC|
104 +- VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC,
105 ++ VM_READ | VM_EXEC |
106 ++ VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC,
107 + 0);
108 + if (IS_ERR_VALUE(base)) {
109 + ret = base;
110 +diff --git a/arch/mips/math-emu/dsemul.c b/arch/mips/math-emu/dsemul.c
111 +index 4a094f7acb3d..7b4329861056 100644
112 +--- a/arch/mips/math-emu/dsemul.c
113 ++++ b/arch/mips/math-emu/dsemul.c
114 +@@ -211,8 +211,9 @@ int mips_dsemul(struct pt_regs *regs, mips_instruction ir,
115 + {
116 + int isa16 = get_isa16_mode(regs->cp0_epc);
117 + mips_instruction break_math;
118 +- struct emuframe __user *fr;
119 +- int err, fr_idx;
120 ++ unsigned long fr_uaddr;
121 ++ struct emuframe fr;
122 ++ int fr_idx, ret;
123 +
124 + /* NOP is easy */
125 + if (ir == 0)
126 +@@ -247,27 +248,31 @@ int mips_dsemul(struct pt_regs *regs, mips_instruction ir,
127 + fr_idx = alloc_emuframe();
128 + if (fr_idx == BD_EMUFRAME_NONE)
129 + return SIGBUS;
130 +- fr = &dsemul_page()[fr_idx];
131 +
132 + /* Retrieve the appropriately encoded break instruction */
133 + break_math = BREAK_MATH(isa16);
134 +
135 + /* Write the instructions to the frame */
136 + if (isa16) {
137 +- err = __put_user(ir >> 16,
138 +- (u16 __user *)(&fr->emul));
139 +- err |= __put_user(ir & 0xffff,
140 +- (u16 __user *)((long)(&fr->emul) + 2));
141 +- err |= __put_user(break_math >> 16,
142 +- (u16 __user *)(&fr->badinst));
143 +- err |= __put_user(break_math & 0xffff,
144 +- (u16 __user *)((long)(&fr->badinst) + 2));
145 ++ union mips_instruction _emul = {
146 ++ .halfword = { ir >> 16, ir }
147 ++ };
148 ++ union mips_instruction _badinst = {
149 ++ .halfword = { break_math >> 16, break_math }
150 ++ };
151 ++
152 ++ fr.emul = _emul.word;
153 ++ fr.badinst = _badinst.word;
154 + } else {
155 +- err = __put_user(ir, &fr->emul);
156 +- err |= __put_user(break_math, &fr->badinst);
157 ++ fr.emul = ir;
158 ++ fr.badinst = break_math;
159 + }
160 +
161 +- if (unlikely(err)) {
162 ++ /* Write the frame to user memory */
163 ++ fr_uaddr = (unsigned long)&dsemul_page()[fr_idx];
164 ++ ret = access_process_vm(current, fr_uaddr, &fr, sizeof(fr),
165 ++ FOLL_FORCE | FOLL_WRITE);
166 ++ if (unlikely(ret != sizeof(fr))) {
167 + MIPS_FPU_EMU_INC_STATS(errors);
168 + free_emuframe(fr_idx, current->mm);
169 + return SIGBUS;
170 +@@ -279,10 +284,7 @@ int mips_dsemul(struct pt_regs *regs, mips_instruction ir,
171 + atomic_set(&current->thread.bd_emu_frame, fr_idx);
172 +
173 + /* Change user register context to execute the frame */
174 +- regs->cp0_epc = (unsigned long)&fr->emul | isa16;
175 +-
176 +- /* Ensure the icache observes our newly written frame */
177 +- flush_cache_sigtramp((unsigned long)&fr->emul);
178 ++ regs->cp0_epc = fr_uaddr | isa16;
179 +
180 + return 0;
181 + }
182 +diff --git a/arch/powerpc/boot/crt0.S b/arch/powerpc/boot/crt0.S
183 +index 5c2199857aa8..a3550e8f1a77 100644
184 +--- a/arch/powerpc/boot/crt0.S
185 ++++ b/arch/powerpc/boot/crt0.S
186 +@@ -15,7 +15,7 @@
187 + RELA = 7
188 + RELACOUNT = 0x6ffffff9
189 +
190 +- .text
191 ++ .data
192 + /* A procedure descriptor used when booting this as a COFF file.
193 + * When making COFF, this comes first in the link and we're
194 + * linked at 0x500000.
195 +@@ -23,6 +23,8 @@ RELACOUNT = 0x6ffffff9
196 + .globl _zimage_start_opd
197 + _zimage_start_opd:
198 + .long 0x500000, 0, 0, 0
199 ++ .text
200 ++ b _zimage_start
201 +
202 + #ifdef __powerpc64__
203 + .balign 8
204 +diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c
205 +index 27aa913ac91d..2bfa5a7bb672 100644
206 +--- a/arch/powerpc/kernel/signal_32.c
207 ++++ b/arch/powerpc/kernel/signal_32.c
208 +@@ -866,7 +866,23 @@ static long restore_tm_user_regs(struct pt_regs *regs,
209 + /* If TM bits are set to the reserved value, it's an invalid context */
210 + if (MSR_TM_RESV(msr_hi))
211 + return 1;
212 +- /* Pull in the MSR TM bits from the user context */
213 ++
214 ++ /*
215 ++ * Disabling preemption, since it is unsafe to be preempted
216 ++ * with MSR[TS] set without recheckpointing.
217 ++ */
218 ++ preempt_disable();
219 ++
220 ++ /*
221 ++ * CAUTION:
222 ++ * After regs->MSR[TS] being updated, make sure that get_user(),
223 ++ * put_user() or similar functions are *not* called. These
224 ++ * functions can generate page faults which will cause the process
225 ++ * to be de-scheduled with MSR[TS] set but without calling
226 ++ * tm_recheckpoint(). This can cause a bug.
227 ++ *
228 ++ * Pull in the MSR TM bits from the user context
229 ++ */
230 + regs->msr = (regs->msr & ~MSR_TS_MASK) | (msr_hi & MSR_TS_MASK);
231 + /* Now, recheckpoint. This loads up all of the checkpointed (older)
232 + * registers, including FP and V[S]Rs. After recheckpointing, the
233 +@@ -891,6 +907,8 @@ static long restore_tm_user_regs(struct pt_regs *regs,
234 + }
235 + #endif
236 +
237 ++ preempt_enable();
238 ++
239 + return 0;
240 + }
241 + #endif
242 +diff --git a/arch/powerpc/kernel/signal_64.c b/arch/powerpc/kernel/signal_64.c
243 +index 04e92257fd69..d929afab7b24 100644
244 +--- a/arch/powerpc/kernel/signal_64.c
245 ++++ b/arch/powerpc/kernel/signal_64.c
246 +@@ -452,20 +452,6 @@ static long restore_tm_sigcontexts(struct task_struct *tsk,
247 + if (MSR_TM_RESV(msr))
248 + return -EINVAL;
249 +
250 +- /* pull in MSR TS bits from user context */
251 +- regs->msr = (regs->msr & ~MSR_TS_MASK) | (msr & MSR_TS_MASK);
252 +-
253 +- /*
254 +- * Ensure that TM is enabled in regs->msr before we leave the signal
255 +- * handler. It could be the case that (a) user disabled the TM bit
256 +- * through the manipulation of the MSR bits in uc_mcontext or (b) the
257 +- * TM bit was disabled because a sufficient number of context switches
258 +- * happened whilst in the signal handler and load_tm overflowed,
259 +- * disabling the TM bit. In either case we can end up with an illegal
260 +- * TM state leading to a TM Bad Thing when we return to userspace.
261 +- */
262 +- regs->msr |= MSR_TM;
263 +-
264 + /* pull in MSR LE from user context */
265 + regs->msr = (regs->msr & ~MSR_LE) | (msr & MSR_LE);
266 +
267 +@@ -557,6 +543,34 @@ static long restore_tm_sigcontexts(struct task_struct *tsk,
268 + tm_enable();
269 + /* Make sure the transaction is marked as failed */
270 + tsk->thread.tm_texasr |= TEXASR_FS;
271 ++
272 ++ /*
273 ++ * Disabling preemption, since it is unsafe to be preempted
274 ++ * with MSR[TS] set without recheckpointing.
275 ++ */
276 ++ preempt_disable();
277 ++
278 ++ /* pull in MSR TS bits from user context */
279 ++ regs->msr = (regs->msr & ~MSR_TS_MASK) | (msr & MSR_TS_MASK);
280 ++
281 ++ /*
282 ++ * Ensure that TM is enabled in regs->msr before we leave the signal
283 ++ * handler. It could be the case that (a) user disabled the TM bit
284 ++ * through the manipulation of the MSR bits in uc_mcontext or (b) the
285 ++ * TM bit was disabled because a sufficient number of context switches
286 ++ * happened whilst in the signal handler and load_tm overflowed,
287 ++ * disabling the TM bit. In either case we can end up with an illegal
288 ++ * TM state leading to a TM Bad Thing when we return to userspace.
289 ++ *
290 ++ * CAUTION:
291 ++ * After regs->MSR[TS] being updated, make sure that get_user(),
292 ++ * put_user() or similar functions are *not* called. These
293 ++ * functions can generate page faults which will cause the process
294 ++ * to be de-scheduled with MSR[TS] set but without calling
295 ++ * tm_recheckpoint(). This can cause a bug.
296 ++ */
297 ++ regs->msr |= MSR_TM;
298 ++
299 + /* This loads the checkpointed FP/VEC state, if used */
300 + tm_recheckpoint(&tsk->thread, msr);
301 +
302 +@@ -570,6 +584,8 @@ static long restore_tm_sigcontexts(struct task_struct *tsk,
303 + regs->msr |= MSR_VEC;
304 + }
305 +
306 ++ preempt_enable();
307 ++
308 + return err;
309 + }
310 + #endif
311 +diff --git a/arch/x86/crypto/chacha20_glue.c b/arch/x86/crypto/chacha20_glue.c
312 +index f910d1d449f0..0a5fedf43bdc 100644
313 +--- a/arch/x86/crypto/chacha20_glue.c
314 ++++ b/arch/x86/crypto/chacha20_glue.c
315 +@@ -77,6 +77,7 @@ static int chacha20_simd(struct blkcipher_desc *desc, struct scatterlist *dst,
316 +
317 + blkcipher_walk_init(&walk, dst, src, nbytes);
318 + err = blkcipher_walk_virt_block(desc, &walk, CHACHA20_BLOCK_SIZE);
319 ++ desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP;
320 +
321 + crypto_chacha20_init(state, crypto_blkcipher_ctx(desc->tfm), walk.iv);
322 +
323 +diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
324 +index a2d8630058ed..70051bf0ee5c 100644
325 +--- a/drivers/gpu/drm/vc4/vc4_plane.c
326 ++++ b/drivers/gpu/drm/vc4/vc4_plane.c
327 +@@ -352,6 +352,7 @@ static int vc4_plane_setup_clipping_and_scaling(struct drm_plane_state *state)
328 + if (vc4_state->is_unity)
329 + vc4_state->x_scaling[0] = VC4_SCALING_PPF;
330 + } else {
331 ++ vc4_state->is_yuv = false;
332 + vc4_state->x_scaling[1] = VC4_SCALING_NONE;
333 + vc4_state->y_scaling[1] = VC4_SCALING_NONE;
334 + }
335 +diff --git a/drivers/hwtracing/intel_th/msu.c b/drivers/hwtracing/intel_th/msu.c
336 +index e8d55a153a65..f91d9faf14ea 100644
337 +--- a/drivers/hwtracing/intel_th/msu.c
338 ++++ b/drivers/hwtracing/intel_th/msu.c
339 +@@ -1429,7 +1429,8 @@ nr_pages_store(struct device *dev, struct device_attribute *attr,
340 + if (!end)
341 + break;
342 +
343 +- len -= end - p;
344 ++ /* consume the number and the following comma, hence +1 */
345 ++ len -= end - p + 1;
346 + p = end + 1;
347 + } while (len);
348 +
349 +diff --git a/drivers/infiniband/hw/hfi1/verbs.c b/drivers/infiniband/hw/hfi1/verbs.c
350 +index 14ddb7506085..d9c71750e22d 100644
351 +--- a/drivers/infiniband/hw/hfi1/verbs.c
352 ++++ b/drivers/infiniband/hw/hfi1/verbs.c
353 +@@ -1088,6 +1088,8 @@ int hfi1_verbs_send_pio(struct rvt_qp *qp, struct hfi1_pkt_state *ps,
354 +
355 + if (slen > len)
356 + slen = len;
357 ++ if (slen > ss->sge.sge_length)
358 ++ slen = ss->sge.sge_length;
359 + update_sge(ss, slen);
360 + seg_pio_copy_mid(pbuf, addr, slen);
361 + len -= slen;
362 +diff --git a/drivers/infiniband/sw/rxe/rxe_resp.c b/drivers/infiniband/sw/rxe/rxe_resp.c
363 +index 2152c71a99d3..297653ab4004 100644
364 +--- a/drivers/infiniband/sw/rxe/rxe_resp.c
365 ++++ b/drivers/infiniband/sw/rxe/rxe_resp.c
366 +@@ -826,11 +826,16 @@ static enum resp_states do_complete(struct rxe_qp *qp,
367 +
368 + memset(&cqe, 0, sizeof(cqe));
369 +
370 +- wc->wr_id = wqe->wr_id;
371 +- wc->status = qp->resp.status;
372 +- wc->qp = &qp->ibqp;
373 ++ if (qp->rcq->is_user) {
374 ++ uwc->status = qp->resp.status;
375 ++ uwc->qp_num = qp->ibqp.qp_num;
376 ++ uwc->wr_id = wqe->wr_id;
377 ++ } else {
378 ++ wc->status = qp->resp.status;
379 ++ wc->qp = &qp->ibqp;
380 ++ wc->wr_id = wqe->wr_id;
381 ++ }
382 +
383 +- /* fields after status are not required for errors */
384 + if (wc->status == IB_WC_SUCCESS) {
385 + wc->opcode = (pkt->mask & RXE_IMMDT_MASK &&
386 + pkt->mask & RXE_WRITE_MASK) ?
387 +diff --git a/drivers/input/keyboard/omap4-keypad.c b/drivers/input/keyboard/omap4-keypad.c
388 +index f78c464899db..3d2c60c8de83 100644
389 +--- a/drivers/input/keyboard/omap4-keypad.c
390 ++++ b/drivers/input/keyboard/omap4-keypad.c
391 +@@ -126,12 +126,8 @@ static irqreturn_t omap4_keypad_irq_handler(int irq, void *dev_id)
392 + {
393 + struct omap4_keypad *keypad_data = dev_id;
394 +
395 +- if (kbd_read_irqreg(keypad_data, OMAP4_KBD_IRQSTATUS)) {
396 +- /* Disable interrupts */
397 +- kbd_write_irqreg(keypad_data, OMAP4_KBD_IRQENABLE,
398 +- OMAP4_VAL_IRQDISABLE);
399 ++ if (kbd_read_irqreg(keypad_data, OMAP4_KBD_IRQSTATUS))
400 + return IRQ_WAKE_THREAD;
401 +- }
402 +
403 + return IRQ_NONE;
404 + }
405 +@@ -173,11 +169,6 @@ static irqreturn_t omap4_keypad_irq_thread_fn(int irq, void *dev_id)
406 + kbd_write_irqreg(keypad_data, OMAP4_KBD_IRQSTATUS,
407 + kbd_read_irqreg(keypad_data, OMAP4_KBD_IRQSTATUS));
408 +
409 +- /* enable interrupts */
410 +- kbd_write_irqreg(keypad_data, OMAP4_KBD_IRQENABLE,
411 +- OMAP4_DEF_IRQENABLE_EVENTEN |
412 +- OMAP4_DEF_IRQENABLE_LONGKEY);
413 +-
414 + return IRQ_HANDLED;
415 + }
416 +
417 +@@ -214,9 +205,10 @@ static void omap4_keypad_close(struct input_dev *input)
418 +
419 + disable_irq(keypad_data->irq);
420 +
421 +- /* Disable interrupts */
422 ++ /* Disable interrupts and wake-up events */
423 + kbd_write_irqreg(keypad_data, OMAP4_KBD_IRQENABLE,
424 + OMAP4_VAL_IRQDISABLE);
425 ++ kbd_writel(keypad_data, OMAP4_KBD_WAKEUPENABLE, 0);
426 +
427 + /* clear pending interrupts */
428 + kbd_write_irqreg(keypad_data, OMAP4_KBD_IRQSTATUS,
429 +@@ -364,7 +356,7 @@ static int omap4_keypad_probe(struct platform_device *pdev)
430 + }
431 +
432 + error = request_threaded_irq(keypad_data->irq, omap4_keypad_irq_handler,
433 +- omap4_keypad_irq_thread_fn, 0,
434 ++ omap4_keypad_irq_thread_fn, IRQF_ONESHOT,
435 + "omap4-keypad", keypad_data);
436 + if (error) {
437 + dev_err(&pdev->dev, "failed to register interrupt\n");
438 +diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
439 +index f8c8537f0587..86e349614e21 100644
440 +--- a/drivers/iommu/intel-iommu.c
441 ++++ b/drivers/iommu/intel-iommu.c
442 +@@ -2084,7 +2084,7 @@ static int domain_context_mapping_one(struct dmar_domain *domain,
443 + * than default. Unnecessary for PT mode.
444 + */
445 + if (translation != CONTEXT_TT_PASS_THROUGH) {
446 +- for (agaw = domain->agaw; agaw != iommu->agaw; agaw--) {
447 ++ for (agaw = domain->agaw; agaw > iommu->agaw; agaw--) {
448 + ret = -ENOMEM;
449 + pgd = phys_to_virt(dma_pte_addr(pgd));
450 + if (!dma_pte_present(pgd))
451 +@@ -2098,7 +2098,7 @@ static int domain_context_mapping_one(struct dmar_domain *domain,
452 + translation = CONTEXT_TT_MULTI_LEVEL;
453 +
454 + context_set_address_root(context, virt_to_phys(pgd));
455 +- context_set_address_width(context, iommu->agaw);
456 ++ context_set_address_width(context, agaw);
457 + } else {
458 + /*
459 + * In pass through mode, AW must be programmed to
460 +diff --git a/drivers/misc/genwqe/card_utils.c b/drivers/misc/genwqe/card_utils.c
461 +index fc2794b513fa..466a9b711480 100644
462 +--- a/drivers/misc/genwqe/card_utils.c
463 ++++ b/drivers/misc/genwqe/card_utils.c
464 +@@ -217,7 +217,7 @@ u32 genwqe_crc32(u8 *buff, size_t len, u32 init)
465 + void *__genwqe_alloc_consistent(struct genwqe_dev *cd, size_t size,
466 + dma_addr_t *dma_handle)
467 + {
468 +- if (get_order(size) > MAX_ORDER)
469 ++ if (get_order(size) >= MAX_ORDER)
470 + return NULL;
471 +
472 + return dma_zalloc_coherent(&cd->pci_dev->dev, size, dma_handle,
473 +diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
474 +index fca2e428cd86..de4b5d267c30 100644
475 +--- a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
476 ++++ b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
477 +@@ -29,9 +29,6 @@
478 + #define RES_RING_CSR 1
479 + #define RES_RING_CMD 2
480 +
481 +-static const struct of_device_id xgene_enet_of_match[];
482 +-static const struct acpi_device_id xgene_enet_acpi_match[];
483 +-
484 + static void xgene_enet_init_bufpool(struct xgene_enet_desc_ring *buf_pool)
485 + {
486 + struct xgene_enet_raw_desc16 *raw_desc;
487 +diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
488 +index d5e4c42662b6..162b809422f4 100644
489 +--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
490 ++++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
491 +@@ -1278,6 +1278,7 @@ enum sp_rtnl_flag {
492 + BNX2X_SP_RTNL_TX_STOP,
493 + BNX2X_SP_RTNL_GET_DRV_VERSION,
494 + BNX2X_SP_RTNL_CHANGE_UDP_PORT,
495 ++ BNX2X_SP_RTNL_UPDATE_SVID,
496 + };
497 +
498 + enum bnx2x_iov_flag {
499 +diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
500 +index 54dab4eac804..4bc2c806eb61 100644
501 +--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
502 ++++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
503 +@@ -2925,6 +2925,10 @@ static void bnx2x_handle_update_svid_cmd(struct bnx2x *bp)
504 + func_params.f_obj = &bp->func_obj;
505 + func_params.cmd = BNX2X_F_CMD_SWITCH_UPDATE;
506 +
507 ++ /* Prepare parameters for function state transitions */
508 ++ __set_bit(RAMROD_COMP_WAIT, &func_params.ramrod_flags);
509 ++ __set_bit(RAMROD_RETRY, &func_params.ramrod_flags);
510 ++
511 + if (IS_MF_UFP(bp) || IS_MF_BD(bp)) {
512 + int func = BP_ABS_FUNC(bp);
513 + u32 val;
514 +@@ -4301,7 +4305,8 @@ static void bnx2x_attn_int_deasserted3(struct bnx2x *bp, u32 attn)
515 + bnx2x_handle_eee_event(bp);
516 +
517 + if (val & DRV_STATUS_OEM_UPDATE_SVID)
518 +- bnx2x_handle_update_svid_cmd(bp);
519 ++ bnx2x_schedule_sp_rtnl(bp,
520 ++ BNX2X_SP_RTNL_UPDATE_SVID, 0);
521 +
522 + if (bp->link_vars.periodic_flags &
523 + PERIODIC_FLAGS_LINK_EVENT) {
524 +@@ -8462,6 +8467,7 @@ int bnx2x_set_vlan_one(struct bnx2x *bp, u16 vlan,
525 + /* Fill a user request section if needed */
526 + if (!test_bit(RAMROD_CONT, ramrod_flags)) {
527 + ramrod_param.user_req.u.vlan.vlan = vlan;
528 ++ __set_bit(BNX2X_VLAN, &ramrod_param.user_req.vlan_mac_flags);
529 + /* Set the command: ADD or DEL */
530 + if (set)
531 + ramrod_param.user_req.cmd = BNX2X_VLAN_MAC_ADD;
532 +@@ -8482,6 +8488,27 @@ int bnx2x_set_vlan_one(struct bnx2x *bp, u16 vlan,
533 + return rc;
534 + }
535 +
536 ++static int bnx2x_del_all_vlans(struct bnx2x *bp)
537 ++{
538 ++ struct bnx2x_vlan_mac_obj *vlan_obj = &bp->sp_objs[0].vlan_obj;
539 ++ unsigned long ramrod_flags = 0, vlan_flags = 0;
540 ++ struct bnx2x_vlan_entry *vlan;
541 ++ int rc;
542 ++
543 ++ __set_bit(RAMROD_COMP_WAIT, &ramrod_flags);
544 ++ __set_bit(BNX2X_VLAN, &vlan_flags);
545 ++ rc = vlan_obj->delete_all(bp, vlan_obj, &vlan_flags, &ramrod_flags);
546 ++ if (rc)
547 ++ return rc;
548 ++
549 ++ /* Mark that hw forgot all entries */
550 ++ list_for_each_entry(vlan, &bp->vlan_reg, link)
551 ++ vlan->hw = false;
552 ++ bp->vlan_cnt = 0;
553 ++
554 ++ return 0;
555 ++}
556 ++
557 + int bnx2x_del_all_macs(struct bnx2x *bp,
558 + struct bnx2x_vlan_mac_obj *mac_obj,
559 + int mac_type, bool wait_for_comp)
560 +@@ -9320,6 +9347,17 @@ void bnx2x_chip_cleanup(struct bnx2x *bp, int unload_mode, bool keep_link)
561 + BNX2X_ERR("Failed to schedule DEL commands for UC MACs list: %d\n",
562 + rc);
563 +
564 ++ /* The whole *vlan_obj structure may be not initialized if VLAN
565 ++ * filtering offload is not supported by hardware. Currently this is
566 ++ * true for all hardware covered by CHIP_IS_E1x().
567 ++ */
568 ++ if (!CHIP_IS_E1x(bp)) {
569 ++ /* Remove all currently configured VLANs */
570 ++ rc = bnx2x_del_all_vlans(bp);
571 ++ if (rc < 0)
572 ++ BNX2X_ERR("Failed to delete all VLANs\n");
573 ++ }
574 ++
575 + /* Disable LLH */
576 + if (!CHIP_IS_E1(bp))
577 + REG_WR(bp, NIG_REG_LLH0_FUNC_EN + port*8, 0);
578 +@@ -10342,6 +10380,9 @@ sp_rtnl_not_reset:
579 + &bp->sp_rtnl_state))
580 + bnx2x_update_mng_version(bp);
581 +
582 ++ if (test_and_clear_bit(BNX2X_SP_RTNL_UPDATE_SVID, &bp->sp_rtnl_state))
583 ++ bnx2x_handle_update_svid_cmd(bp);
584 ++
585 + if (test_and_clear_bit(BNX2X_SP_RTNL_CHANGE_UDP_PORT,
586 + &bp->sp_rtnl_state)) {
587 + if (bnx2x_udp_port_update(bp)) {
588 +@@ -11733,8 +11774,10 @@ static void bnx2x_get_fcoe_info(struct bnx2x *bp)
589 + * If maximum allowed number of connections is zero -
590 + * disable the feature.
591 + */
592 +- if (!bp->cnic_eth_dev.max_fcoe_conn)
593 ++ if (!bp->cnic_eth_dev.max_fcoe_conn) {
594 + bp->flags |= NO_FCOE_FLAG;
595 ++ eth_zero_addr(bp->fip_mac);
596 ++ }
597 + }
598 +
599 + static void bnx2x_get_cnic_info(struct bnx2x *bp)
600 +@@ -13005,13 +13048,6 @@ static void bnx2x_vlan_configure(struct bnx2x *bp, bool set_rx_mode)
601 +
602 + int bnx2x_vlan_reconfigure_vid(struct bnx2x *bp)
603 + {
604 +- struct bnx2x_vlan_entry *vlan;
605 +-
606 +- /* The hw forgot all entries after reload */
607 +- list_for_each_entry(vlan, &bp->vlan_reg, link)
608 +- vlan->hw = false;
609 +- bp->vlan_cnt = 0;
610 +-
611 + /* Don't set rx mode here. Our caller will do it. */
612 + bnx2x_vlan_configure(bp, false);
613 +
614 +diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h
615 +index 0bf2fd470819..7a6e82db4231 100644
616 +--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h
617 ++++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h
618 +@@ -265,6 +265,7 @@ enum {
619 + BNX2X_ETH_MAC,
620 + BNX2X_ISCSI_ETH_MAC,
621 + BNX2X_NETQ_ETH_MAC,
622 ++ BNX2X_VLAN,
623 + BNX2X_DONT_CONSUME_CAM_CREDIT,
624 + BNX2X_DONT_CONSUME_CAM_CREDIT_DEST,
625 + };
626 +@@ -272,7 +273,8 @@ enum {
627 + #define BNX2X_VLAN_MAC_CMP_MASK (1 << BNX2X_UC_LIST_MAC | \
628 + 1 << BNX2X_ETH_MAC | \
629 + 1 << BNX2X_ISCSI_ETH_MAC | \
630 +- 1 << BNX2X_NETQ_ETH_MAC)
631 ++ 1 << BNX2X_NETQ_ETH_MAC | \
632 ++ 1 << BNX2X_VLAN)
633 + #define BNX2X_VLAN_MAC_CMP_FLAGS(flags) \
634 + ((flags) & BNX2X_VLAN_MAC_CMP_MASK)
635 +
636 +diff --git a/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c b/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c
637 +index b7c8433a7a37..0b4d90ceea7a 100644
638 +--- a/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c
639 ++++ b/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c
640 +@@ -290,6 +290,9 @@ void hns_ae_stop(struct hnae_handle *handle)
641 +
642 + hns_ae_ring_enable_all(handle, 0);
643 +
644 ++ /* clean rx fbd. */
645 ++ hns_rcb_wait_fbd_clean(handle->qs, handle->q_num, RCB_INT_FLAG_RX);
646 ++
647 + (void)hns_mac_vm_config_bc_en(mac_cb, 0, false);
648 + }
649 +
650 +diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c
651 +index 02a03bccde7b..95967470d423 100644
652 +--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c
653 ++++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c
654 +@@ -67,11 +67,14 @@ static void hns_gmac_enable(void *mac_drv, enum mac_commom_mode mode)
655 + struct mac_driver *drv = (struct mac_driver *)mac_drv;
656 +
657 + /*enable GE rX/tX */
658 +- if ((mode == MAC_COMM_MODE_TX) || (mode == MAC_COMM_MODE_RX_AND_TX))
659 ++ if (mode == MAC_COMM_MODE_TX || mode == MAC_COMM_MODE_RX_AND_TX)
660 + dsaf_set_dev_bit(drv, GMAC_PORT_EN_REG, GMAC_PORT_TX_EN_B, 1);
661 +
662 +- if ((mode == MAC_COMM_MODE_RX) || (mode == MAC_COMM_MODE_RX_AND_TX))
663 ++ if (mode == MAC_COMM_MODE_RX || mode == MAC_COMM_MODE_RX_AND_TX) {
664 ++ /* enable rx pcs */
665 ++ dsaf_set_dev_bit(drv, GMAC_PCS_RX_EN_REG, 0, 0);
666 + dsaf_set_dev_bit(drv, GMAC_PORT_EN_REG, GMAC_PORT_RX_EN_B, 1);
667 ++ }
668 + }
669 +
670 + static void hns_gmac_disable(void *mac_drv, enum mac_commom_mode mode)
671 +@@ -79,11 +82,14 @@ static void hns_gmac_disable(void *mac_drv, enum mac_commom_mode mode)
672 + struct mac_driver *drv = (struct mac_driver *)mac_drv;
673 +
674 + /*disable GE rX/tX */
675 +- if ((mode == MAC_COMM_MODE_TX) || (mode == MAC_COMM_MODE_RX_AND_TX))
676 ++ if (mode == MAC_COMM_MODE_TX || mode == MAC_COMM_MODE_RX_AND_TX)
677 + dsaf_set_dev_bit(drv, GMAC_PORT_EN_REG, GMAC_PORT_TX_EN_B, 0);
678 +
679 +- if ((mode == MAC_COMM_MODE_RX) || (mode == MAC_COMM_MODE_RX_AND_TX))
680 ++ if (mode == MAC_COMM_MODE_RX || mode == MAC_COMM_MODE_RX_AND_TX) {
681 ++ /* disable rx pcs */
682 ++ dsaf_set_dev_bit(drv, GMAC_PCS_RX_EN_REG, 0, 1);
683 + dsaf_set_dev_bit(drv, GMAC_PORT_EN_REG, GMAC_PORT_RX_EN_B, 0);
684 ++ }
685 + }
686 +
687 + /* hns_gmac_get_en - get port enable
688 +diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c
689 +index ec8c738af726..b6429be2b8bd 100644
690 +--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c
691 ++++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c
692 +@@ -724,6 +724,17 @@ static void hns_mac_register_phy(struct hns_mac_cb *mac_cb)
693 + mac_cb->mac_id, addr);
694 + }
695 +
696 ++static void hns_mac_remove_phydev(struct hns_mac_cb *mac_cb)
697 ++{
698 ++ if (!to_acpi_device_node(mac_cb->fw_port) || !mac_cb->phy_dev)
699 ++ return;
700 ++
701 ++ phy_device_remove(mac_cb->phy_dev);
702 ++ phy_device_free(mac_cb->phy_dev);
703 ++
704 ++ mac_cb->phy_dev = NULL;
705 ++}
706 ++
707 + #define MAC_MEDIA_TYPE_MAX_LEN 16
708 +
709 + static const struct {
710 +@@ -1030,7 +1041,11 @@ void hns_mac_uninit(struct dsaf_device *dsaf_dev)
711 + int max_port_num = hns_mac_get_max_port_num(dsaf_dev);
712 +
713 + for (i = 0; i < max_port_num; i++) {
714 ++ if (!dsaf_dev->mac_cb[i])
715 ++ continue;
716 ++
717 + dsaf_dev->misc_op->cpld_reset_led(dsaf_dev->mac_cb[i]);
718 ++ hns_mac_remove_phydev(dsaf_dev->mac_cb[i]);
719 + dsaf_dev->mac_cb[i] = NULL;
720 + }
721 + }
722 +diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c
723 +index 8ea3d95fa483..5bb019d49409 100644
724 +--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c
725 ++++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c
726 +@@ -2163,9 +2163,9 @@ void hns_dsaf_update_stats(struct dsaf_device *dsaf_dev, u32 node_num)
727 + DSAF_INODE_LOCAL_ADDR_FALSE_NUM_0_REG + 0x80 * (u64)node_num);
728 +
729 + hw_stats->vlan_drop += dsaf_read_dev(dsaf_dev,
730 +- DSAF_INODE_SW_VLAN_TAG_DISC_0_REG + 0x80 * (u64)node_num);
731 ++ DSAF_INODE_SW_VLAN_TAG_DISC_0_REG + 4 * (u64)node_num);
732 + hw_stats->stp_drop += dsaf_read_dev(dsaf_dev,
733 +- DSAF_INODE_IN_DATA_STP_DISC_0_REG + 0x80 * (u64)node_num);
734 ++ DSAF_INODE_IN_DATA_STP_DISC_0_REG + 4 * (u64)node_num);
735 +
736 + /* pfc pause frame statistics stored in dsaf inode*/
737 + if ((node_num < DSAF_SERVICE_NW_NUM) && !is_ver1) {
738 +@@ -2282,237 +2282,237 @@ void hns_dsaf_get_regs(struct dsaf_device *ddev, u32 port, void *data)
739 + DSAF_INODE_BD_ORDER_STATUS_0_REG + j * 4);
740 + p[223 + i] = dsaf_read_dev(ddev,
741 + DSAF_INODE_SW_VLAN_TAG_DISC_0_REG + j * 4);
742 +- p[224 + i] = dsaf_read_dev(ddev,
743 ++ p[226 + i] = dsaf_read_dev(ddev,
744 + DSAF_INODE_IN_DATA_STP_DISC_0_REG + j * 4);
745 + }
746 +
747 +- p[227] = dsaf_read_dev(ddev, DSAF_INODE_GE_FC_EN_0_REG + port * 4);
748 ++ p[229] = dsaf_read_dev(ddev, DSAF_INODE_GE_FC_EN_0_REG + port * 4);
749 +
750 + for (i = 0; i < DSAF_INODE_NUM / DSAF_COMM_CHN; i++) {
751 + j = i * DSAF_COMM_CHN + port;
752 +- p[228 + i] = dsaf_read_dev(ddev,
753 ++ p[230 + i] = dsaf_read_dev(ddev,
754 + DSAF_INODE_VC0_IN_PKT_NUM_0_REG + j * 4);
755 + }
756 +
757 +- p[231] = dsaf_read_dev(ddev,
758 +- DSAF_INODE_VC1_IN_PKT_NUM_0_REG + port * 4);
759 ++ p[233] = dsaf_read_dev(ddev,
760 ++ DSAF_INODE_VC1_IN_PKT_NUM_0_REG + port * 0x80);
761 +
762 + /* dsaf inode registers */
763 + for (i = 0; i < HNS_DSAF_SBM_NUM(ddev) / DSAF_COMM_CHN; i++) {
764 + j = i * DSAF_COMM_CHN + port;
765 +- p[232 + i] = dsaf_read_dev(ddev,
766 ++ p[234 + i] = dsaf_read_dev(ddev,
767 + DSAF_SBM_CFG_REG_0_REG + j * 0x80);
768 +- p[235 + i] = dsaf_read_dev(ddev,
769 ++ p[237 + i] = dsaf_read_dev(ddev,
770 + DSAF_SBM_BP_CFG_0_XGE_REG_0_REG + j * 0x80);
771 +- p[238 + i] = dsaf_read_dev(ddev,
772 ++ p[240 + i] = dsaf_read_dev(ddev,
773 + DSAF_SBM_BP_CFG_1_REG_0_REG + j * 0x80);
774 +- p[241 + i] = dsaf_read_dev(ddev,
775 ++ p[243 + i] = dsaf_read_dev(ddev,
776 + DSAF_SBM_BP_CFG_2_XGE_REG_0_REG + j * 0x80);
777 +- p[244 + i] = dsaf_read_dev(ddev,
778 ++ p[246 + i] = dsaf_read_dev(ddev,
779 + DSAF_SBM_FREE_CNT_0_0_REG + j * 0x80);
780 +- p[245 + i] = dsaf_read_dev(ddev,
781 ++ p[249 + i] = dsaf_read_dev(ddev,
782 + DSAF_SBM_FREE_CNT_1_0_REG + j * 0x80);
783 +- p[248 + i] = dsaf_read_dev(ddev,
784 ++ p[252 + i] = dsaf_read_dev(ddev,
785 + DSAF_SBM_BP_CNT_0_0_REG + j * 0x80);
786 +- p[251 + i] = dsaf_read_dev(ddev,
787 ++ p[255 + i] = dsaf_read_dev(ddev,
788 + DSAF_SBM_BP_CNT_1_0_REG + j * 0x80);
789 +- p[254 + i] = dsaf_read_dev(ddev,
790 ++ p[258 + i] = dsaf_read_dev(ddev,
791 + DSAF_SBM_BP_CNT_2_0_REG + j * 0x80);
792 +- p[257 + i] = dsaf_read_dev(ddev,
793 ++ p[261 + i] = dsaf_read_dev(ddev,
794 + DSAF_SBM_BP_CNT_3_0_REG + j * 0x80);
795 +- p[260 + i] = dsaf_read_dev(ddev,
796 ++ p[264 + i] = dsaf_read_dev(ddev,
797 + DSAF_SBM_INER_ST_0_REG + j * 0x80);
798 +- p[263 + i] = dsaf_read_dev(ddev,
799 ++ p[267 + i] = dsaf_read_dev(ddev,
800 + DSAF_SBM_MIB_REQ_FAILED_TC_0_REG + j * 0x80);
801 +- p[266 + i] = dsaf_read_dev(ddev,
802 ++ p[270 + i] = dsaf_read_dev(ddev,
803 + DSAF_SBM_LNK_INPORT_CNT_0_REG + j * 0x80);
804 +- p[269 + i] = dsaf_read_dev(ddev,
805 ++ p[273 + i] = dsaf_read_dev(ddev,
806 + DSAF_SBM_LNK_DROP_CNT_0_REG + j * 0x80);
807 +- p[272 + i] = dsaf_read_dev(ddev,
808 ++ p[276 + i] = dsaf_read_dev(ddev,
809 + DSAF_SBM_INF_OUTPORT_CNT_0_REG + j * 0x80);
810 +- p[275 + i] = dsaf_read_dev(ddev,
811 ++ p[279 + i] = dsaf_read_dev(ddev,
812 + DSAF_SBM_LNK_INPORT_TC0_CNT_0_REG + j * 0x80);
813 +- p[278 + i] = dsaf_read_dev(ddev,
814 ++ p[282 + i] = dsaf_read_dev(ddev,
815 + DSAF_SBM_LNK_INPORT_TC1_CNT_0_REG + j * 0x80);
816 +- p[281 + i] = dsaf_read_dev(ddev,
817 ++ p[285 + i] = dsaf_read_dev(ddev,
818 + DSAF_SBM_LNK_INPORT_TC2_CNT_0_REG + j * 0x80);
819 +- p[284 + i] = dsaf_read_dev(ddev,
820 ++ p[288 + i] = dsaf_read_dev(ddev,
821 + DSAF_SBM_LNK_INPORT_TC3_CNT_0_REG + j * 0x80);
822 +- p[287 + i] = dsaf_read_dev(ddev,
823 ++ p[291 + i] = dsaf_read_dev(ddev,
824 + DSAF_SBM_LNK_INPORT_TC4_CNT_0_REG + j * 0x80);
825 +- p[290 + i] = dsaf_read_dev(ddev,
826 ++ p[294 + i] = dsaf_read_dev(ddev,
827 + DSAF_SBM_LNK_INPORT_TC5_CNT_0_REG + j * 0x80);
828 +- p[293 + i] = dsaf_read_dev(ddev,
829 ++ p[297 + i] = dsaf_read_dev(ddev,
830 + DSAF_SBM_LNK_INPORT_TC6_CNT_0_REG + j * 0x80);
831 +- p[296 + i] = dsaf_read_dev(ddev,
832 ++ p[300 + i] = dsaf_read_dev(ddev,
833 + DSAF_SBM_LNK_INPORT_TC7_CNT_0_REG + j * 0x80);
834 +- p[299 + i] = dsaf_read_dev(ddev,
835 ++ p[303 + i] = dsaf_read_dev(ddev,
836 + DSAF_SBM_LNK_REQ_CNT_0_REG + j * 0x80);
837 +- p[302 + i] = dsaf_read_dev(ddev,
838 ++ p[306 + i] = dsaf_read_dev(ddev,
839 + DSAF_SBM_LNK_RELS_CNT_0_REG + j * 0x80);
840 +- p[305 + i] = dsaf_read_dev(ddev,
841 ++ p[309 + i] = dsaf_read_dev(ddev,
842 + DSAF_SBM_BP_CFG_3_REG_0_REG + j * 0x80);
843 +- p[308 + i] = dsaf_read_dev(ddev,
844 ++ p[312 + i] = dsaf_read_dev(ddev,
845 + DSAF_SBM_BP_CFG_4_REG_0_REG + j * 0x80);
846 + }
847 +
848 + /* dsaf onode registers */
849 + for (i = 0; i < DSAF_XOD_NUM; i++) {
850 +- p[311 + i] = dsaf_read_dev(ddev,
851 ++ p[315 + i] = dsaf_read_dev(ddev,
852 + DSAF_XOD_ETS_TSA_TC0_TC3_CFG_0_REG + i * 0x90);
853 +- p[319 + i] = dsaf_read_dev(ddev,
854 ++ p[323 + i] = dsaf_read_dev(ddev,
855 + DSAF_XOD_ETS_TSA_TC4_TC7_CFG_0_REG + i * 0x90);
856 +- p[327 + i] = dsaf_read_dev(ddev,
857 ++ p[331 + i] = dsaf_read_dev(ddev,
858 + DSAF_XOD_ETS_BW_TC0_TC3_CFG_0_REG + i * 0x90);
859 +- p[335 + i] = dsaf_read_dev(ddev,
860 ++ p[339 + i] = dsaf_read_dev(ddev,
861 + DSAF_XOD_ETS_BW_TC4_TC7_CFG_0_REG + i * 0x90);
862 +- p[343 + i] = dsaf_read_dev(ddev,
863 ++ p[347 + i] = dsaf_read_dev(ddev,
864 + DSAF_XOD_ETS_BW_OFFSET_CFG_0_REG + i * 0x90);
865 +- p[351 + i] = dsaf_read_dev(ddev,
866 ++ p[355 + i] = dsaf_read_dev(ddev,
867 + DSAF_XOD_ETS_TOKEN_CFG_0_REG + i * 0x90);
868 + }
869 +
870 +- p[359] = dsaf_read_dev(ddev, DSAF_XOD_PFS_CFG_0_0_REG + port * 0x90);
871 +- p[360] = dsaf_read_dev(ddev, DSAF_XOD_PFS_CFG_1_0_REG + port * 0x90);
872 +- p[361] = dsaf_read_dev(ddev, DSAF_XOD_PFS_CFG_2_0_REG + port * 0x90);
873 ++ p[363] = dsaf_read_dev(ddev, DSAF_XOD_PFS_CFG_0_0_REG + port * 0x90);
874 ++ p[364] = dsaf_read_dev(ddev, DSAF_XOD_PFS_CFG_1_0_REG + port * 0x90);
875 ++ p[365] = dsaf_read_dev(ddev, DSAF_XOD_PFS_CFG_2_0_REG + port * 0x90);
876 +
877 + for (i = 0; i < DSAF_XOD_BIG_NUM / DSAF_COMM_CHN; i++) {
878 + j = i * DSAF_COMM_CHN + port;
879 +- p[362 + i] = dsaf_read_dev(ddev,
880 ++ p[366 + i] = dsaf_read_dev(ddev,
881 + DSAF_XOD_GNT_L_0_REG + j * 0x90);
882 +- p[365 + i] = dsaf_read_dev(ddev,
883 ++ p[369 + i] = dsaf_read_dev(ddev,
884 + DSAF_XOD_GNT_H_0_REG + j * 0x90);
885 +- p[368 + i] = dsaf_read_dev(ddev,
886 ++ p[372 + i] = dsaf_read_dev(ddev,
887 + DSAF_XOD_CONNECT_STATE_0_REG + j * 0x90);
888 +- p[371 + i] = dsaf_read_dev(ddev,
889 ++ p[375 + i] = dsaf_read_dev(ddev,
890 + DSAF_XOD_RCVPKT_CNT_0_REG + j * 0x90);
891 +- p[374 + i] = dsaf_read_dev(ddev,
892 ++ p[378 + i] = dsaf_read_dev(ddev,
893 + DSAF_XOD_RCVTC0_CNT_0_REG + j * 0x90);
894 +- p[377 + i] = dsaf_read_dev(ddev,
895 ++ p[381 + i] = dsaf_read_dev(ddev,
896 + DSAF_XOD_RCVTC1_CNT_0_REG + j * 0x90);
897 +- p[380 + i] = dsaf_read_dev(ddev,
898 ++ p[384 + i] = dsaf_read_dev(ddev,
899 + DSAF_XOD_RCVTC2_CNT_0_REG + j * 0x90);
900 +- p[383 + i] = dsaf_read_dev(ddev,
901 ++ p[387 + i] = dsaf_read_dev(ddev,
902 + DSAF_XOD_RCVTC3_CNT_0_REG + j * 0x90);
903 +- p[386 + i] = dsaf_read_dev(ddev,
904 ++ p[390 + i] = dsaf_read_dev(ddev,
905 + DSAF_XOD_RCVVC0_CNT_0_REG + j * 0x90);
906 +- p[389 + i] = dsaf_read_dev(ddev,
907 ++ p[393 + i] = dsaf_read_dev(ddev,
908 + DSAF_XOD_RCVVC1_CNT_0_REG + j * 0x90);
909 + }
910 +
911 +- p[392] = dsaf_read_dev(ddev,
912 ++ p[396] = dsaf_read_dev(ddev,
913 + DSAF_XOD_XGE_RCVIN0_CNT_0_REG + port * 0x90);
914 +- p[393] = dsaf_read_dev(ddev,
915 ++ p[397] = dsaf_read_dev(ddev,
916 + DSAF_XOD_XGE_RCVIN1_CNT_0_REG + port * 0x90);
917 +- p[394] = dsaf_read_dev(ddev,
918 ++ p[398] = dsaf_read_dev(ddev,
919 + DSAF_XOD_XGE_RCVIN2_CNT_0_REG + port * 0x90);
920 +- p[395] = dsaf_read_dev(ddev,
921 ++ p[399] = dsaf_read_dev(ddev,
922 + DSAF_XOD_XGE_RCVIN3_CNT_0_REG + port * 0x90);
923 +- p[396] = dsaf_read_dev(ddev,
924 ++ p[400] = dsaf_read_dev(ddev,
925 + DSAF_XOD_XGE_RCVIN4_CNT_0_REG + port * 0x90);
926 +- p[397] = dsaf_read_dev(ddev,
927 ++ p[401] = dsaf_read_dev(ddev,
928 + DSAF_XOD_XGE_RCVIN5_CNT_0_REG + port * 0x90);
929 +- p[398] = dsaf_read_dev(ddev,
930 ++ p[402] = dsaf_read_dev(ddev,
931 + DSAF_XOD_XGE_RCVIN6_CNT_0_REG + port * 0x90);
932 +- p[399] = dsaf_read_dev(ddev,
933 ++ p[403] = dsaf_read_dev(ddev,
934 + DSAF_XOD_XGE_RCVIN7_CNT_0_REG + port * 0x90);
935 +- p[400] = dsaf_read_dev(ddev,
936 ++ p[404] = dsaf_read_dev(ddev,
937 + DSAF_XOD_PPE_RCVIN0_CNT_0_REG + port * 0x90);
938 +- p[401] = dsaf_read_dev(ddev,
939 ++ p[405] = dsaf_read_dev(ddev,
940 + DSAF_XOD_PPE_RCVIN1_CNT_0_REG + port * 0x90);
941 +- p[402] = dsaf_read_dev(ddev,
942 ++ p[406] = dsaf_read_dev(ddev,
943 + DSAF_XOD_ROCEE_RCVIN0_CNT_0_REG + port * 0x90);
944 +- p[403] = dsaf_read_dev(ddev,
945 ++ p[407] = dsaf_read_dev(ddev,
946 + DSAF_XOD_ROCEE_RCVIN1_CNT_0_REG + port * 0x90);
947 +- p[404] = dsaf_read_dev(ddev,
948 ++ p[408] = dsaf_read_dev(ddev,
949 + DSAF_XOD_FIFO_STATUS_0_REG + port * 0x90);
950 +
951 + /* dsaf voq registers */
952 + for (i = 0; i < DSAF_VOQ_NUM / DSAF_COMM_CHN; i++) {
953 + j = (i * DSAF_COMM_CHN + port) * 0x90;
954 +- p[405 + i] = dsaf_read_dev(ddev,
955 ++ p[409 + i] = dsaf_read_dev(ddev,
956 + DSAF_VOQ_ECC_INVERT_EN_0_REG + j);
957 +- p[408 + i] = dsaf_read_dev(ddev,
958 ++ p[412 + i] = dsaf_read_dev(ddev,
959 + DSAF_VOQ_SRAM_PKT_NUM_0_REG + j);
960 +- p[411 + i] = dsaf_read_dev(ddev, DSAF_VOQ_IN_PKT_NUM_0_REG + j);
961 +- p[414 + i] = dsaf_read_dev(ddev,
962 ++ p[415 + i] = dsaf_read_dev(ddev, DSAF_VOQ_IN_PKT_NUM_0_REG + j);
963 ++ p[418 + i] = dsaf_read_dev(ddev,
964 + DSAF_VOQ_OUT_PKT_NUM_0_REG + j);
965 +- p[417 + i] = dsaf_read_dev(ddev,
966 ++ p[421 + i] = dsaf_read_dev(ddev,
967 + DSAF_VOQ_ECC_ERR_ADDR_0_REG + j);
968 +- p[420 + i] = dsaf_read_dev(ddev, DSAF_VOQ_BP_STATUS_0_REG + j);
969 +- p[423 + i] = dsaf_read_dev(ddev, DSAF_VOQ_SPUP_IDLE_0_REG + j);
970 +- p[426 + i] = dsaf_read_dev(ddev,
971 ++ p[424 + i] = dsaf_read_dev(ddev, DSAF_VOQ_BP_STATUS_0_REG + j);
972 ++ p[427 + i] = dsaf_read_dev(ddev, DSAF_VOQ_SPUP_IDLE_0_REG + j);
973 ++ p[430 + i] = dsaf_read_dev(ddev,
974 + DSAF_VOQ_XGE_XOD_REQ_0_0_REG + j);
975 +- p[429 + i] = dsaf_read_dev(ddev,
976 ++ p[433 + i] = dsaf_read_dev(ddev,
977 + DSAF_VOQ_XGE_XOD_REQ_1_0_REG + j);
978 +- p[432 + i] = dsaf_read_dev(ddev,
979 ++ p[436 + i] = dsaf_read_dev(ddev,
980 + DSAF_VOQ_PPE_XOD_REQ_0_REG + j);
981 +- p[435 + i] = dsaf_read_dev(ddev,
982 ++ p[439 + i] = dsaf_read_dev(ddev,
983 + DSAF_VOQ_ROCEE_XOD_REQ_0_REG + j);
984 +- p[438 + i] = dsaf_read_dev(ddev,
985 ++ p[442 + i] = dsaf_read_dev(ddev,
986 + DSAF_VOQ_BP_ALL_THRD_0_REG + j);
987 + }
988 +
989 + /* dsaf tbl registers */
990 +- p[441] = dsaf_read_dev(ddev, DSAF_TBL_CTRL_0_REG);
991 +- p[442] = dsaf_read_dev(ddev, DSAF_TBL_INT_MSK_0_REG);
992 +- p[443] = dsaf_read_dev(ddev, DSAF_TBL_INT_SRC_0_REG);
993 +- p[444] = dsaf_read_dev(ddev, DSAF_TBL_INT_STS_0_REG);
994 +- p[445] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_ADDR_0_REG);
995 +- p[446] = dsaf_read_dev(ddev, DSAF_TBL_LINE_ADDR_0_REG);
996 +- p[447] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_HIGH_0_REG);
997 +- p[448] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_LOW_0_REG);
998 +- p[449] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_MCAST_CFG_4_0_REG);
999 +- p[450] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_MCAST_CFG_3_0_REG);
1000 +- p[451] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_MCAST_CFG_2_0_REG);
1001 +- p[452] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_MCAST_CFG_1_0_REG);
1002 +- p[453] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_MCAST_CFG_0_0_REG);
1003 +- p[454] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_UCAST_CFG_0_REG);
1004 +- p[455] = dsaf_read_dev(ddev, DSAF_TBL_LIN_CFG_0_REG);
1005 +- p[456] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_RDATA_HIGH_0_REG);
1006 +- p[457] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_RDATA_LOW_0_REG);
1007 +- p[458] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_RAM_RDATA4_0_REG);
1008 +- p[459] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_RAM_RDATA3_0_REG);
1009 +- p[460] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_RAM_RDATA2_0_REG);
1010 +- p[461] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_RAM_RDATA1_0_REG);
1011 +- p[462] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_RAM_RDATA0_0_REG);
1012 +- p[463] = dsaf_read_dev(ddev, DSAF_TBL_LIN_RDATA_0_REG);
1013 ++ p[445] = dsaf_read_dev(ddev, DSAF_TBL_CTRL_0_REG);
1014 ++ p[446] = dsaf_read_dev(ddev, DSAF_TBL_INT_MSK_0_REG);
1015 ++ p[447] = dsaf_read_dev(ddev, DSAF_TBL_INT_SRC_0_REG);
1016 ++ p[448] = dsaf_read_dev(ddev, DSAF_TBL_INT_STS_0_REG);
1017 ++ p[449] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_ADDR_0_REG);
1018 ++ p[450] = dsaf_read_dev(ddev, DSAF_TBL_LINE_ADDR_0_REG);
1019 ++ p[451] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_HIGH_0_REG);
1020 ++ p[452] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_LOW_0_REG);
1021 ++ p[453] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_MCAST_CFG_4_0_REG);
1022 ++ p[454] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_MCAST_CFG_3_0_REG);
1023 ++ p[455] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_MCAST_CFG_2_0_REG);
1024 ++ p[456] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_MCAST_CFG_1_0_REG);
1025 ++ p[457] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_MCAST_CFG_0_0_REG);
1026 ++ p[458] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_UCAST_CFG_0_REG);
1027 ++ p[459] = dsaf_read_dev(ddev, DSAF_TBL_LIN_CFG_0_REG);
1028 ++ p[460] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_RDATA_HIGH_0_REG);
1029 ++ p[461] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_RDATA_LOW_0_REG);
1030 ++ p[462] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_RAM_RDATA4_0_REG);
1031 ++ p[463] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_RAM_RDATA3_0_REG);
1032 ++ p[464] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_RAM_RDATA2_0_REG);
1033 ++ p[465] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_RAM_RDATA1_0_REG);
1034 ++ p[466] = dsaf_read_dev(ddev, DSAF_TBL_TCAM_RAM_RDATA0_0_REG);
1035 ++ p[467] = dsaf_read_dev(ddev, DSAF_TBL_LIN_RDATA_0_REG);
1036 +
1037 + for (i = 0; i < DSAF_SW_PORT_NUM; i++) {
1038 + j = i * 0x8;
1039 +- p[464 + 2 * i] = dsaf_read_dev(ddev,
1040 ++ p[468 + 2 * i] = dsaf_read_dev(ddev,
1041 + DSAF_TBL_DA0_MIS_INFO1_0_REG + j);
1042 +- p[465 + 2 * i] = dsaf_read_dev(ddev,
1043 ++ p[469 + 2 * i] = dsaf_read_dev(ddev,
1044 + DSAF_TBL_DA0_MIS_INFO0_0_REG + j);
1045 + }
1046 +
1047 +- p[480] = dsaf_read_dev(ddev, DSAF_TBL_SA_MIS_INFO2_0_REG);
1048 +- p[481] = dsaf_read_dev(ddev, DSAF_TBL_SA_MIS_INFO1_0_REG);
1049 +- p[482] = dsaf_read_dev(ddev, DSAF_TBL_SA_MIS_INFO0_0_REG);
1050 +- p[483] = dsaf_read_dev(ddev, DSAF_TBL_PUL_0_REG);
1051 +- p[484] = dsaf_read_dev(ddev, DSAF_TBL_OLD_RSLT_0_REG);
1052 +- p[485] = dsaf_read_dev(ddev, DSAF_TBL_OLD_SCAN_VAL_0_REG);
1053 +- p[486] = dsaf_read_dev(ddev, DSAF_TBL_DFX_CTRL_0_REG);
1054 +- p[487] = dsaf_read_dev(ddev, DSAF_TBL_DFX_STAT_0_REG);
1055 +- p[488] = dsaf_read_dev(ddev, DSAF_TBL_DFX_STAT_2_0_REG);
1056 +- p[489] = dsaf_read_dev(ddev, DSAF_TBL_LKUP_NUM_I_0_REG);
1057 +- p[490] = dsaf_read_dev(ddev, DSAF_TBL_LKUP_NUM_O_0_REG);
1058 +- p[491] = dsaf_read_dev(ddev, DSAF_TBL_UCAST_BCAST_MIS_INFO_0_0_REG);
1059 ++ p[484] = dsaf_read_dev(ddev, DSAF_TBL_SA_MIS_INFO2_0_REG);
1060 ++ p[485] = dsaf_read_dev(ddev, DSAF_TBL_SA_MIS_INFO1_0_REG);
1061 ++ p[486] = dsaf_read_dev(ddev, DSAF_TBL_SA_MIS_INFO0_0_REG);
1062 ++ p[487] = dsaf_read_dev(ddev, DSAF_TBL_PUL_0_REG);
1063 ++ p[488] = dsaf_read_dev(ddev, DSAF_TBL_OLD_RSLT_0_REG);
1064 ++ p[489] = dsaf_read_dev(ddev, DSAF_TBL_OLD_SCAN_VAL_0_REG);
1065 ++ p[490] = dsaf_read_dev(ddev, DSAF_TBL_DFX_CTRL_0_REG);
1066 ++ p[491] = dsaf_read_dev(ddev, DSAF_TBL_DFX_STAT_0_REG);
1067 ++ p[492] = dsaf_read_dev(ddev, DSAF_TBL_DFX_STAT_2_0_REG);
1068 ++ p[493] = dsaf_read_dev(ddev, DSAF_TBL_LKUP_NUM_I_0_REG);
1069 ++ p[494] = dsaf_read_dev(ddev, DSAF_TBL_LKUP_NUM_O_0_REG);
1070 ++ p[495] = dsaf_read_dev(ddev, DSAF_TBL_UCAST_BCAST_MIS_INFO_0_0_REG);
1071 +
1072 + /* dsaf other registers */
1073 +- p[492] = dsaf_read_dev(ddev, DSAF_INODE_FIFO_WL_0_REG + port * 0x4);
1074 +- p[493] = dsaf_read_dev(ddev, DSAF_ONODE_FIFO_WL_0_REG + port * 0x4);
1075 +- p[494] = dsaf_read_dev(ddev, DSAF_XGE_GE_WORK_MODE_0_REG + port * 0x4);
1076 +- p[495] = dsaf_read_dev(ddev,
1077 ++ p[496] = dsaf_read_dev(ddev, DSAF_INODE_FIFO_WL_0_REG + port * 0x4);
1078 ++ p[497] = dsaf_read_dev(ddev, DSAF_ONODE_FIFO_WL_0_REG + port * 0x4);
1079 ++ p[498] = dsaf_read_dev(ddev, DSAF_XGE_GE_WORK_MODE_0_REG + port * 0x4);
1080 ++ p[499] = dsaf_read_dev(ddev,
1081 + DSAF_XGE_APP_RX_LINK_UP_0_REG + port * 0x4);
1082 +- p[496] = dsaf_read_dev(ddev, DSAF_NETPORT_CTRL_SIG_0_REG + port * 0x4);
1083 +- p[497] = dsaf_read_dev(ddev, DSAF_XGE_CTRL_SIG_CFG_0_REG + port * 0x4);
1084 ++ p[500] = dsaf_read_dev(ddev, DSAF_NETPORT_CTRL_SIG_0_REG + port * 0x4);
1085 ++ p[501] = dsaf_read_dev(ddev, DSAF_XGE_CTRL_SIG_CFG_0_REG + port * 0x4);
1086 +
1087 + if (!is_ver1)
1088 +- p[498] = dsaf_read_dev(ddev, DSAF_PAUSE_CFG_REG + port * 0x4);
1089 ++ p[502] = dsaf_read_dev(ddev, DSAF_PAUSE_CFG_REG + port * 0x4);
1090 +
1091 + /* mark end of dsaf regs */
1092 +- for (i = 499; i < 504; i++)
1093 ++ for (i = 503; i < 504; i++)
1094 + p[i] = 0xdddddddd;
1095 + }
1096 +
1097 +diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h
1098 +index 2cf8b1d82d6a..6f3ec2f1535d 100644
1099 +--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h
1100 ++++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h
1101 +@@ -173,7 +173,7 @@
1102 + #define DSAF_INODE_IN_DATA_STP_DISC_0_REG 0x1A50
1103 + #define DSAF_INODE_GE_FC_EN_0_REG 0x1B00
1104 + #define DSAF_INODE_VC0_IN_PKT_NUM_0_REG 0x1B50
1105 +-#define DSAF_INODE_VC1_IN_PKT_NUM_0_REG 0x1C00
1106 ++#define DSAF_INODE_VC1_IN_PKT_NUM_0_REG 0x103C
1107 + #define DSAF_INODE_IN_PRIO_PAUSE_BASE_REG 0x1C00
1108 + #define DSAF_INODE_IN_PRIO_PAUSE_BASE_OFFSET 0x100
1109 + #define DSAF_INODE_IN_PRIO_PAUSE_OFFSET 0x50
1110 +@@ -400,11 +400,11 @@
1111 + #define RCB_ECC_ERR_ADDR4_REG 0x460
1112 + #define RCB_ECC_ERR_ADDR5_REG 0x464
1113 +
1114 +-#define RCB_COM_SF_CFG_INTMASK_RING 0x480
1115 +-#define RCB_COM_SF_CFG_RING_STS 0x484
1116 +-#define RCB_COM_SF_CFG_RING 0x488
1117 +-#define RCB_COM_SF_CFG_INTMASK_BD 0x48C
1118 +-#define RCB_COM_SF_CFG_BD_RINT_STS 0x470
1119 ++#define RCB_COM_SF_CFG_INTMASK_RING 0x470
1120 ++#define RCB_COM_SF_CFG_RING_STS 0x474
1121 ++#define RCB_COM_SF_CFG_RING 0x478
1122 ++#define RCB_COM_SF_CFG_INTMASK_BD 0x47C
1123 ++#define RCB_COM_SF_CFG_BD_RINT_STS 0x480
1124 + #define RCB_COM_RCB_RD_BD_BUSY 0x490
1125 + #define RCB_COM_RCB_FBD_CRT_EN 0x494
1126 + #define RCB_COM_AXI_WR_ERR_INTMASK 0x498
1127 +@@ -528,6 +528,7 @@
1128 + #define GMAC_LD_LINK_COUNTER_REG 0x01D0UL
1129 + #define GMAC_LOOP_REG 0x01DCUL
1130 + #define GMAC_RECV_CONTROL_REG 0x01E0UL
1131 ++#define GMAC_PCS_RX_EN_REG 0x01E4UL
1132 + #define GMAC_VLAN_CODE_REG 0x01E8UL
1133 + #define GMAC_RX_OVERRUN_CNT_REG 0x01ECUL
1134 + #define GMAC_RX_LENGTHFIELD_ERR_CNT_REG 0x01F4UL
1135 +diff --git a/drivers/net/ethernet/hisilicon/hns/hns_enet.c b/drivers/net/ethernet/hisilicon/hns/hns_enet.c
1136 +index 92ed6534ceae..a2f7d0834071 100644
1137 +--- a/drivers/net/ethernet/hisilicon/hns/hns_enet.c
1138 ++++ b/drivers/net/ethernet/hisilicon/hns/hns_enet.c
1139 +@@ -1079,6 +1079,9 @@ int hns_nic_init_phy(struct net_device *ndev, struct hnae_handle *h)
1140 + if (h->phy_if == PHY_INTERFACE_MODE_XGMII)
1141 + phy_dev->autoneg = false;
1142 +
1143 ++ if (h->phy_if == PHY_INTERFACE_MODE_SGMII)
1144 ++ phy_stop(phy_dev);
1145 ++
1146 + return 0;
1147 + }
1148 +
1149 +@@ -1192,6 +1195,22 @@ static void hns_set_irq_affinity(struct hns_nic_priv *priv)
1150 + }
1151 + }
1152 +
1153 ++static void hns_nic_free_irq(int q_num, struct hns_nic_priv *priv)
1154 ++{
1155 ++ int i;
1156 ++
1157 ++ for (i = 0; i < q_num * 2; i++) {
1158 ++ if (priv->ring_data[i].ring->irq_init_flag == RCB_IRQ_INITED) {
1159 ++ irq_set_affinity_hint(priv->ring_data[i].ring->irq,
1160 ++ NULL);
1161 ++ free_irq(priv->ring_data[i].ring->irq,
1162 ++ &priv->ring_data[i]);
1163 ++ priv->ring_data[i].ring->irq_init_flag =
1164 ++ RCB_IRQ_NOT_INITED;
1165 ++ }
1166 ++ }
1167 ++}
1168 ++
1169 + static int hns_nic_init_irq(struct hns_nic_priv *priv)
1170 + {
1171 + struct hnae_handle *h = priv->ae_handle;
1172 +@@ -1216,7 +1235,7 @@ static int hns_nic_init_irq(struct hns_nic_priv *priv)
1173 + if (ret) {
1174 + netdev_err(priv->netdev, "request irq(%d) fail\n",
1175 + rd->ring->irq);
1176 +- return ret;
1177 ++ goto out_free_irq;
1178 + }
1179 + disable_irq(rd->ring->irq);
1180 + rd->ring->irq_init_flag = RCB_IRQ_INITED;
1181 +@@ -1226,6 +1245,10 @@ static int hns_nic_init_irq(struct hns_nic_priv *priv)
1182 + hns_set_irq_affinity(priv);
1183 +
1184 + return 0;
1185 ++
1186 ++out_free_irq:
1187 ++ hns_nic_free_irq(h->q_num, priv);
1188 ++ return ret;
1189 + }
1190 +
1191 + static int hns_nic_net_up(struct net_device *ndev)
1192 +@@ -1235,6 +1258,9 @@ static int hns_nic_net_up(struct net_device *ndev)
1193 + int i, j;
1194 + int ret;
1195 +
1196 ++ if (!test_bit(NIC_STATE_DOWN, &priv->state))
1197 ++ return 0;
1198 ++
1199 + ret = hns_nic_init_irq(priv);
1200 + if (ret != 0) {
1201 + netdev_err(ndev, "hns init irq failed! ret=%d\n", ret);
1202 +@@ -1270,6 +1296,7 @@ out_has_some_queues:
1203 + for (j = i - 1; j >= 0; j--)
1204 + hns_nic_ring_close(ndev, j);
1205 +
1206 ++ hns_nic_free_irq(h->q_num, priv);
1207 + set_bit(NIC_STATE_DOWN, &priv->state);
1208 +
1209 + return ret;
1210 +@@ -1380,11 +1407,19 @@ static int hns_nic_net_stop(struct net_device *ndev)
1211 + }
1212 +
1213 + static void hns_tx_timeout_reset(struct hns_nic_priv *priv);
1214 ++#define HNS_TX_TIMEO_LIMIT (40 * HZ)
1215 + static void hns_nic_net_timeout(struct net_device *ndev)
1216 + {
1217 + struct hns_nic_priv *priv = netdev_priv(ndev);
1218 +
1219 +- hns_tx_timeout_reset(priv);
1220 ++ if (ndev->watchdog_timeo < HNS_TX_TIMEO_LIMIT) {
1221 ++ ndev->watchdog_timeo *= 2;
1222 ++ netdev_info(ndev, "watchdog_timo changed to %d.\n",
1223 ++ ndev->watchdog_timeo);
1224 ++ } else {
1225 ++ ndev->watchdog_timeo = HNS_NIC_TX_TIMEOUT;
1226 ++ hns_tx_timeout_reset(priv);
1227 ++ }
1228 + }
1229 +
1230 + static int hns_nic_do_ioctl(struct net_device *netdev, struct ifreq *ifr,
1231 +@@ -1718,11 +1753,11 @@ static void hns_nic_service_task(struct work_struct *work)
1232 + = container_of(work, struct hns_nic_priv, service_task);
1233 + struct hnae_handle *h = priv->ae_handle;
1234 +
1235 ++ hns_nic_reset_subtask(priv);
1236 + hns_nic_update_link_status(priv->netdev);
1237 + h->dev->ops->update_led_status(h);
1238 + hns_nic_update_stats(priv->netdev);
1239 +
1240 +- hns_nic_reset_subtask(priv);
1241 + hns_nic_service_event_complete(priv);
1242 + }
1243 +
1244 +@@ -2001,7 +2036,7 @@ static int hns_nic_dev_probe(struct platform_device *pdev)
1245 +
1246 + switch (priv->enet_ver) {
1247 + case AE_VERSION_2:
1248 +- ndev->features |= NETIF_F_TSO | NETIF_F_TSO6;
1249 ++ ndev->features |= NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_NTUPLE;
1250 + ndev->hw_features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM |
1251 + NETIF_F_RXCSUM | NETIF_F_SG | NETIF_F_GSO |
1252 + NETIF_F_GRO | NETIF_F_TSO | NETIF_F_TSO6;
1253 +diff --git a/drivers/net/ethernet/neterion/vxge/vxge-config.c b/drivers/net/ethernet/neterion/vxge/vxge-config.c
1254 +index 6223930a8155..6f57b0b7d57a 100644
1255 +--- a/drivers/net/ethernet/neterion/vxge/vxge-config.c
1256 ++++ b/drivers/net/ethernet/neterion/vxge/vxge-config.c
1257 +@@ -808,7 +808,7 @@ __vxge_hw_vpath_fw_ver_get(struct __vxge_hw_virtualpath *vpath,
1258 + struct vxge_hw_device_date *fw_date = &hw_info->fw_date;
1259 + struct vxge_hw_device_version *flash_version = &hw_info->flash_version;
1260 + struct vxge_hw_device_date *flash_date = &hw_info->flash_date;
1261 +- u64 data0, data1 = 0, steer_ctrl = 0;
1262 ++ u64 data0 = 0, data1 = 0, steer_ctrl = 0;
1263 + enum vxge_hw_status status;
1264 +
1265 + status = vxge_hw_vpath_fw_api(vpath,
1266 +diff --git a/drivers/net/ethernet/nuvoton/w90p910_ether.c b/drivers/net/ethernet/nuvoton/w90p910_ether.c
1267 +index 712d8bcb7d8c..a2960169a784 100644
1268 +--- a/drivers/net/ethernet/nuvoton/w90p910_ether.c
1269 ++++ b/drivers/net/ethernet/nuvoton/w90p910_ether.c
1270 +@@ -918,7 +918,7 @@ static const struct net_device_ops w90p910_ether_netdev_ops = {
1271 + .ndo_change_mtu = eth_change_mtu,
1272 + };
1273 +
1274 +-static void __init get_mac_address(struct net_device *dev)
1275 ++static void get_mac_address(struct net_device *dev)
1276 + {
1277 + struct w90p910_ether *ether = netdev_priv(dev);
1278 + struct platform_device *pdev;
1279 +diff --git a/drivers/net/ethernet/qlogic/netxen/netxen_nic_init.c b/drivers/net/ethernet/qlogic/netxen/netxen_nic_init.c
1280 +index 7b43a3b4abdc..5cf551914767 100644
1281 +--- a/drivers/net/ethernet/qlogic/netxen/netxen_nic_init.c
1282 ++++ b/drivers/net/ethernet/qlogic/netxen/netxen_nic_init.c
1283 +@@ -1125,7 +1125,8 @@ netxen_validate_firmware(struct netxen_adapter *adapter)
1284 + return -EINVAL;
1285 + }
1286 + val = nx_get_bios_version(adapter);
1287 +- netxen_rom_fast_read(adapter, NX_BIOS_VERSION_OFFSET, (int *)&bios);
1288 ++ if (netxen_rom_fast_read(adapter, NX_BIOS_VERSION_OFFSET, (int *)&bios))
1289 ++ return -EIO;
1290 + if ((__force u32)val != bios) {
1291 + dev_err(&pdev->dev, "%s: firmware bios is incompatible\n",
1292 + fw_name[fw_type]);
1293 +diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
1294 +index 6b4e38105b72..e143a7fe9320 100644
1295 +--- a/drivers/net/usb/lan78xx.c
1296 ++++ b/drivers/net/usb/lan78xx.c
1297 +@@ -2014,6 +2014,10 @@ static int lan78xx_set_mac_addr(struct net_device *netdev, void *p)
1298 + ret = lan78xx_write_reg(dev, RX_ADDRL, addr_lo);
1299 + ret = lan78xx_write_reg(dev, RX_ADDRH, addr_hi);
1300 +
1301 ++ /* Added to support MAC address changes */
1302 ++ ret = lan78xx_write_reg(dev, MAF_LO(0), addr_lo);
1303 ++ ret = lan78xx_write_reg(dev, MAF_HI(0), addr_hi | MAF_HI_VALID_);
1304 ++
1305 + return 0;
1306 + }
1307 +
1308 +diff --git a/drivers/net/wireless/broadcom/b43/phy_common.c b/drivers/net/wireless/broadcom/b43/phy_common.c
1309 +index 85f2ca989565..ef3ffa5ad466 100644
1310 +--- a/drivers/net/wireless/broadcom/b43/phy_common.c
1311 ++++ b/drivers/net/wireless/broadcom/b43/phy_common.c
1312 +@@ -616,7 +616,7 @@ struct b43_c32 b43_cordic(int theta)
1313 + u8 i;
1314 + s32 tmp;
1315 + s8 signx = 1;
1316 +- u32 angle = 0;
1317 ++ s32 angle = 0;
1318 + struct b43_c32 ret = { .i = 39797, .q = 0, };
1319 +
1320 + while (theta > (180 << 16))
1321 +diff --git a/drivers/pinctrl/meson/pinctrl-meson.c b/drivers/pinctrl/meson/pinctrl-meson.c
1322 +index df61a71420b1..8e73641bd823 100644
1323 +--- a/drivers/pinctrl/meson/pinctrl-meson.c
1324 ++++ b/drivers/pinctrl/meson/pinctrl-meson.c
1325 +@@ -274,7 +274,8 @@ static int meson_pinconf_set(struct pinctrl_dev *pcdev, unsigned int pin,
1326 + case PIN_CONFIG_BIAS_DISABLE:
1327 + dev_dbg(pc->dev, "pin %u: disable bias\n", pin);
1328 +
1329 +- meson_calc_reg_and_bit(bank, pin, REG_PULL, &reg, &bit);
1330 ++ meson_calc_reg_and_bit(bank, pin, REG_PULLEN, &reg,
1331 ++ &bit);
1332 + ret = regmap_update_bits(pc->reg_pullen, reg,
1333 + BIT(bit), 0);
1334 + if (ret)
1335 +diff --git a/drivers/power/supply/olpc_battery.c b/drivers/power/supply/olpc_battery.c
1336 +index 9e29b1321648..15783869e1a0 100644
1337 +--- a/drivers/power/supply/olpc_battery.c
1338 ++++ b/drivers/power/supply/olpc_battery.c
1339 +@@ -427,14 +427,14 @@ static int olpc_bat_get_property(struct power_supply *psy,
1340 + if (ret)
1341 + return ret;
1342 +
1343 +- val->intval = (s16)be16_to_cpu(ec_word) * 100 / 256;
1344 ++ val->intval = (s16)be16_to_cpu(ec_word) * 10 / 256;
1345 + break;
1346 + case POWER_SUPPLY_PROP_TEMP_AMBIENT:
1347 + ret = olpc_ec_cmd(EC_AMB_TEMP, NULL, 0, (void *)&ec_word, 2);
1348 + if (ret)
1349 + return ret;
1350 +
1351 +- val->intval = (int)be16_to_cpu(ec_word) * 100 / 256;
1352 ++ val->intval = (int)be16_to_cpu(ec_word) * 10 / 256;
1353 + break;
1354 + case POWER_SUPPLY_PROP_CHARGE_COUNTER:
1355 + ret = olpc_ec_cmd(EC_BAT_ACR, NULL, 0, (void *)&ec_word, 2);
1356 +diff --git a/drivers/s390/scsi/zfcp_aux.c b/drivers/s390/scsi/zfcp_aux.c
1357 +index b3f9243cfed5..36eb298329d8 100644
1358 +--- a/drivers/s390/scsi/zfcp_aux.c
1359 ++++ b/drivers/s390/scsi/zfcp_aux.c
1360 +@@ -275,16 +275,16 @@ static void zfcp_free_low_mem_buffers(struct zfcp_adapter *adapter)
1361 + */
1362 + int zfcp_status_read_refill(struct zfcp_adapter *adapter)
1363 + {
1364 +- while (atomic_read(&adapter->stat_miss) > 0)
1365 ++ while (atomic_add_unless(&adapter->stat_miss, -1, 0))
1366 + if (zfcp_fsf_status_read(adapter->qdio)) {
1367 ++ atomic_inc(&adapter->stat_miss); /* undo add -1 */
1368 + if (atomic_read(&adapter->stat_miss) >=
1369 + adapter->stat_read_buf_num) {
1370 + zfcp_erp_adapter_reopen(adapter, 0, "axsref1");
1371 + return 1;
1372 + }
1373 + break;
1374 +- } else
1375 +- atomic_dec(&adapter->stat_miss);
1376 ++ }
1377 + return 0;
1378 + }
1379 +
1380 +diff --git a/drivers/scsi/bnx2fc/bnx2fc_fcoe.c b/drivers/scsi/bnx2fc/bnx2fc_fcoe.c
1381 +index bee7d37367ca..68cc332bd6cb 100644
1382 +--- a/drivers/scsi/bnx2fc/bnx2fc_fcoe.c
1383 ++++ b/drivers/scsi/bnx2fc/bnx2fc_fcoe.c
1384 +@@ -2331,7 +2331,7 @@ static int _bnx2fc_create(struct net_device *netdev,
1385 + if (!interface) {
1386 + printk(KERN_ERR PFX "bnx2fc_interface_create failed\n");
1387 + rc = -ENOMEM;
1388 +- goto ifput_err;
1389 ++ goto netdev_err;
1390 + }
1391 +
1392 + if (netdev->priv_flags & IFF_802_1Q_VLAN) {
1393 +diff --git a/drivers/target/iscsi/cxgbit/cxgbit_cm.c b/drivers/target/iscsi/cxgbit/cxgbit_cm.c
1394 +index 2fb1bf1a26c5..8652475e01d0 100644
1395 +--- a/drivers/target/iscsi/cxgbit/cxgbit_cm.c
1396 ++++ b/drivers/target/iscsi/cxgbit/cxgbit_cm.c
1397 +@@ -631,8 +631,11 @@ static void cxgbit_send_halfclose(struct cxgbit_sock *csk)
1398 +
1399 + static void cxgbit_arp_failure_discard(void *handle, struct sk_buff *skb)
1400 + {
1401 ++ struct cxgbit_sock *csk = handle;
1402 ++
1403 + pr_debug("%s cxgbit_device %p\n", __func__, handle);
1404 + kfree_skb(skb);
1405 ++ cxgbit_put_csk(csk);
1406 + }
1407 +
1408 + static void cxgbit_abort_arp_failure(void *handle, struct sk_buff *skb)
1409 +@@ -1136,7 +1139,7 @@ cxgbit_pass_accept_rpl(struct cxgbit_sock *csk, struct cpl_pass_accept_req *req)
1410 + rpl5->opt0 = cpu_to_be64(opt0);
1411 + rpl5->opt2 = cpu_to_be32(opt2);
1412 + set_wr_txq(skb, CPL_PRIORITY_SETUP, csk->ctrlq_idx);
1413 +- t4_set_arp_err_handler(skb, NULL, cxgbit_arp_failure_discard);
1414 ++ t4_set_arp_err_handler(skb, csk, cxgbit_arp_failure_discard);
1415 + cxgbit_l2t_send(csk->com.cdev, skb, csk->l2t);
1416 + }
1417 +
1418 +diff --git a/drivers/target/iscsi/cxgbit/cxgbit_main.c b/drivers/target/iscsi/cxgbit/cxgbit_main.c
1419 +index ad26b9372f10..d55261e1d522 100644
1420 +--- a/drivers/target/iscsi/cxgbit/cxgbit_main.c
1421 ++++ b/drivers/target/iscsi/cxgbit/cxgbit_main.c
1422 +@@ -58,6 +58,7 @@ static void *cxgbit_uld_add(const struct cxgb4_lld_info *lldi)
1423 + return ERR_PTR(-ENOMEM);
1424 +
1425 + kref_init(&cdev->kref);
1426 ++ spin_lock_init(&cdev->np_lock);
1427 +
1428 + cdev->lldi = *lldi;
1429 +
1430 +diff --git a/drivers/tty/serial/sunsu.c b/drivers/tty/serial/sunsu.c
1431 +index 9ad98eaa35bf..26ae83026c52 100644
1432 +--- a/drivers/tty/serial/sunsu.c
1433 ++++ b/drivers/tty/serial/sunsu.c
1434 +@@ -1393,22 +1393,43 @@ static inline struct console *SUNSU_CONSOLE(void)
1435 + static enum su_type su_get_type(struct device_node *dp)
1436 + {
1437 + struct device_node *ap = of_find_node_by_path("/aliases");
1438 ++ enum su_type rc = SU_PORT_PORT;
1439 +
1440 + if (ap) {
1441 + const char *keyb = of_get_property(ap, "keyboard", NULL);
1442 + const char *ms = of_get_property(ap, "mouse", NULL);
1443 ++ struct device_node *match;
1444 +
1445 + if (keyb) {
1446 +- if (dp == of_find_node_by_path(keyb))
1447 +- return SU_PORT_KBD;
1448 ++ match = of_find_node_by_path(keyb);
1449 ++
1450 ++ /*
1451 ++ * The pointer is used as an identifier not
1452 ++ * as a pointer, we can drop the refcount on
1453 ++ * the of__node immediately after getting it.
1454 ++ */
1455 ++ of_node_put(match);
1456 ++
1457 ++ if (dp == match) {
1458 ++ rc = SU_PORT_KBD;
1459 ++ goto out;
1460 ++ }
1461 + }
1462 + if (ms) {
1463 +- if (dp == of_find_node_by_path(ms))
1464 +- return SU_PORT_MS;
1465 ++ match = of_find_node_by_path(ms);
1466 ++
1467 ++ of_node_put(match);
1468 ++
1469 ++ if (dp == match) {
1470 ++ rc = SU_PORT_MS;
1471 ++ goto out;
1472 ++ }
1473 + }
1474 + }
1475 +
1476 +- return SU_PORT_PORT;
1477 ++out:
1478 ++ of_node_put(ap);
1479 ++ return rc;
1480 + }
1481 +
1482 + static int su_probe(struct platform_device *op)
1483 +diff --git a/drivers/vhost/vsock.c b/drivers/vhost/vsock.c
1484 +index 46f966d7c328..72e914de473e 100644
1485 +--- a/drivers/vhost/vsock.c
1486 ++++ b/drivers/vhost/vsock.c
1487 +@@ -520,6 +520,8 @@ static int vhost_vsock_dev_open(struct inode *inode, struct file *file)
1488 + goto out;
1489 + }
1490 +
1491 ++ vsock->guest_cid = 0; /* no CID assigned yet */
1492 ++
1493 + atomic_set(&vsock->queued_replies, 0);
1494 +
1495 + vqs[VSOCK_VQ_TX] = &vsock->vqs[VSOCK_VQ_TX];
1496 +diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c
1497 +index 3e1c136aadb7..f916cd7b1918 100644
1498 +--- a/fs/ceph/caps.c
1499 ++++ b/fs/ceph/caps.c
1500 +@@ -3343,7 +3343,6 @@ retry:
1501 + tcap->cap_id = t_cap_id;
1502 + tcap->seq = t_seq - 1;
1503 + tcap->issue_seq = t_seq - 1;
1504 +- tcap->mseq = t_mseq;
1505 + tcap->issued |= issued;
1506 + tcap->implemented |= issued;
1507 + if (cap == ci->i_auth_cap)
1508 +diff --git a/fs/dlm/lock.c b/fs/dlm/lock.c
1509 +index 35502d4046f5..3a7f401e943c 100644
1510 +--- a/fs/dlm/lock.c
1511 ++++ b/fs/dlm/lock.c
1512 +@@ -1210,6 +1210,7 @@ static int create_lkb(struct dlm_ls *ls, struct dlm_lkb **lkb_ret)
1513 +
1514 + if (rv < 0) {
1515 + log_error(ls, "create_lkb idr error %d", rv);
1516 ++ dlm_free_lkb(lkb);
1517 + return rv;
1518 + }
1519 +
1520 +@@ -4177,6 +4178,7 @@ static int receive_convert(struct dlm_ls *ls, struct dlm_message *ms)
1521 + (unsigned long long)lkb->lkb_recover_seq,
1522 + ms->m_header.h_nodeid, ms->m_lkid);
1523 + error = -ENOENT;
1524 ++ dlm_put_lkb(lkb);
1525 + goto fail;
1526 + }
1527 +
1528 +@@ -4230,6 +4232,7 @@ static int receive_unlock(struct dlm_ls *ls, struct dlm_message *ms)
1529 + lkb->lkb_id, lkb->lkb_remid,
1530 + ms->m_header.h_nodeid, ms->m_lkid);
1531 + error = -ENOENT;
1532 ++ dlm_put_lkb(lkb);
1533 + goto fail;
1534 + }
1535 +
1536 +@@ -5792,20 +5795,20 @@ int dlm_user_request(struct dlm_ls *ls, struct dlm_user_args *ua,
1537 + goto out;
1538 + }
1539 + }
1540 +-
1541 +- /* After ua is attached to lkb it will be freed by dlm_free_lkb().
1542 +- When DLM_IFL_USER is set, the dlm knows that this is a userspace
1543 +- lock and that lkb_astparam is the dlm_user_args structure. */
1544 +-
1545 + error = set_lock_args(mode, &ua->lksb, flags, namelen, timeout_cs,
1546 + fake_astfn, ua, fake_bastfn, &args);
1547 +- lkb->lkb_flags |= DLM_IFL_USER;
1548 +-
1549 + if (error) {
1550 ++ kfree(ua->lksb.sb_lvbptr);
1551 ++ ua->lksb.sb_lvbptr = NULL;
1552 ++ kfree(ua);
1553 + __put_lkb(ls, lkb);
1554 + goto out;
1555 + }
1556 +
1557 ++ /* After ua is attached to lkb it will be freed by dlm_free_lkb().
1558 ++ When DLM_IFL_USER is set, the dlm knows that this is a userspace
1559 ++ lock and that lkb_astparam is the dlm_user_args structure. */
1560 ++ lkb->lkb_flags |= DLM_IFL_USER;
1561 + error = request_lock(ls, lkb, name, namelen, &args);
1562 +
1563 + switch (error) {
1564 +diff --git a/fs/dlm/lockspace.c b/fs/dlm/lockspace.c
1565 +index f3e72787e7f9..30e4e01db35a 100644
1566 +--- a/fs/dlm/lockspace.c
1567 ++++ b/fs/dlm/lockspace.c
1568 +@@ -673,11 +673,11 @@ static int new_lockspace(const char *name, const char *cluster,
1569 + kfree(ls->ls_recover_buf);
1570 + out_lkbidr:
1571 + idr_destroy(&ls->ls_lkbidr);
1572 ++ out_rsbtbl:
1573 + for (i = 0; i < DLM_REMOVE_NAMES_MAX; i++) {
1574 + if (ls->ls_remove_names[i])
1575 + kfree(ls->ls_remove_names[i]);
1576 + }
1577 +- out_rsbtbl:
1578 + vfree(ls->ls_rsbtbl);
1579 + out_lsfree:
1580 + if (do_unreg)
1581 +diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c
1582 +index fe3f84995c48..bd6202b70447 100644
1583 +--- a/fs/gfs2/inode.c
1584 ++++ b/fs/gfs2/inode.c
1585 +@@ -740,17 +740,19 @@ static int gfs2_create_inode(struct inode *dir, struct dentry *dentry,
1586 + the gfs2 structures. */
1587 + if (default_acl) {
1588 + error = __gfs2_set_acl(inode, default_acl, ACL_TYPE_DEFAULT);
1589 ++ if (error)
1590 ++ goto fail_gunlock3;
1591 + posix_acl_release(default_acl);
1592 ++ default_acl = NULL;
1593 + }
1594 + if (acl) {
1595 +- if (!error)
1596 +- error = __gfs2_set_acl(inode, acl, ACL_TYPE_ACCESS);
1597 ++ error = __gfs2_set_acl(inode, acl, ACL_TYPE_ACCESS);
1598 ++ if (error)
1599 ++ goto fail_gunlock3;
1600 + posix_acl_release(acl);
1601 ++ acl = NULL;
1602 + }
1603 +
1604 +- if (error)
1605 +- goto fail_gunlock3;
1606 +-
1607 + error = security_inode_init_security(&ip->i_inode, &dip->i_inode, name,
1608 + &gfs2_initxattrs, NULL);
1609 + if (error)
1610 +@@ -783,10 +785,8 @@ fail_free_inode:
1611 + gfs2_glock_put(ip->i_gl);
1612 + gfs2_rsqa_delete(ip, NULL);
1613 + fail_free_acls:
1614 +- if (default_acl)
1615 +- posix_acl_release(default_acl);
1616 +- if (acl)
1617 +- posix_acl_release(acl);
1618 ++ posix_acl_release(default_acl);
1619 ++ posix_acl_release(acl);
1620 + fail_gunlock:
1621 + gfs2_dir_no_add(&da);
1622 + gfs2_glock_dq_uninit(ghs);
1623 +diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
1624 +index 073126707270..05f1ec728840 100644
1625 +--- a/fs/gfs2/rgrp.c
1626 ++++ b/fs/gfs2/rgrp.c
1627 +@@ -1705,9 +1705,9 @@ static int gfs2_rbm_find(struct gfs2_rbm *rbm, u8 state, u32 *minext,
1628 + goto next_iter;
1629 + }
1630 + if (ret == -E2BIG) {
1631 ++ n += rbm->bii - initial_bii;
1632 + rbm->bii = 0;
1633 + rbm->offset = 0;
1634 +- n += (rbm->bii - initial_bii);
1635 + goto res_covered_end_of_rgrp;
1636 + }
1637 + return ret;
1638 +diff --git a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/input-event-codes.h
1639 +index 3af60ee69053..b584868e1b26 100644
1640 +--- a/include/uapi/linux/input-event-codes.h
1641 ++++ b/include/uapi/linux/input-event-codes.h
1642 +@@ -739,6 +739,15 @@
1643 +
1644 + #define ABS_MISC 0x28
1645 +
1646 ++/*
1647 ++ * 0x2e is reserved and should not be used in input drivers.
1648 ++ * It was used by HID as ABS_MISC+6 and userspace needs to detect if
1649 ++ * the next ABS_* event is correct or is just ABS_MISC + n.
1650 ++ * We define here ABS_RESERVED so userspace can rely on it and detect
1651 ++ * the situation described above.
1652 ++ */
1653 ++#define ABS_RESERVED 0x2e
1654 ++
1655 + #define ABS_MT_SLOT 0x2f /* MT slot being modified */
1656 + #define ABS_MT_TOUCH_MAJOR 0x30 /* Major axis of touching ellipse */
1657 + #define ABS_MT_TOUCH_MINOR 0x31 /* Minor axis (omit if circular) */
1658 +diff --git a/kernel/fork.c b/kernel/fork.c
1659 +index 73beb8dfa9df..e92b06351dec 100644
1660 +--- a/kernel/fork.c
1661 ++++ b/kernel/fork.c
1662 +@@ -1606,8 +1606,6 @@ static __latent_entropy struct task_struct *copy_process(
1663 +
1664 + posix_cpu_timers_init(p);
1665 +
1666 +- p->start_time = ktime_get_ns();
1667 +- p->real_start_time = ktime_get_boot_ns();
1668 + p->io_context = NULL;
1669 + p->audit_context = NULL;
1670 + cgroup_fork(p);
1671 +@@ -1767,6 +1765,17 @@ static __latent_entropy struct task_struct *copy_process(
1672 + if (retval)
1673 + goto bad_fork_free_pid;
1674 +
1675 ++ /*
1676 ++ * From this point on we must avoid any synchronous user-space
1677 ++ * communication until we take the tasklist-lock. In particular, we do
1678 ++ * not want user-space to be able to predict the process start-time by
1679 ++ * stalling fork(2) after we recorded the start_time but before it is
1680 ++ * visible to the system.
1681 ++ */
1682 ++
1683 ++ p->start_time = ktime_get_ns();
1684 ++ p->real_start_time = ktime_get_boot_ns();
1685 ++
1686 + /*
1687 + * Make it visible to the rest of the system, but dont wake it up yet.
1688 + * Need tasklist lock for parent etc handling!
1689 +diff --git a/kernel/memremap.c b/kernel/memremap.c
1690 +index f61a8c387c3e..9a8b594fbbb6 100644
1691 +--- a/kernel/memremap.c
1692 ++++ b/kernel/memremap.c
1693 +@@ -305,15 +305,12 @@ void *devm_memremap_pages(struct device *dev, struct resource *res,
1694 + is_ram = region_intersects(align_start, align_size,
1695 + IORESOURCE_SYSTEM_RAM, IORES_DESC_NONE);
1696 +
1697 +- if (is_ram == REGION_MIXED) {
1698 +- WARN_ONCE(1, "%s attempted on mixed region %pr\n",
1699 +- __func__, res);
1700 ++ if (is_ram != REGION_DISJOINT) {
1701 ++ WARN_ONCE(1, "%s attempted on %s region %pr\n", __func__,
1702 ++ is_ram == REGION_MIXED ? "mixed" : "ram", res);
1703 + return ERR_PTR(-ENXIO);
1704 + }
1705 +
1706 +- if (is_ram == REGION_INTERSECTS)
1707 +- return __va(res->start);
1708 +-
1709 + if (!ref)
1710 + return ERR_PTR(-EINVAL);
1711 +
1712 +@@ -399,7 +396,7 @@ void *devm_memremap_pages(struct device *dev, struct resource *res,
1713 + devres_free(page_map);
1714 + return ERR_PTR(error);
1715 + }
1716 +-EXPORT_SYMBOL(devm_memremap_pages);
1717 ++EXPORT_SYMBOL_GPL(devm_memremap_pages);
1718 +
1719 + unsigned long vmem_altmap_offset(struct vmem_altmap *altmap)
1720 + {
1721 +diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
1722 +index 0f962cc3f1bf..e4c271298074 100644
1723 +--- a/mm/memory_hotplug.c
1724 ++++ b/mm/memory_hotplug.c
1725 +@@ -34,6 +34,7 @@
1726 + #include <linux/memblock.h>
1727 + #include <linux/bootmem.h>
1728 + #include <linux/compaction.h>
1729 ++#include <linux/rmap.h>
1730 +
1731 + #include <asm/tlbflush.h>
1732 +
1733 +@@ -1617,6 +1618,21 @@ do_migrate_range(unsigned long start_pfn, unsigned long end_pfn)
1734 + continue;
1735 + }
1736 +
1737 ++ /*
1738 ++ * HWPoison pages have elevated reference counts so the migration would
1739 ++ * fail on them. It also doesn't make any sense to migrate them in the
1740 ++ * first place. Still try to unmap such a page in case it is still mapped
1741 ++ * (e.g. current hwpoison implementation doesn't unmap KSM pages but keep
1742 ++ * the unmap as the catch all safety net).
1743 ++ */
1744 ++ if (PageHWPoison(page)) {
1745 ++ if (WARN_ON(PageLRU(page)))
1746 ++ isolate_lru_page(page);
1747 ++ if (page_mapped(page))
1748 ++ try_to_unmap(page, TTU_IGNORE_MLOCK | TTU_IGNORE_ACCESS);
1749 ++ continue;
1750 ++ }
1751 ++
1752 + if (!get_page_unless_zero(page))
1753 + continue;
1754 + /*
1755 +diff --git a/net/9p/client.c b/net/9p/client.c
1756 +index 98d299ea52ee..142afe70edb9 100644
1757 +--- a/net/9p/client.c
1758 ++++ b/net/9p/client.c
1759 +@@ -156,6 +156,12 @@ static int parse_opts(char *opts, struct p9_client *clnt)
1760 + ret = r;
1761 + continue;
1762 + }
1763 ++ if (option < 4096) {
1764 ++ p9_debug(P9_DEBUG_ERROR,
1765 ++ "msize should be at least 4k\n");
1766 ++ ret = -EINVAL;
1767 ++ continue;
1768 ++ }
1769 + clnt->msize = option;
1770 + break;
1771 + case Opt_trans:
1772 +@@ -972,10 +978,18 @@ static int p9_client_version(struct p9_client *c)
1773 + else if (!strncmp(version, "9P2000", 6))
1774 + c->proto_version = p9_proto_legacy;
1775 + else {
1776 ++ p9_debug(P9_DEBUG_ERROR,
1777 ++ "server returned an unknown version: %s\n", version);
1778 + err = -EREMOTEIO;
1779 + goto error;
1780 + }
1781 +
1782 ++ if (msize < 4096) {
1783 ++ p9_debug(P9_DEBUG_ERROR,
1784 ++ "server returned a msize < 4096: %d\n", msize);
1785 ++ err = -EREMOTEIO;
1786 ++ goto error;
1787 ++ }
1788 + if (msize < c->msize)
1789 + c->msize = msize;
1790 +
1791 +@@ -1040,6 +1054,13 @@ struct p9_client *p9_client_create(const char *dev_name, char *options)
1792 + if (clnt->msize > clnt->trans_mod->maxsize)
1793 + clnt->msize = clnt->trans_mod->maxsize;
1794 +
1795 ++ if (clnt->msize < 4096) {
1796 ++ p9_debug(P9_DEBUG_ERROR,
1797 ++ "Please specify a msize of at least 4k\n");
1798 ++ err = -EINVAL;
1799 ++ goto free_client;
1800 ++ }
1801 ++
1802 + err = p9_client_version(clnt);
1803 + if (err)
1804 + goto close_trans;
1805 +diff --git a/net/ceph/auth_x.c b/net/ceph/auth_x.c
1806 +index 29e23b5cb2ed..a4896e4a1c9a 100644
1807 +--- a/net/ceph/auth_x.c
1808 ++++ b/net/ceph/auth_x.c
1809 +@@ -804,7 +804,7 @@ static int calc_signature(struct ceph_x_authorizer *au, struct ceph_msg *msg,
1810 + void *enc_buf = au->enc_buf;
1811 + int ret;
1812 +
1813 +- if (msg->con->peer_features & CEPH_FEATURE_CEPHX_V2) {
1814 ++ if (!(msg->con->peer_features & CEPH_FEATURE_CEPHX_V2)) {
1815 + struct {
1816 + __le32 len;
1817 + __le32 header_crc;
1818 +diff --git a/net/netfilter/ipset/ip_set_list_set.c b/net/netfilter/ipset/ip_set_list_set.c
1819 +index a2a89e4e0a14..e82157285d34 100644
1820 +--- a/net/netfilter/ipset/ip_set_list_set.c
1821 ++++ b/net/netfilter/ipset/ip_set_list_set.c
1822 +@@ -518,8 +518,8 @@ nla_put_failure:
1823 + ret = -EMSGSIZE;
1824 + } else {
1825 + cb->args[IPSET_CB_ARG0] = i;
1826 ++ ipset_nest_end(skb, atd);
1827 + }
1828 +- ipset_nest_end(skb, atd);
1829 + out:
1830 + rcu_read_unlock();
1831 + return ret;
1832 +diff --git a/net/netfilter/nf_conntrack_seqadj.c b/net/netfilter/nf_conntrack_seqadj.c
1833 +index ef7063eced7c..dad08b9eaf62 100644
1834 +--- a/net/netfilter/nf_conntrack_seqadj.c
1835 ++++ b/net/netfilter/nf_conntrack_seqadj.c
1836 +@@ -115,12 +115,12 @@ static void nf_ct_sack_block_adjust(struct sk_buff *skb,
1837 + /* TCP SACK sequence number adjustment */
1838 + static unsigned int nf_ct_sack_adjust(struct sk_buff *skb,
1839 + unsigned int protoff,
1840 +- struct tcphdr *tcph,
1841 + struct nf_conn *ct,
1842 + enum ip_conntrack_info ctinfo)
1843 + {
1844 +- unsigned int dir, optoff, optend;
1845 ++ struct tcphdr *tcph = (void *)skb->data + protoff;
1846 + struct nf_conn_seqadj *seqadj = nfct_seqadj(ct);
1847 ++ unsigned int dir, optoff, optend;
1848 +
1849 + optoff = protoff + sizeof(struct tcphdr);
1850 + optend = protoff + tcph->doff * 4;
1851 +@@ -128,6 +128,7 @@ static unsigned int nf_ct_sack_adjust(struct sk_buff *skb,
1852 + if (!skb_make_writable(skb, optend))
1853 + return 0;
1854 +
1855 ++ tcph = (void *)skb->data + protoff;
1856 + dir = CTINFO2DIR(ctinfo);
1857 +
1858 + while (optoff < optend) {
1859 +@@ -207,7 +208,7 @@ int nf_ct_seq_adjust(struct sk_buff *skb,
1860 + ntohl(newack));
1861 + tcph->ack_seq = newack;
1862 +
1863 +- res = nf_ct_sack_adjust(skb, protoff, tcph, ct, ctinfo);
1864 ++ res = nf_ct_sack_adjust(skb, protoff, ct, ctinfo);
1865 + out:
1866 + spin_unlock_bh(&ct->lock);
1867 +
1868 +diff --git a/net/sunrpc/auth_gss/svcauth_gss.c b/net/sunrpc/auth_gss/svcauth_gss.c
1869 +index 6a08bc451247..b4b68c6e3f8b 100644
1870 +--- a/net/sunrpc/auth_gss/svcauth_gss.c
1871 ++++ b/net/sunrpc/auth_gss/svcauth_gss.c
1872 +@@ -1112,7 +1112,7 @@ static int svcauth_gss_legacy_init(struct svc_rqst *rqstp,
1873 + struct kvec *resv = &rqstp->rq_res.head[0];
1874 + struct rsi *rsip, rsikey;
1875 + int ret;
1876 +- struct sunrpc_net *sn = net_generic(rqstp->rq_xprt->xpt_net, sunrpc_net_id);
1877 ++ struct sunrpc_net *sn = net_generic(SVC_NET(rqstp), sunrpc_net_id);
1878 +
1879 + memset(&rsikey, 0, sizeof(rsikey));
1880 + ret = gss_read_verf(gc, argv, authp,
1881 +@@ -1223,7 +1223,7 @@ static int svcauth_gss_proxy_init(struct svc_rqst *rqstp,
1882 + uint64_t handle;
1883 + int status;
1884 + int ret;
1885 +- struct net *net = rqstp->rq_xprt->xpt_net;
1886 ++ struct net *net = SVC_NET(rqstp);
1887 + struct sunrpc_net *sn = net_generic(net, sunrpc_net_id);
1888 +
1889 + memset(&ud, 0, sizeof(ud));
1890 +@@ -1414,7 +1414,7 @@ svcauth_gss_accept(struct svc_rqst *rqstp, __be32 *authp)
1891 + __be32 *rpcstart;
1892 + __be32 *reject_stat = resv->iov_base + resv->iov_len;
1893 + int ret;
1894 +- struct sunrpc_net *sn = net_generic(rqstp->rq_xprt->xpt_net, sunrpc_net_id);
1895 ++ struct sunrpc_net *sn = net_generic(SVC_NET(rqstp), sunrpc_net_id);
1896 +
1897 + dprintk("RPC: svcauth_gss: argv->iov_len = %zd\n",
1898 + argv->iov_len);
1899 +@@ -1702,7 +1702,7 @@ svcauth_gss_release(struct svc_rqst *rqstp)
1900 + struct rpc_gss_wire_cred *gc = &gsd->clcred;
1901 + struct xdr_buf *resbuf = &rqstp->rq_res;
1902 + int stat = -EINVAL;
1903 +- struct sunrpc_net *sn = net_generic(rqstp->rq_xprt->xpt_net, sunrpc_net_id);
1904 ++ struct sunrpc_net *sn = net_generic(SVC_NET(rqstp), sunrpc_net_id);
1905 +
1906 + if (gc->gc_proc != RPC_GSS_PROC_DATA)
1907 + goto out;
1908 +diff --git a/net/sunrpc/cache.c b/net/sunrpc/cache.c
1909 +index 8aabe12201f8..cab50ece6f3d 100644
1910 +--- a/net/sunrpc/cache.c
1911 ++++ b/net/sunrpc/cache.c
1912 +@@ -54,6 +54,11 @@ static void cache_init(struct cache_head *h, struct cache_detail *detail)
1913 + h->last_refresh = now;
1914 + }
1915 +
1916 ++static void cache_fresh_locked(struct cache_head *head, time_t expiry,
1917 ++ struct cache_detail *detail);
1918 ++static void cache_fresh_unlocked(struct cache_head *head,
1919 ++ struct cache_detail *detail);
1920 ++
1921 + struct cache_head *sunrpc_cache_lookup(struct cache_detail *detail,
1922 + struct cache_head *key, int hash)
1923 + {
1924 +@@ -95,6 +100,7 @@ struct cache_head *sunrpc_cache_lookup(struct cache_detail *detail,
1925 + if (cache_is_expired(detail, tmp)) {
1926 + hlist_del_init(&tmp->cache_list);
1927 + detail->entries --;
1928 ++ cache_fresh_locked(tmp, 0, detail);
1929 + freeme = tmp;
1930 + break;
1931 + }
1932 +@@ -110,8 +116,10 @@ struct cache_head *sunrpc_cache_lookup(struct cache_detail *detail,
1933 + cache_get(new);
1934 + write_unlock(&detail->hash_lock);
1935 +
1936 +- if (freeme)
1937 ++ if (freeme) {
1938 ++ cache_fresh_unlocked(freeme, detail);
1939 + cache_put(freeme, detail);
1940 ++ }
1941 + return new;
1942 + }
1943 + EXPORT_SYMBOL_GPL(sunrpc_cache_lookup);
1944 +diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
1945 +index 1bf9153004cd..280fb3178708 100644
1946 +--- a/net/sunrpc/xprtsock.c
1947 ++++ b/net/sunrpc/xprtsock.c
1948 +@@ -2209,8 +2209,8 @@ static void xs_udp_setup_socket(struct work_struct *work)
1949 + trace_rpc_socket_connect(xprt, sock, 0);
1950 + status = 0;
1951 + out:
1952 +- xprt_unlock_connect(xprt, transport);
1953 + xprt_clear_connecting(xprt);
1954 ++ xprt_unlock_connect(xprt, transport);
1955 + xprt_wake_pending_tasks(xprt, status);
1956 + }
1957 +
1958 +@@ -2395,8 +2395,8 @@ static void xs_tcp_setup_socket(struct work_struct *work)
1959 + }
1960 + status = -EAGAIN;
1961 + out:
1962 +- xprt_unlock_connect(xprt, transport);
1963 + xprt_clear_connecting(xprt);
1964 ++ xprt_unlock_connect(xprt, transport);
1965 + xprt_wake_pending_tasks(xprt, status);
1966 + }
1967 +
1968 +diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c
1969 +index 71a94e549301..884f2136b34b 100644
1970 +--- a/net/xfrm/xfrm_state.c
1971 ++++ b/net/xfrm/xfrm_state.c
1972 +@@ -641,7 +641,7 @@ void xfrm_sad_getinfo(struct net *net, struct xfrmk_sadinfo *si)
1973 + {
1974 + spin_lock_bh(&net->xfrm.xfrm_state_lock);
1975 + si->sadcnt = net->xfrm.state_num;
1976 +- si->sadhcnt = net->xfrm.state_hmask;
1977 ++ si->sadhcnt = net->xfrm.state_hmask + 1;
1978 + si->sadhmcnt = xfrm_state_hashmax;
1979 + spin_unlock_bh(&net->xfrm.xfrm_state_lock);
1980 + }
1981 +diff --git a/scripts/checkstack.pl b/scripts/checkstack.pl
1982 +index dd8397894d5c..12a6940741fe 100755
1983 +--- a/scripts/checkstack.pl
1984 ++++ b/scripts/checkstack.pl
1985 +@@ -46,8 +46,8 @@ my (@stack, $re, $dre, $x, $xs, $funcre);
1986 + $xs = "[0-9a-f ]"; # hex character or space
1987 + $funcre = qr/^$x* <(.*)>:$/;
1988 + if ($arch eq 'aarch64') {
1989 +- #ffffffc0006325cc: a9bb7bfd stp x29, x30, [sp,#-80]!
1990 +- $re = qr/^.*stp.*sp,\#-([0-9]{1,8})\]\!/o;
1991 ++ #ffffffc0006325cc: a9bb7bfd stp x29, x30, [sp, #-80]!
1992 ++ $re = qr/^.*stp.*sp, \#-([0-9]{1,8})\]\!/o;
1993 + } elsif ($arch eq 'arm') {
1994 + #c0008ffc: e24dd064 sub sp, sp, #100 ; 0x64
1995 + $re = qr/.*sub.*sp, sp, #(([0-9]{2}|[3-9])[0-9]{2})/o;
1996 +diff --git a/sound/pci/cs46xx/dsp_spos.c b/sound/pci/cs46xx/dsp_spos.c
1997 +index 4a0cbd2241d8..3191666ac129 100644
1998 +--- a/sound/pci/cs46xx/dsp_spos.c
1999 ++++ b/sound/pci/cs46xx/dsp_spos.c
2000 +@@ -899,6 +899,9 @@ int cs46xx_dsp_proc_done (struct snd_cs46xx *chip)
2001 + struct dsp_spos_instance * ins = chip->dsp_spos_instance;
2002 + int i;
2003 +
2004 ++ if (!ins)
2005 ++ return 0;
2006 ++
2007 + snd_info_free_entry(ins->proc_sym_info_entry);
2008 + ins->proc_sym_info_entry = NULL;
2009 +
2010 +diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c
2011 +index db8404e31fae..64b90b8ec661 100644
2012 +--- a/sound/usb/mixer.c
2013 ++++ b/sound/usb/mixer.c
2014 +@@ -1882,7 +1882,7 @@ static int build_audio_procunit(struct mixer_build *state, int unitid,
2015 + char *name)
2016 + {
2017 + struct uac_processing_unit_descriptor *desc = raw_desc;
2018 +- int num_ins = desc->bNrInPins;
2019 ++ int num_ins;
2020 + struct usb_mixer_elem_info *cval;
2021 + struct snd_kcontrol *kctl;
2022 + int i, err, nameid, type, len;
2023 +@@ -1897,7 +1897,13 @@ static int build_audio_procunit(struct mixer_build *state, int unitid,
2024 + 0, NULL, default_value_info
2025 + };
2026 +
2027 +- if (desc->bLength < 13 || desc->bLength < 13 + num_ins ||
2028 ++ if (desc->bLength < 13) {
2029 ++ usb_audio_err(state->chip, "invalid %s descriptor (id %d)\n", name, unitid);
2030 ++ return -EINVAL;
2031 ++ }
2032 ++
2033 ++ num_ins = desc->bNrInPins;
2034 ++ if (desc->bLength < 13 + num_ins ||
2035 + desc->bLength < num_ins + uac_processing_unit_bControlSize(desc, state->mixer->protocol)) {
2036 + usb_audio_err(state->chip, "invalid %s descriptor (id %d)\n", name, unitid);
2037 + return -EINVAL;
2038 +diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h
2039 +index 15cbe2565703..d32727c74a16 100644
2040 +--- a/sound/usb/quirks-table.h
2041 ++++ b/sound/usb/quirks-table.h
2042 +@@ -3321,6 +3321,9 @@ AU0828_DEVICE(0x2040, 0x7270, "Hauppauge", "HVR-950Q"),
2043 + }
2044 + }
2045 + },
2046 ++ {
2047 ++ .ifnum = -1
2048 ++ },
2049 + }
2050 + }
2051 + },
2052 +diff --git a/tools/testing/nvdimm/test/iomap.c b/tools/testing/nvdimm/test/iomap.c
2053 +index 64cae1a5deff..5c7ad24cd931 100644
2054 +--- a/tools/testing/nvdimm/test/iomap.c
2055 ++++ b/tools/testing/nvdimm/test/iomap.c
2056 +@@ -114,7 +114,7 @@ void *__wrap_devm_memremap_pages(struct device *dev, struct resource *res,
2057 + return nfit_res->buf + offset - nfit_res->res.start;
2058 + return devm_memremap_pages(dev, res, ref, altmap);
2059 + }
2060 +-EXPORT_SYMBOL(__wrap_devm_memremap_pages);
2061 ++EXPORT_SYMBOL_GPL(__wrap_devm_memremap_pages);
2062 +
2063 + pfn_t __wrap_phys_to_pfn_t(phys_addr_t addr, unsigned long flags)
2064 + {