Gentoo Archives: gentoo-commits

From: Mike Pagano <mpagano@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/linux-patches:4.14 commit in: /
Date: Tue, 29 Oct 2019 14:00:01
Message-Id: 1572357542.e90e0f2f33dedd4096b15873c7c1a92828cfbbe1.mpagano@gentoo
1 commit: e90e0f2f33dedd4096b15873c7c1a92828cfbbe1
2 Author: Mike Pagano <mpagano <AT> gentoo <DOT> org>
3 AuthorDate: Sat Jun 22 19:08:46 2019 +0000
4 Commit: Mike Pagano <mpagano <AT> gentoo <DOT> org>
5 CommitDate: Tue Oct 29 13:59:02 2019 +0000
6 URL: https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=e90e0f2f
7
8 Linux patch 4.14.129
9
10 Signed-off-by: Mike Pagano <mpagano <AT> gentoo.org>
11
12 0000_README | 4 +
13 1128_linux-4.14.129.patch | 1201 +++++++++++++++++++++++++++++++++++++++++++++
14 2 files changed, 1205 insertions(+)
15
16 diff --git a/0000_README b/0000_README
17 index 2a27470..dc6e2d8 100644
18 --- a/0000_README
19 +++ b/0000_README
20 @@ -555,6 +555,10 @@ Patch: 1127_linux-4.14.128.patch
21 From: https://www.kernel.org
22 Desc: Linux 4.14.128
23
24 +Patch: 1128_linux-4.14.129.patch
25 +From: https://www.kernel.org
26 +Desc: Linux 4.14.129
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/1128_linux-4.14.129.patch b/1128_linux-4.14.129.patch
33 new file mode 100644
34 index 0000000..6ca5c29
35 --- /dev/null
36 +++ b/1128_linux-4.14.129.patch
37 @@ -0,0 +1,1201 @@
38 +diff --git a/Makefile b/Makefile
39 +index ccdac2828cf7..2a55dd5bee0a 100644
40 +--- a/Makefile
41 ++++ b/Makefile
42 +@@ -1,7 +1,7 @@
43 + # SPDX-License-Identifier: GPL-2.0
44 + VERSION = 4
45 + PATCHLEVEL = 14
46 +-SUBLEVEL = 128
47 ++SUBLEVEL = 129
48 + EXTRAVERSION =
49 + NAME = Petit Gorille
50 +
51 +diff --git a/arch/ia64/mm/numa.c b/arch/ia64/mm/numa.c
52 +index aa19b7ac8222..476c7b4be378 100644
53 +--- a/arch/ia64/mm/numa.c
54 ++++ b/arch/ia64/mm/numa.c
55 +@@ -49,6 +49,7 @@ paddr_to_nid(unsigned long paddr)
56 +
57 + return (i < num_node_memblks) ? node_memblk[i].nid : (num_node_memblks ? -1 : 0);
58 + }
59 ++EXPORT_SYMBOL(paddr_to_nid);
60 +
61 + #if defined(CONFIG_SPARSEMEM) && defined(CONFIG_NUMA)
62 + /*
63 +diff --git a/arch/powerpc/include/asm/kvm_host.h b/arch/powerpc/include/asm/kvm_host.h
64 +index e3ba58f64c3d..5070b34b12fd 100644
65 +--- a/arch/powerpc/include/asm/kvm_host.h
66 ++++ b/arch/powerpc/include/asm/kvm_host.h
67 +@@ -296,6 +296,7 @@ struct kvm_arch {
68 + #ifdef CONFIG_PPC_BOOK3S_64
69 + struct list_head spapr_tce_tables;
70 + struct list_head rtas_tokens;
71 ++ struct mutex rtas_token_lock;
72 + DECLARE_BITMAP(enabled_hcalls, MAX_HCALL_OPCODE/4 + 1);
73 + #endif
74 + #ifdef CONFIG_KVM_MPIC
75 +diff --git a/arch/powerpc/kvm/book3s.c b/arch/powerpc/kvm/book3s.c
76 +index 72d977e30952..d38280b01ef0 100644
77 +--- a/arch/powerpc/kvm/book3s.c
78 ++++ b/arch/powerpc/kvm/book3s.c
79 +@@ -836,6 +836,7 @@ int kvmppc_core_init_vm(struct kvm *kvm)
80 + #ifdef CONFIG_PPC64
81 + INIT_LIST_HEAD_RCU(&kvm->arch.spapr_tce_tables);
82 + INIT_LIST_HEAD(&kvm->arch.rtas_tokens);
83 ++ mutex_init(&kvm->arch.rtas_token_lock);
84 + #endif
85 +
86 + return kvm->arch.kvm_ops->init_vm(kvm);
87 +diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
88 +index 58746328b9bd..3b7488fce3db 100644
89 +--- a/arch/powerpc/kvm/book3s_hv.c
90 ++++ b/arch/powerpc/kvm/book3s_hv.c
91 +@@ -392,12 +392,7 @@ static void kvmppc_dump_regs(struct kvm_vcpu *vcpu)
92 +
93 + static struct kvm_vcpu *kvmppc_find_vcpu(struct kvm *kvm, int id)
94 + {
95 +- struct kvm_vcpu *ret;
96 +-
97 +- mutex_lock(&kvm->lock);
98 +- ret = kvm_get_vcpu_by_id(kvm, id);
99 +- mutex_unlock(&kvm->lock);
100 +- return ret;
101 ++ return kvm_get_vcpu_by_id(kvm, id);
102 + }
103 +
104 + static void init_vpa(struct kvm_vcpu *vcpu, struct lppaca *vpa)
105 +@@ -1258,7 +1253,6 @@ static void kvmppc_set_lpcr(struct kvm_vcpu *vcpu, u64 new_lpcr,
106 + struct kvmppc_vcore *vc = vcpu->arch.vcore;
107 + u64 mask;
108 +
109 +- mutex_lock(&kvm->lock);
110 + spin_lock(&vc->lock);
111 + /*
112 + * If ILE (interrupt little-endian) has changed, update the
113 +@@ -1298,7 +1292,6 @@ static void kvmppc_set_lpcr(struct kvm_vcpu *vcpu, u64 new_lpcr,
114 + mask &= 0xFFFFFFFF;
115 + vc->lpcr = (vc->lpcr & ~mask) | (new_lpcr & mask);
116 + spin_unlock(&vc->lock);
117 +- mutex_unlock(&kvm->lock);
118 + }
119 +
120 + static int kvmppc_get_one_reg_hv(struct kvm_vcpu *vcpu, u64 id,
121 +diff --git a/arch/powerpc/kvm/book3s_rtas.c b/arch/powerpc/kvm/book3s_rtas.c
122 +index 2d3b2b1cc272..8f2355138f80 100644
123 +--- a/arch/powerpc/kvm/book3s_rtas.c
124 ++++ b/arch/powerpc/kvm/book3s_rtas.c
125 +@@ -146,7 +146,7 @@ static int rtas_token_undefine(struct kvm *kvm, char *name)
126 + {
127 + struct rtas_token_definition *d, *tmp;
128 +
129 +- lockdep_assert_held(&kvm->lock);
130 ++ lockdep_assert_held(&kvm->arch.rtas_token_lock);
131 +
132 + list_for_each_entry_safe(d, tmp, &kvm->arch.rtas_tokens, list) {
133 + if (rtas_name_matches(d->handler->name, name)) {
134 +@@ -167,7 +167,7 @@ static int rtas_token_define(struct kvm *kvm, char *name, u64 token)
135 + bool found;
136 + int i;
137 +
138 +- lockdep_assert_held(&kvm->lock);
139 ++ lockdep_assert_held(&kvm->arch.rtas_token_lock);
140 +
141 + list_for_each_entry(d, &kvm->arch.rtas_tokens, list) {
142 + if (d->token == token)
143 +@@ -206,14 +206,14 @@ int kvm_vm_ioctl_rtas_define_token(struct kvm *kvm, void __user *argp)
144 + if (copy_from_user(&args, argp, sizeof(args)))
145 + return -EFAULT;
146 +
147 +- mutex_lock(&kvm->lock);
148 ++ mutex_lock(&kvm->arch.rtas_token_lock);
149 +
150 + if (args.token)
151 + rc = rtas_token_define(kvm, args.name, args.token);
152 + else
153 + rc = rtas_token_undefine(kvm, args.name);
154 +
155 +- mutex_unlock(&kvm->lock);
156 ++ mutex_unlock(&kvm->arch.rtas_token_lock);
157 +
158 + return rc;
159 + }
160 +@@ -245,7 +245,7 @@ int kvmppc_rtas_hcall(struct kvm_vcpu *vcpu)
161 + orig_rets = args.rets;
162 + args.rets = &args.args[be32_to_cpu(args.nargs)];
163 +
164 +- mutex_lock(&vcpu->kvm->lock);
165 ++ mutex_lock(&vcpu->kvm->arch.rtas_token_lock);
166 +
167 + rc = -ENOENT;
168 + list_for_each_entry(d, &vcpu->kvm->arch.rtas_tokens, list) {
169 +@@ -256,7 +256,7 @@ int kvmppc_rtas_hcall(struct kvm_vcpu *vcpu)
170 + }
171 + }
172 +
173 +- mutex_unlock(&vcpu->kvm->lock);
174 ++ mutex_unlock(&vcpu->kvm->arch.rtas_token_lock);
175 +
176 + if (rc == 0) {
177 + args.rets = orig_rets;
178 +@@ -282,8 +282,6 @@ void kvmppc_rtas_tokens_free(struct kvm *kvm)
179 + {
180 + struct rtas_token_definition *d, *tmp;
181 +
182 +- lockdep_assert_held(&kvm->lock);
183 +-
184 + list_for_each_entry_safe(d, tmp, &kvm->arch.rtas_tokens, list) {
185 + list_del(&d->list);
186 + kfree(d);
187 +diff --git a/arch/powerpc/platforms/powernv/opal-imc.c b/arch/powerpc/platforms/powernv/opal-imc.c
188 +index 6914b289c86b..7b93191dc2e3 100644
189 +--- a/arch/powerpc/platforms/powernv/opal-imc.c
190 ++++ b/arch/powerpc/platforms/powernv/opal-imc.c
191 +@@ -87,6 +87,10 @@ static int imc_pmu_create(struct device_node *parent, int pmu_index, int domain)
192 + struct imc_pmu *pmu_ptr;
193 + u32 offset;
194 +
195 ++ /* Return for unknown domain */
196 ++ if (domain < 0)
197 ++ return -EINVAL;
198 ++
199 + /* memory for pmu */
200 + pmu_ptr = kzalloc(sizeof(struct imc_pmu), GFP_KERNEL);
201 + if (!pmu_ptr)
202 +diff --git a/arch/x86/events/intel/ds.c b/arch/x86/events/intel/ds.c
203 +index 25386be0d757..3310f9f6c3e1 100644
204 +--- a/arch/x86/events/intel/ds.c
205 ++++ b/arch/x86/events/intel/ds.c
206 +@@ -681,7 +681,7 @@ struct event_constraint intel_core2_pebs_event_constraints[] = {
207 + INTEL_FLAGS_UEVENT_CONSTRAINT(0x1fc7, 0x1), /* SIMD_INST_RETURED.ANY */
208 + INTEL_FLAGS_EVENT_CONSTRAINT(0xcb, 0x1), /* MEM_LOAD_RETIRED.* */
209 + /* INST_RETIRED.ANY_P, inv=1, cmask=16 (cycles:p). */
210 +- INTEL_FLAGS_EVENT_CONSTRAINT(0x108000c0, 0x01),
211 ++ INTEL_FLAGS_UEVENT_CONSTRAINT(0x108000c0, 0x01),
212 + EVENT_CONSTRAINT_END
213 + };
214 +
215 +@@ -690,7 +690,7 @@ struct event_constraint intel_atom_pebs_event_constraints[] = {
216 + INTEL_FLAGS_UEVENT_CONSTRAINT(0x00c5, 0x1), /* MISPREDICTED_BRANCH_RETIRED */
217 + INTEL_FLAGS_EVENT_CONSTRAINT(0xcb, 0x1), /* MEM_LOAD_RETIRED.* */
218 + /* INST_RETIRED.ANY_P, inv=1, cmask=16 (cycles:p). */
219 +- INTEL_FLAGS_EVENT_CONSTRAINT(0x108000c0, 0x01),
220 ++ INTEL_FLAGS_UEVENT_CONSTRAINT(0x108000c0, 0x01),
221 + /* Allow all events as PEBS with no flags */
222 + INTEL_ALL_EVENT_CONSTRAINT(0, 0x1),
223 + EVENT_CONSTRAINT_END
224 +@@ -698,7 +698,7 @@ struct event_constraint intel_atom_pebs_event_constraints[] = {
225 +
226 + struct event_constraint intel_slm_pebs_event_constraints[] = {
227 + /* INST_RETIRED.ANY_P, inv=1, cmask=16 (cycles:p). */
228 +- INTEL_FLAGS_EVENT_CONSTRAINT(0x108000c0, 0x1),
229 ++ INTEL_FLAGS_UEVENT_CONSTRAINT(0x108000c0, 0x1),
230 + /* Allow all events as PEBS with no flags */
231 + INTEL_ALL_EVENT_CONSTRAINT(0, 0x1),
232 + EVENT_CONSTRAINT_END
233 +@@ -729,7 +729,7 @@ struct event_constraint intel_nehalem_pebs_event_constraints[] = {
234 + INTEL_FLAGS_EVENT_CONSTRAINT(0xcb, 0xf), /* MEM_LOAD_RETIRED.* */
235 + INTEL_FLAGS_EVENT_CONSTRAINT(0xf7, 0xf), /* FP_ASSIST.* */
236 + /* INST_RETIRED.ANY_P, inv=1, cmask=16 (cycles:p). */
237 +- INTEL_FLAGS_EVENT_CONSTRAINT(0x108000c0, 0x0f),
238 ++ INTEL_FLAGS_UEVENT_CONSTRAINT(0x108000c0, 0x0f),
239 + EVENT_CONSTRAINT_END
240 + };
241 +
242 +@@ -746,7 +746,7 @@ struct event_constraint intel_westmere_pebs_event_constraints[] = {
243 + INTEL_FLAGS_EVENT_CONSTRAINT(0xcb, 0xf), /* MEM_LOAD_RETIRED.* */
244 + INTEL_FLAGS_EVENT_CONSTRAINT(0xf7, 0xf), /* FP_ASSIST.* */
245 + /* INST_RETIRED.ANY_P, inv=1, cmask=16 (cycles:p). */
246 +- INTEL_FLAGS_EVENT_CONSTRAINT(0x108000c0, 0x0f),
247 ++ INTEL_FLAGS_UEVENT_CONSTRAINT(0x108000c0, 0x0f),
248 + EVENT_CONSTRAINT_END
249 + };
250 +
251 +@@ -755,7 +755,7 @@ struct event_constraint intel_snb_pebs_event_constraints[] = {
252 + INTEL_PLD_CONSTRAINT(0x01cd, 0x8), /* MEM_TRANS_RETIRED.LAT_ABOVE_THR */
253 + INTEL_PST_CONSTRAINT(0x02cd, 0x8), /* MEM_TRANS_RETIRED.PRECISE_STORES */
254 + /* UOPS_RETIRED.ALL, inv=1, cmask=16 (cycles:p). */
255 +- INTEL_FLAGS_EVENT_CONSTRAINT(0x108001c2, 0xf),
256 ++ INTEL_FLAGS_UEVENT_CONSTRAINT(0x108001c2, 0xf),
257 + INTEL_EXCLEVT_CONSTRAINT(0xd0, 0xf), /* MEM_UOP_RETIRED.* */
258 + INTEL_EXCLEVT_CONSTRAINT(0xd1, 0xf), /* MEM_LOAD_UOPS_RETIRED.* */
259 + INTEL_EXCLEVT_CONSTRAINT(0xd2, 0xf), /* MEM_LOAD_UOPS_LLC_HIT_RETIRED.* */
260 +@@ -770,9 +770,9 @@ struct event_constraint intel_ivb_pebs_event_constraints[] = {
261 + INTEL_PLD_CONSTRAINT(0x01cd, 0x8), /* MEM_TRANS_RETIRED.LAT_ABOVE_THR */
262 + INTEL_PST_CONSTRAINT(0x02cd, 0x8), /* MEM_TRANS_RETIRED.PRECISE_STORES */
263 + /* UOPS_RETIRED.ALL, inv=1, cmask=16 (cycles:p). */
264 +- INTEL_FLAGS_EVENT_CONSTRAINT(0x108001c2, 0xf),
265 ++ INTEL_FLAGS_UEVENT_CONSTRAINT(0x108001c2, 0xf),
266 + /* INST_RETIRED.PREC_DIST, inv=1, cmask=16 (cycles:ppp). */
267 +- INTEL_FLAGS_EVENT_CONSTRAINT(0x108001c0, 0x2),
268 ++ INTEL_FLAGS_UEVENT_CONSTRAINT(0x108001c0, 0x2),
269 + INTEL_EXCLEVT_CONSTRAINT(0xd0, 0xf), /* MEM_UOP_RETIRED.* */
270 + INTEL_EXCLEVT_CONSTRAINT(0xd1, 0xf), /* MEM_LOAD_UOPS_RETIRED.* */
271 + INTEL_EXCLEVT_CONSTRAINT(0xd2, 0xf), /* MEM_LOAD_UOPS_LLC_HIT_RETIRED.* */
272 +@@ -786,9 +786,9 @@ struct event_constraint intel_hsw_pebs_event_constraints[] = {
273 + INTEL_FLAGS_UEVENT_CONSTRAINT(0x01c0, 0x2), /* INST_RETIRED.PRECDIST */
274 + INTEL_PLD_CONSTRAINT(0x01cd, 0xf), /* MEM_TRANS_RETIRED.* */
275 + /* UOPS_RETIRED.ALL, inv=1, cmask=16 (cycles:p). */
276 +- INTEL_FLAGS_EVENT_CONSTRAINT(0x108001c2, 0xf),
277 ++ INTEL_FLAGS_UEVENT_CONSTRAINT(0x108001c2, 0xf),
278 + /* INST_RETIRED.PREC_DIST, inv=1, cmask=16 (cycles:ppp). */
279 +- INTEL_FLAGS_EVENT_CONSTRAINT(0x108001c0, 0x2),
280 ++ INTEL_FLAGS_UEVENT_CONSTRAINT(0x108001c0, 0x2),
281 + INTEL_FLAGS_UEVENT_CONSTRAINT_DATALA_NA(0x01c2, 0xf), /* UOPS_RETIRED.ALL */
282 + INTEL_FLAGS_UEVENT_CONSTRAINT_DATALA_XLD(0x11d0, 0xf), /* MEM_UOPS_RETIRED.STLB_MISS_LOADS */
283 + INTEL_FLAGS_UEVENT_CONSTRAINT_DATALA_XLD(0x21d0, 0xf), /* MEM_UOPS_RETIRED.LOCK_LOADS */
284 +@@ -809,9 +809,9 @@ struct event_constraint intel_bdw_pebs_event_constraints[] = {
285 + INTEL_FLAGS_UEVENT_CONSTRAINT(0x01c0, 0x2), /* INST_RETIRED.PRECDIST */
286 + INTEL_PLD_CONSTRAINT(0x01cd, 0xf), /* MEM_TRANS_RETIRED.* */
287 + /* UOPS_RETIRED.ALL, inv=1, cmask=16 (cycles:p). */
288 +- INTEL_FLAGS_EVENT_CONSTRAINT(0x108001c2, 0xf),
289 ++ INTEL_FLAGS_UEVENT_CONSTRAINT(0x108001c2, 0xf),
290 + /* INST_RETIRED.PREC_DIST, inv=1, cmask=16 (cycles:ppp). */
291 +- INTEL_FLAGS_EVENT_CONSTRAINT(0x108001c0, 0x2),
292 ++ INTEL_FLAGS_UEVENT_CONSTRAINT(0x108001c0, 0x2),
293 + INTEL_FLAGS_UEVENT_CONSTRAINT_DATALA_NA(0x01c2, 0xf), /* UOPS_RETIRED.ALL */
294 + INTEL_FLAGS_UEVENT_CONSTRAINT_DATALA_LD(0x11d0, 0xf), /* MEM_UOPS_RETIRED.STLB_MISS_LOADS */
295 + INTEL_FLAGS_UEVENT_CONSTRAINT_DATALA_LD(0x21d0, 0xf), /* MEM_UOPS_RETIRED.LOCK_LOADS */
296 +@@ -832,9 +832,9 @@ struct event_constraint intel_bdw_pebs_event_constraints[] = {
297 + struct event_constraint intel_skl_pebs_event_constraints[] = {
298 + INTEL_FLAGS_UEVENT_CONSTRAINT(0x1c0, 0x2), /* INST_RETIRED.PREC_DIST */
299 + /* INST_RETIRED.PREC_DIST, inv=1, cmask=16 (cycles:ppp). */
300 +- INTEL_FLAGS_EVENT_CONSTRAINT(0x108001c0, 0x2),
301 ++ INTEL_FLAGS_UEVENT_CONSTRAINT(0x108001c0, 0x2),
302 + /* INST_RETIRED.TOTAL_CYCLES_PS (inv=1, cmask=16) (cycles:p). */
303 +- INTEL_FLAGS_EVENT_CONSTRAINT(0x108000c0, 0x0f),
304 ++ INTEL_FLAGS_UEVENT_CONSTRAINT(0x108000c0, 0x0f),
305 + INTEL_PLD_CONSTRAINT(0x1cd, 0xf), /* MEM_TRANS_RETIRED.* */
306 + INTEL_FLAGS_UEVENT_CONSTRAINT_DATALA_LD(0x11d0, 0xf), /* MEM_INST_RETIRED.STLB_MISS_LOADS */
307 + INTEL_FLAGS_UEVENT_CONSTRAINT_DATALA_ST(0x12d0, 0xf), /* MEM_INST_RETIRED.STLB_MISS_STORES */
308 +diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
309 +index ecf82859f1c0..bbebcd7a781e 100644
310 +--- a/arch/x86/kernel/cpu/amd.c
311 ++++ b/arch/x86/kernel/cpu/amd.c
312 +@@ -792,8 +792,11 @@ static void init_amd_zn(struct cpuinfo_x86 *c)
313 + {
314 + set_cpu_cap(c, X86_FEATURE_ZEN);
315 +
316 +- /* Fix erratum 1076: CPB feature bit not being set in CPUID. */
317 +- if (!cpu_has(c, X86_FEATURE_CPB))
318 ++ /*
319 ++ * Fix erratum 1076: CPB feature bit not being set in CPUID.
320 ++ * Always set it, except when running under a hypervisor.
321 ++ */
322 ++ if (!cpu_has(c, X86_FEATURE_HYPERVISOR) && !cpu_has(c, X86_FEATURE_CPB))
323 + set_cpu_cap(c, X86_FEATURE_CPB);
324 + }
325 +
326 +diff --git a/drivers/clk/ti/clkctrl.c b/drivers/clk/ti/clkctrl.c
327 +index 53e71d0503ec..82e4d5cccf84 100644
328 +--- a/drivers/clk/ti/clkctrl.c
329 ++++ b/drivers/clk/ti/clkctrl.c
330 +@@ -124,9 +124,6 @@ static int _omap4_clkctrl_clk_enable(struct clk_hw *hw)
331 + int ret;
332 + union omap4_timeout timeout = { 0 };
333 +
334 +- if (!clk->enable_bit)
335 +- return 0;
336 +-
337 + if (clk->clkdm) {
338 + ret = ti_clk_ll_ops->clkdm_clk_enable(clk->clkdm, hw->clk);
339 + if (ret) {
340 +@@ -138,6 +135,9 @@ static int _omap4_clkctrl_clk_enable(struct clk_hw *hw)
341 + }
342 + }
343 +
344 ++ if (!clk->enable_bit)
345 ++ return 0;
346 ++
347 + val = ti_clk_ll_ops->clk_readl(&clk->enable_reg);
348 +
349 + val &= ~OMAP4_MODULEMODE_MASK;
350 +@@ -166,7 +166,7 @@ static void _omap4_clkctrl_clk_disable(struct clk_hw *hw)
351 + union omap4_timeout timeout = { 0 };
352 +
353 + if (!clk->enable_bit)
354 +- return;
355 ++ goto exit;
356 +
357 + val = ti_clk_ll_ops->clk_readl(&clk->enable_reg);
358 +
359 +diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
360 +index 3f80f167ed56..2357d2f73c1a 100644
361 +--- a/drivers/gpio/Kconfig
362 ++++ b/drivers/gpio/Kconfig
363 +@@ -712,6 +712,7 @@ config GPIO_ADP5588
364 + config GPIO_ADP5588_IRQ
365 + bool "Interrupt controller support for ADP5588"
366 + depends on GPIO_ADP5588=y
367 ++ select GPIOLIB_IRQCHIP
368 + help
369 + Say yes here to enable the adp5588 to be used as an interrupt
370 + controller. It requires the driver to be built in the kernel.
371 +diff --git a/drivers/hid/wacom_wac.c b/drivers/hid/wacom_wac.c
372 +index 22e80685cd52..b42bb955f22d 100644
373 +--- a/drivers/hid/wacom_wac.c
374 ++++ b/drivers/hid/wacom_wac.c
375 +@@ -1225,13 +1225,13 @@ static void wacom_intuos_pro2_bt_pen(struct wacom_wac *wacom)
376 + /* Add back in missing bits of ID for non-USI pens */
377 + wacom->id[0] |= (wacom->serial[0] >> 32) & 0xFFFFF;
378 + }
379 +- wacom->tool[0] = wacom_intuos_get_tool_type(wacom_intuos_id_mangle(wacom->id[0]));
380 +
381 + for (i = 0; i < pen_frames; i++) {
382 + unsigned char *frame = &data[i*pen_frame_len + 1];
383 + bool valid = frame[0] & 0x80;
384 + bool prox = frame[0] & 0x40;
385 + bool range = frame[0] & 0x20;
386 ++ bool invert = frame[0] & 0x10;
387 +
388 + if (!valid)
389 + continue;
390 +@@ -1240,8 +1240,13 @@ static void wacom_intuos_pro2_bt_pen(struct wacom_wac *wacom)
391 + wacom->shared->stylus_in_proximity = false;
392 + wacom_exit_report(wacom);
393 + input_sync(pen_input);
394 ++
395 ++ wacom->tool[0] = 0;
396 ++ wacom->id[0] = 0;
397 ++ wacom->serial[0] = 0;
398 + return;
399 + }
400 ++
401 + if (range) {
402 + /* Fix rotation alignment: userspace expects zero at left */
403 + int16_t rotation = (int16_t)get_unaligned_le16(&frame[9]);
404 +@@ -1249,6 +1254,16 @@ static void wacom_intuos_pro2_bt_pen(struct wacom_wac *wacom)
405 + if (rotation > 899)
406 + rotation -= 1800;
407 +
408 ++ if (!wacom->tool[0]) { /* first in range */
409 ++ /* Going into range select tool */
410 ++ if (invert)
411 ++ wacom->tool[0] = BTN_TOOL_RUBBER;
412 ++ else if (wacom->id[0])
413 ++ wacom->tool[0] = wacom_intuos_get_tool_type(wacom->id[0]);
414 ++ else
415 ++ wacom->tool[0] = BTN_TOOL_PEN;
416 ++ }
417 ++
418 + input_report_abs(pen_input, ABS_X, get_unaligned_le16(&frame[1]));
419 + input_report_abs(pen_input, ABS_Y, get_unaligned_le16(&frame[3]));
420 + input_report_abs(pen_input, ABS_TILT_X, (char)frame[7]);
421 +@@ -1256,17 +1271,19 @@ static void wacom_intuos_pro2_bt_pen(struct wacom_wac *wacom)
422 + input_report_abs(pen_input, ABS_Z, rotation);
423 + input_report_abs(pen_input, ABS_WHEEL, get_unaligned_le16(&frame[11]));
424 + }
425 +- input_report_abs(pen_input, ABS_PRESSURE, get_unaligned_le16(&frame[5]));
426 +- input_report_abs(pen_input, ABS_DISTANCE, range ? frame[13] : wacom->features.distance_max);
427 +-
428 +- input_report_key(pen_input, BTN_TOUCH, frame[0] & 0x01);
429 +- input_report_key(pen_input, BTN_STYLUS, frame[0] & 0x02);
430 +- input_report_key(pen_input, BTN_STYLUS2, frame[0] & 0x04);
431 +-
432 +- input_report_key(pen_input, wacom->tool[0], prox);
433 +- input_event(pen_input, EV_MSC, MSC_SERIAL, wacom->serial[0]);
434 +- input_report_abs(pen_input, ABS_MISC,
435 +- wacom_intuos_id_mangle(wacom->id[0])); /* report tool id */
436 ++ if (wacom->tool[0]) {
437 ++ input_report_abs(pen_input, ABS_PRESSURE, get_unaligned_le16(&frame[5]));
438 ++ input_report_abs(pen_input, ABS_DISTANCE, range ? frame[13] : wacom->features.distance_max);
439 ++
440 ++ input_report_key(pen_input, BTN_TOUCH, frame[0] & 0x09);
441 ++ input_report_key(pen_input, BTN_STYLUS, frame[0] & 0x02);
442 ++ input_report_key(pen_input, BTN_STYLUS2, frame[0] & 0x04);
443 ++
444 ++ input_report_key(pen_input, wacom->tool[0], prox);
445 ++ input_event(pen_input, EV_MSC, MSC_SERIAL, wacom->serial[0]);
446 ++ input_report_abs(pen_input, ABS_MISC,
447 ++ wacom_intuos_id_mangle(wacom->id[0])); /* report tool id */
448 ++ }
449 +
450 + wacom->shared->stylus_in_proximity = prox;
451 +
452 +diff --git a/drivers/i2c/i2c-dev.c b/drivers/i2c/i2c-dev.c
453 +index 00e8e675cbeb..eaa312bc3a3c 100644
454 +--- a/drivers/i2c/i2c-dev.c
455 ++++ b/drivers/i2c/i2c-dev.c
456 +@@ -297,6 +297,7 @@ static noinline int i2cdev_ioctl_rdwr(struct i2c_client *client,
457 + rdwr_pa[i].buf[0] < 1 ||
458 + rdwr_pa[i].len < rdwr_pa[i].buf[0] +
459 + I2C_SMBUS_BLOCK_MAX) {
460 ++ i++;
461 + res = -EINVAL;
462 + break;
463 + }
464 +diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4/main.c
465 +index e2beb182d54c..0299c0642de8 100644
466 +--- a/drivers/infiniband/hw/mlx4/main.c
467 ++++ b/drivers/infiniband/hw/mlx4/main.c
468 +@@ -1197,6 +1197,8 @@ static void mlx4_ib_disassociate_ucontext(struct ib_ucontext *ibcontext)
469 + * mlx4_ib_vma_close().
470 + */
471 + down_write(&owning_mm->mmap_sem);
472 ++ if (!mmget_still_valid(owning_mm))
473 ++ goto skip_mm;
474 + for (i = 0; i < HW_BAR_COUNT; i++) {
475 + vma = context->hw_bar_info[i].vma;
476 + if (!vma)
477 +@@ -1215,7 +1217,7 @@ static void mlx4_ib_disassociate_ucontext(struct ib_ucontext *ibcontext)
478 + /* context going to be destroyed, should not access ops any more */
479 + context->hw_bar_info[i].vma->vm_ops = NULL;
480 + }
481 +-
482 ++skip_mm:
483 + up_write(&owning_mm->mmap_sem);
484 + mmput(owning_mm);
485 + put_task_struct(owning_process);
486 +diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c
487 +index 13a92062e9ca..3fbe3962d53b 100644
488 +--- a/drivers/infiniband/hw/mlx5/main.c
489 ++++ b/drivers/infiniband/hw/mlx5/main.c
490 +@@ -1646,6 +1646,8 @@ static void mlx5_ib_disassociate_ucontext(struct ib_ucontext *ibcontext)
491 + * mlx5_ib_vma_close.
492 + */
493 + down_write(&owning_mm->mmap_sem);
494 ++ if (!mmget_still_valid(owning_mm))
495 ++ goto skip_mm;
496 + mutex_lock(&context->vma_private_list_mutex);
497 + list_for_each_entry_safe(vma_private, n, &context->vma_private_list,
498 + list) {
499 +@@ -1662,6 +1664,7 @@ static void mlx5_ib_disassociate_ucontext(struct ib_ucontext *ibcontext)
500 + kfree(vma_private);
501 + }
502 + mutex_unlock(&context->vma_private_list_mutex);
503 ++skip_mm:
504 + up_write(&owning_mm->mmap_sem);
505 + mmput(owning_mm);
506 + put_task_struct(owning_process);
507 +diff --git a/drivers/isdn/mISDN/socket.c b/drivers/isdn/mISDN/socket.c
508 +index 65cb4aac8dce..477e07036add 100644
509 +--- a/drivers/isdn/mISDN/socket.c
510 ++++ b/drivers/isdn/mISDN/socket.c
511 +@@ -394,7 +394,7 @@ data_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
512 + memcpy(di.channelmap, dev->channelmap,
513 + sizeof(di.channelmap));
514 + di.nrbchan = dev->nrbchan;
515 +- strcpy(di.name, dev_name(&dev->dev));
516 ++ strscpy(di.name, dev_name(&dev->dev), sizeof(di.name));
517 + if (copy_to_user((void __user *)arg, &di, sizeof(di)))
518 + err = -EFAULT;
519 + } else
520 +@@ -678,7 +678,7 @@ base_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
521 + memcpy(di.channelmap, dev->channelmap,
522 + sizeof(di.channelmap));
523 + di.nrbchan = dev->nrbchan;
524 +- strcpy(di.name, dev_name(&dev->dev));
525 ++ strscpy(di.name, dev_name(&dev->dev), sizeof(di.name));
526 + if (copy_to_user((void __user *)arg, &di, sizeof(di)))
527 + err = -EFAULT;
528 + } else
529 +@@ -692,6 +692,7 @@ base_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
530 + err = -EFAULT;
531 + break;
532 + }
533 ++ dn.name[sizeof(dn.name) - 1] = '\0';
534 + dev = get_mdevice(dn.id);
535 + if (dev)
536 + err = device_rename(&dev->dev, dn.name);
537 +diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c
538 +index f4b3554b0b67..236325f48ec9 100644
539 +--- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c
540 ++++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c
541 +@@ -683,38 +683,41 @@ static int hw_atl_b0_hw_ring_rx_receive(struct aq_hw_s *self,
542 + if (is_err || rxd_wb->type & 0x1000U) {
543 + /* status error or DMA error */
544 + buff->is_error = 1U;
545 +- } else {
546 +- if (self->aq_nic_cfg->is_rss) {
547 +- /* last 4 byte */
548 +- u16 rss_type = rxd_wb->type & 0xFU;
549 +-
550 +- if (rss_type && rss_type < 0x8U) {
551 +- buff->is_hash_l4 = (rss_type == 0x4 ||
552 +- rss_type == 0x5);
553 +- buff->rss_hash = rxd_wb->rss_hash;
554 +- }
555 ++ }
556 ++ if (self->aq_nic_cfg->is_rss) {
557 ++ /* last 4 byte */
558 ++ u16 rss_type = rxd_wb->type & 0xFU;
559 ++
560 ++ if (rss_type && rss_type < 0x8U) {
561 ++ buff->is_hash_l4 = (rss_type == 0x4 ||
562 ++ rss_type == 0x5);
563 ++ buff->rss_hash = rxd_wb->rss_hash;
564 + }
565 ++ }
566 +
567 +- if (HW_ATL_B0_RXD_WB_STAT2_EOP & rxd_wb->status) {
568 +- buff->len = rxd_wb->pkt_len %
569 +- AQ_CFG_RX_FRAME_MAX;
570 +- buff->len = buff->len ?
571 +- buff->len : AQ_CFG_RX_FRAME_MAX;
572 +- buff->next = 0U;
573 +- buff->is_eop = 1U;
574 ++ if (HW_ATL_B0_RXD_WB_STAT2_EOP & rxd_wb->status) {
575 ++ buff->len = rxd_wb->pkt_len %
576 ++ AQ_CFG_RX_FRAME_MAX;
577 ++ buff->len = buff->len ?
578 ++ buff->len : AQ_CFG_RX_FRAME_MAX;
579 ++ buff->next = 0U;
580 ++ buff->is_eop = 1U;
581 ++ } else {
582 ++ buff->len =
583 ++ rxd_wb->pkt_len > AQ_CFG_RX_FRAME_MAX ?
584 ++ AQ_CFG_RX_FRAME_MAX : rxd_wb->pkt_len;
585 ++
586 ++ if (HW_ATL_B0_RXD_WB_STAT2_RSCCNT &
587 ++ rxd_wb->status) {
588 ++ /* LRO */
589 ++ buff->next = rxd_wb->next_desc_ptr;
590 ++ ++ring->stats.rx.lro_packets;
591 + } else {
592 +- if (HW_ATL_B0_RXD_WB_STAT2_RSCCNT &
593 +- rxd_wb->status) {
594 +- /* LRO */
595 +- buff->next = rxd_wb->next_desc_ptr;
596 +- ++ring->stats.rx.lro_packets;
597 +- } else {
598 +- /* jumbo */
599 +- buff->next =
600 +- aq_ring_next_dx(ring,
601 +- ring->hw_head);
602 +- ++ring->stats.rx.jumbo_packets;
603 +- }
604 ++ /* jumbo */
605 ++ buff->next =
606 ++ aq_ring_next_dx(ring,
607 ++ ring->hw_head);
608 ++ ++ring->stats.rx.jumbo_packets;
609 + }
610 + }
611 + }
612 +diff --git a/drivers/net/ethernet/dec/tulip/de4x5.c b/drivers/net/ethernet/dec/tulip/de4x5.c
613 +index 0affee9c8aa2..0b1e7a96ff49 100644
614 +--- a/drivers/net/ethernet/dec/tulip/de4x5.c
615 ++++ b/drivers/net/ethernet/dec/tulip/de4x5.c
616 +@@ -2108,7 +2108,6 @@ static struct eisa_driver de4x5_eisa_driver = {
617 + .remove = de4x5_eisa_remove,
618 + }
619 + };
620 +-MODULE_DEVICE_TABLE(eisa, de4x5_eisa_ids);
621 + #endif
622 +
623 + #ifdef CONFIG_PCI
624 +diff --git a/drivers/net/ethernet/emulex/benet/be_ethtool.c b/drivers/net/ethernet/emulex/benet/be_ethtool.c
625 +index 7d1819c9e8cc..6ce7b8435ace 100644
626 +--- a/drivers/net/ethernet/emulex/benet/be_ethtool.c
627 ++++ b/drivers/net/ethernet/emulex/benet/be_ethtool.c
628 +@@ -1103,7 +1103,7 @@ static int be_get_rxnfc(struct net_device *netdev, struct ethtool_rxnfc *cmd,
629 + cmd->data = be_get_rss_hash_opts(adapter, cmd->flow_type);
630 + break;
631 + case ETHTOOL_GRXRINGS:
632 +- cmd->data = adapter->num_rx_qs - 1;
633 ++ cmd->data = adapter->num_rx_qs;
634 + break;
635 + default:
636 + return -EINVAL;
637 +diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
638 +index ab09f9e43c79..5c74787f903b 100644
639 +--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
640 ++++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
641 +@@ -2505,6 +2505,10 @@ mlxsw_sp_port_set_link_ksettings(struct net_device *dev,
642 + mlxsw_reg_ptys_eth_unpack(ptys_pl, &eth_proto_cap, NULL, NULL);
643 +
644 + autoneg = cmd->base.autoneg == AUTONEG_ENABLE;
645 ++ if (!autoneg && cmd->base.speed == SPEED_56000) {
646 ++ netdev_err(dev, "56G not supported with autoneg off\n");
647 ++ return -EINVAL;
648 ++ }
649 + eth_proto_new = autoneg ?
650 + mlxsw_sp_to_ptys_advert_link(cmd) :
651 + mlxsw_sp_to_ptys_speed(cmd->base.speed);
652 +diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c
653 +index abfb9faadbc4..9b1906a65e11 100644
654 +--- a/drivers/net/ethernet/renesas/sh_eth.c
655 ++++ b/drivers/net/ethernet/renesas/sh_eth.c
656 +@@ -1458,6 +1458,10 @@ static void sh_eth_dev_exit(struct net_device *ndev)
657 + sh_eth_get_stats(ndev);
658 + sh_eth_reset(ndev);
659 +
660 ++ /* Set the RMII mode again if required */
661 ++ if (mdp->cd->rmiimode)
662 ++ sh_eth_write(ndev, 0x1, RMIIMODE);
663 ++
664 + /* Set MAC address again */
665 + update_mac_address(ndev);
666 + }
667 +diff --git a/drivers/net/phy/dp83867.c b/drivers/net/phy/dp83867.c
668 +index c1ab976cc800..12b09e6e03ba 100644
669 +--- a/drivers/net/phy/dp83867.c
670 ++++ b/drivers/net/phy/dp83867.c
671 +@@ -249,10 +249,8 @@ static int dp83867_config_init(struct phy_device *phydev)
672 + ret = phy_write(phydev, MII_DP83867_PHYCTRL, val);
673 + if (ret)
674 + return ret;
675 +- }
676 +
677 +- if ((phydev->interface >= PHY_INTERFACE_MODE_RGMII_ID) &&
678 +- (phydev->interface <= PHY_INTERFACE_MODE_RGMII_RXID)) {
679 ++ /* Set up RGMII delays */
680 + val = phy_read_mmd(phydev, DP83867_DEVADDR, DP83867_RGMIICTL);
681 +
682 + if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID)
683 +diff --git a/drivers/scsi/cxgbi/libcxgbi.c b/drivers/scsi/cxgbi/libcxgbi.c
684 +index 512c8f1ea5b0..902f5e03ec94 100644
685 +--- a/drivers/scsi/cxgbi/libcxgbi.c
686 ++++ b/drivers/scsi/cxgbi/libcxgbi.c
687 +@@ -640,6 +640,10 @@ cxgbi_check_route(struct sockaddr *dst_addr, int ifindex)
688 +
689 + if (ndev->flags & IFF_LOOPBACK) {
690 + ndev = ip_dev_find(&init_net, daddr->sin_addr.s_addr);
691 ++ if (!ndev) {
692 ++ err = -ENETUNREACH;
693 ++ goto rel_neigh;
694 ++ }
695 + mtu = ndev->mtu;
696 + pr_info("rt dev %s, loopback -> %s, mtu %u.\n",
697 + n->dev->name, ndev->name, mtu);
698 +diff --git a/drivers/scsi/device_handler/scsi_dh_alua.c b/drivers/scsi/device_handler/scsi_dh_alua.c
699 +index 0962fd544401..09c6a16fab93 100644
700 +--- a/drivers/scsi/device_handler/scsi_dh_alua.c
701 ++++ b/drivers/scsi/device_handler/scsi_dh_alua.c
702 +@@ -1151,10 +1151,8 @@ static int __init alua_init(void)
703 + int r;
704 +
705 + kaluad_wq = alloc_workqueue("kaluad", WQ_MEM_RECLAIM, 0);
706 +- if (!kaluad_wq) {
707 +- /* Temporary failure, bypass */
708 +- return SCSI_DH_DEV_TEMP_BUSY;
709 +- }
710 ++ if (!kaluad_wq)
711 ++ return -ENOMEM;
712 +
713 + r = scsi_register_device_handler(&alua_dh);
714 + if (r != 0) {
715 +diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_expander.c
716 +index ffea620a147d..259ee0d3c3e6 100644
717 +--- a/drivers/scsi/libsas/sas_expander.c
718 ++++ b/drivers/scsi/libsas/sas_expander.c
719 +@@ -989,6 +989,8 @@ static struct domain_device *sas_ex_discover_expander(
720 + list_del(&child->dev_list_node);
721 + spin_unlock_irq(&parent->port->dev_list_lock);
722 + sas_put_device(child);
723 ++ sas_port_delete(phy->port);
724 ++ phy->port = NULL;
725 + return NULL;
726 + }
727 + list_add_tail(&child->siblings, &parent->ex_dev.children);
728 +diff --git a/drivers/scsi/smartpqi/smartpqi_init.c b/drivers/scsi/smartpqi/smartpqi_init.c
729 +index 5ec2898d21cd..d34351c6b9af 100644
730 +--- a/drivers/scsi/smartpqi/smartpqi_init.c
731 ++++ b/drivers/scsi/smartpqi/smartpqi_init.c
732 +@@ -6392,7 +6392,7 @@ static int pqi_pci_init(struct pqi_ctrl_info *ctrl_info)
733 + else
734 + mask = DMA_BIT_MASK(32);
735 +
736 +- rc = dma_set_mask(&ctrl_info->pci_dev->dev, mask);
737 ++ rc = dma_set_mask_and_coherent(&ctrl_info->pci_dev->dev, mask);
738 + if (rc) {
739 + dev_err(&ctrl_info->pci_dev->dev, "failed to set DMA mask\n");
740 + goto disable_device;
741 +diff --git a/drivers/staging/vc04_services/bcm2835-camera/controls.c b/drivers/staging/vc04_services/bcm2835-camera/controls.c
742 +index 77a5d6f4e1eb..8a242f609d3b 100644
743 +--- a/drivers/staging/vc04_services/bcm2835-camera/controls.c
744 ++++ b/drivers/staging/vc04_services/bcm2835-camera/controls.c
745 +@@ -579,7 +579,7 @@ exit:
746 + dev->colourfx.enable ? "true" : "false",
747 + dev->colourfx.u, dev->colourfx.v,
748 + ret, (ret == 0 ? 0 : -EINVAL));
749 +- return (ret == 0 ? 0 : EINVAL);
750 ++ return (ret == 0 ? 0 : -EINVAL);
751 + }
752 +
753 + static int ctrl_set_colfx(struct bm2835_mmal_dev *dev,
754 +@@ -603,7 +603,7 @@ static int ctrl_set_colfx(struct bm2835_mmal_dev *dev,
755 + "%s: After: mmal_ctrl:%p ctrl id:0x%x ctrl val:%d ret %d(%d)\n",
756 + __func__, mmal_ctrl, ctrl->id, ctrl->val, ret,
757 + (ret == 0 ? 0 : -EINVAL));
758 +- return (ret == 0 ? 0 : EINVAL);
759 ++ return (ret == 0 ? 0 : -EINVAL);
760 + }
761 +
762 + static int ctrl_set_bitrate(struct bm2835_mmal_dev *dev,
763 +diff --git a/drivers/tty/serial/sunhv.c b/drivers/tty/serial/sunhv.c
764 +index 46e46894e918..84c4d83fcfca 100644
765 +--- a/drivers/tty/serial/sunhv.c
766 ++++ b/drivers/tty/serial/sunhv.c
767 +@@ -396,7 +396,7 @@ static const struct uart_ops sunhv_pops = {
768 + static struct uart_driver sunhv_reg = {
769 + .owner = THIS_MODULE,
770 + .driver_name = "sunhv",
771 +- .dev_name = "ttyS",
772 ++ .dev_name = "ttyHV",
773 + .major = TTY_MAJOR,
774 + };
775 +
776 +diff --git a/fs/configfs/dir.c b/fs/configfs/dir.c
777 +index d7955dc56737..a1985a9ad2d6 100644
778 +--- a/fs/configfs/dir.c
779 ++++ b/fs/configfs/dir.c
780 +@@ -58,15 +58,13 @@ static void configfs_d_iput(struct dentry * dentry,
781 + if (sd) {
782 + /* Coordinate with configfs_readdir */
783 + spin_lock(&configfs_dirent_lock);
784 +- /* Coordinate with configfs_attach_attr where will increase
785 +- * sd->s_count and update sd->s_dentry to new allocated one.
786 +- * Only set sd->dentry to null when this dentry is the only
787 +- * sd owner.
788 +- * If not do so, configfs_d_iput may run just after
789 +- * configfs_attach_attr and set sd->s_dentry to null
790 +- * even it's still in use.
791 ++ /*
792 ++ * Set sd->s_dentry to null only when this dentry is the one
793 ++ * that is going to be killed. Otherwise configfs_d_iput may
794 ++ * run just after configfs_attach_attr and set sd->s_dentry to
795 ++ * NULL even it's still in use.
796 + */
797 +- if (atomic_read(&sd->s_count) <= 2)
798 ++ if (sd->s_dentry == dentry)
799 + sd->s_dentry = NULL;
800 +
801 + spin_unlock(&configfs_dirent_lock);
802 +diff --git a/fs/inode.c b/fs/inode.c
803 +index cfc36d11bcb3..76f7535fe754 100644
804 +--- a/fs/inode.c
805 ++++ b/fs/inode.c
806 +@@ -1817,8 +1817,13 @@ int file_remove_privs(struct file *file)
807 + int kill;
808 + int error = 0;
809 +
810 +- /* Fast path for nothing security related */
811 +- if (IS_NOSEC(inode))
812 ++ /*
813 ++ * Fast path for nothing security related.
814 ++ * As well for non-regular files, e.g. blkdev inodes.
815 ++ * For example, blkdev_write_iter() might get here
816 ++ * trying to remove privs which it is not allowed to.
817 ++ */
818 ++ if (IS_NOSEC(inode) || !S_ISREG(inode->i_mode))
819 + return 0;
820 +
821 + kill = dentry_needs_remove_privs(dentry);
822 +diff --git a/include/linux/sched/mm.h b/include/linux/sched/mm.h
823 +index ef4ae0a545fe..9f7cc1d7ec4a 100644
824 +--- a/include/linux/sched/mm.h
825 ++++ b/include/linux/sched/mm.h
826 +@@ -62,6 +62,10 @@ static inline void mmdrop_async(struct mm_struct *mm)
827 + * followed by taking the mmap_sem for writing before modifying the
828 + * vmas or anything the coredump pretends not to change from under it.
829 + *
830 ++ * It also has to be called when mmgrab() is used in the context of
831 ++ * the process, but then the mm_count refcount is transferred outside
832 ++ * the context of the process to run down_write() on that pinned mm.
833 ++ *
834 + * NOTE: find_extend_vma() called from GUP context is the only place
835 + * that can modify the "mm" (notably the vm_start/end) under mmap_sem
836 + * for reading and outside the context of the process, so it is also
837 +diff --git a/kernel/events/ring_buffer.c b/kernel/events/ring_buffer.c
838 +index 489dc6b60053..f3a69a4f0d57 100644
839 +--- a/kernel/events/ring_buffer.c
840 ++++ b/kernel/events/ring_buffer.c
841 +@@ -49,14 +49,30 @@ static void perf_output_put_handle(struct perf_output_handle *handle)
842 + unsigned long head;
843 +
844 + again:
845 ++ /*
846 ++ * In order to avoid publishing a head value that goes backwards,
847 ++ * we must ensure the load of @rb->head happens after we've
848 ++ * incremented @rb->nest.
849 ++ *
850 ++ * Otherwise we can observe a @rb->head value before one published
851 ++ * by an IRQ/NMI happening between the load and the increment.
852 ++ */
853 ++ barrier();
854 + head = local_read(&rb->head);
855 +
856 + /*
857 +- * IRQ/NMI can happen here, which means we can miss a head update.
858 ++ * IRQ/NMI can happen here and advance @rb->head, causing our
859 ++ * load above to be stale.
860 + */
861 +
862 +- if (!local_dec_and_test(&rb->nest))
863 ++ /*
864 ++ * If this isn't the outermost nesting, we don't have to update
865 ++ * @rb->user_page->data_head.
866 ++ */
867 ++ if (local_read(&rb->nest) > 1) {
868 ++ local_dec(&rb->nest);
869 + goto out;
870 ++ }
871 +
872 + /*
873 + * Since the mmap() consumer (userspace) can run on a different CPU:
874 +@@ -85,12 +101,21 @@ again:
875 + * See perf_output_begin().
876 + */
877 + smp_wmb(); /* B, matches C */
878 +- rb->user_page->data_head = head;
879 ++ WRITE_ONCE(rb->user_page->data_head, head);
880 ++
881 ++ /*
882 ++ * We must publish the head before decrementing the nest count,
883 ++ * otherwise an IRQ/NMI can publish a more recent head value and our
884 ++ * write will (temporarily) publish a stale value.
885 ++ */
886 ++ barrier();
887 ++ local_set(&rb->nest, 0);
888 +
889 + /*
890 +- * Now check if we missed an update -- rely on previous implied
891 +- * compiler barriers to force a re-read.
892 ++ * Ensure we decrement @rb->nest before we validate the @rb->head.
893 ++ * Otherwise we cannot be sure we caught the 'last' nested update.
894 + */
895 ++ barrier();
896 + if (unlikely(head != local_read(&rb->head))) {
897 + local_inc(&rb->nest);
898 + goto again;
899 +@@ -464,7 +489,7 @@ void perf_aux_output_end(struct perf_output_handle *handle, unsigned long size)
900 + handle->aux_flags);
901 + }
902 +
903 +- rb->user_page->aux_head = rb->aux_head;
904 ++ WRITE_ONCE(rb->user_page->aux_head, rb->aux_head);
905 + if (rb_need_aux_wakeup(rb))
906 + wakeup = true;
907 +
908 +@@ -495,7 +520,7 @@ int perf_aux_output_skip(struct perf_output_handle *handle, unsigned long size)
909 +
910 + rb->aux_head += size;
911 +
912 +- rb->user_page->aux_head = rb->aux_head;
913 ++ WRITE_ONCE(rb->user_page->aux_head, rb->aux_head);
914 + if (rb_need_aux_wakeup(rb)) {
915 + perf_output_wakeup(handle);
916 + handle->wakeup = rb->aux_wakeup + rb->aux_watermark;
917 +diff --git a/mm/khugepaged.c b/mm/khugepaged.c
918 +index d27a73737f1a..acf66c5dc9bd 100644
919 +--- a/mm/khugepaged.c
920 ++++ b/mm/khugepaged.c
921 +@@ -1006,6 +1006,9 @@ static void collapse_huge_page(struct mm_struct *mm,
922 + * handled by the anon_vma lock + PG_lock.
923 + */
924 + down_write(&mm->mmap_sem);
925 ++ result = SCAN_ANY_PROCESS;
926 ++ if (!mmget_still_valid(mm))
927 ++ goto out;
928 + result = hugepage_vma_revalidate(mm, address, &vma);
929 + if (result)
930 + goto out;
931 +diff --git a/net/ax25/ax25_route.c b/net/ax25/ax25_route.c
932 +index 7f369f1db7ae..b8e1a5e6a9d3 100644
933 +--- a/net/ax25/ax25_route.c
934 ++++ b/net/ax25/ax25_route.c
935 +@@ -443,9 +443,11 @@ int ax25_rt_autobind(ax25_cb *ax25, ax25_address *addr)
936 + }
937 +
938 + if (ax25->sk != NULL) {
939 ++ local_bh_disable();
940 + bh_lock_sock(ax25->sk);
941 + sock_reset_flag(ax25->sk, SOCK_ZAPPED);
942 + bh_unlock_sock(ax25->sk);
943 ++ local_bh_enable();
944 + }
945 +
946 + put:
947 +diff --git a/net/core/neighbour.c b/net/core/neighbour.c
948 +index dd83a81db55f..04b0e399361a 100644
949 +--- a/net/core/neighbour.c
950 ++++ b/net/core/neighbour.c
951 +@@ -2743,6 +2743,7 @@ static void *neigh_get_idx_any(struct seq_file *seq, loff_t *pos)
952 + }
953 +
954 + void *neigh_seq_start(struct seq_file *seq, loff_t *pos, struct neigh_table *tbl, unsigned int neigh_seq_flags)
955 ++ __acquires(tbl->lock)
956 + __acquires(rcu_bh)
957 + {
958 + struct neigh_seq_state *state = seq->private;
959 +@@ -2753,6 +2754,7 @@ void *neigh_seq_start(struct seq_file *seq, loff_t *pos, struct neigh_table *tbl
960 +
961 + rcu_read_lock_bh();
962 + state->nht = rcu_dereference_bh(tbl->nht);
963 ++ read_lock(&tbl->lock);
964 +
965 + return *pos ? neigh_get_idx_any(seq, pos) : SEQ_START_TOKEN;
966 + }
967 +@@ -2786,8 +2788,13 @@ out:
968 + EXPORT_SYMBOL(neigh_seq_next);
969 +
970 + void neigh_seq_stop(struct seq_file *seq, void *v)
971 ++ __releases(tbl->lock)
972 + __releases(rcu_bh)
973 + {
974 ++ struct neigh_seq_state *state = seq->private;
975 ++ struct neigh_table *tbl = state->tbl;
976 ++
977 ++ read_unlock(&tbl->lock);
978 + rcu_read_unlock_bh();
979 + }
980 + EXPORT_SYMBOL(neigh_seq_stop);
981 +diff --git a/net/ipv6/ip6_flowlabel.c b/net/ipv6/ip6_flowlabel.c
982 +index 6fa2bc236d9e..c7458a606e2e 100644
983 +--- a/net/ipv6/ip6_flowlabel.c
984 ++++ b/net/ipv6/ip6_flowlabel.c
985 +@@ -254,9 +254,9 @@ struct ip6_flowlabel *fl6_sock_lookup(struct sock *sk, __be32 label)
986 + rcu_read_lock_bh();
987 + for_each_sk_fl_rcu(np, sfl) {
988 + struct ip6_flowlabel *fl = sfl->fl;
989 +- if (fl->label == label) {
990 ++
991 ++ if (fl->label == label && atomic_inc_not_zero(&fl->users)) {
992 + fl->lastuse = jiffies;
993 +- atomic_inc(&fl->users);
994 + rcu_read_unlock_bh();
995 + return fl;
996 + }
997 +@@ -623,7 +623,8 @@ int ipv6_flowlabel_opt(struct sock *sk, char __user *optval, int optlen)
998 + goto done;
999 + }
1000 + fl1 = sfl->fl;
1001 +- atomic_inc(&fl1->users);
1002 ++ if (!atomic_inc_not_zero(&fl1->users))
1003 ++ fl1 = NULL;
1004 + break;
1005 + }
1006 + }
1007 +diff --git a/net/lapb/lapb_iface.c b/net/lapb/lapb_iface.c
1008 +index e15314e3b464..299de0c0508e 100644
1009 +--- a/net/lapb/lapb_iface.c
1010 ++++ b/net/lapb/lapb_iface.c
1011 +@@ -182,6 +182,7 @@ int lapb_unregister(struct net_device *dev)
1012 + lapb = __lapb_devtostruct(dev);
1013 + if (!lapb)
1014 + goto out;
1015 ++ lapb_put(lapb);
1016 +
1017 + lapb_stop_t1timer(lapb);
1018 + lapb_stop_t2timer(lapb);
1019 +diff --git a/net/netfilter/ipvs/ip_vs_core.c b/net/netfilter/ipvs/ip_vs_core.c
1020 +index d1c0378144f3..ee97ce176b9a 100644
1021 +--- a/net/netfilter/ipvs/ip_vs_core.c
1022 ++++ b/net/netfilter/ipvs/ip_vs_core.c
1023 +@@ -2268,7 +2268,6 @@ static void __net_exit __ip_vs_cleanup(struct net *net)
1024 + {
1025 + struct netns_ipvs *ipvs = net_ipvs(net);
1026 +
1027 +- nf_unregister_net_hooks(net, ip_vs_ops, ARRAY_SIZE(ip_vs_ops));
1028 + ip_vs_service_net_cleanup(ipvs); /* ip_vs_flush() with locks */
1029 + ip_vs_conn_net_cleanup(ipvs);
1030 + ip_vs_app_net_cleanup(ipvs);
1031 +@@ -2283,6 +2282,7 @@ static void __net_exit __ip_vs_dev_cleanup(struct net *net)
1032 + {
1033 + struct netns_ipvs *ipvs = net_ipvs(net);
1034 + EnterFunction(2);
1035 ++ nf_unregister_net_hooks(net, ip_vs_ops, ARRAY_SIZE(ip_vs_ops));
1036 + ipvs->enable = 0; /* Disable packet reception */
1037 + smp_wmb();
1038 + ip_vs_sync_net_cleanup(ipvs);
1039 +diff --git a/net/netfilter/nf_queue.c b/net/netfilter/nf_queue.c
1040 +index f7e21953b1de..8260b1e73bbd 100644
1041 +--- a/net/netfilter/nf_queue.c
1042 ++++ b/net/netfilter/nf_queue.c
1043 +@@ -193,6 +193,7 @@ static unsigned int nf_iterate(struct sk_buff *skb,
1044 + repeat:
1045 + verdict = nf_hook_entry_hookfn(hook, skb, state);
1046 + if (verdict != NF_ACCEPT) {
1047 ++ *index = i;
1048 + if (verdict != NF_REPEAT)
1049 + return verdict;
1050 + goto repeat;
1051 +diff --git a/net/openvswitch/vport-internal_dev.c b/net/openvswitch/vport-internal_dev.c
1052 +index 04a3128adcf0..b9377afeaba4 100644
1053 +--- a/net/openvswitch/vport-internal_dev.c
1054 ++++ b/net/openvswitch/vport-internal_dev.c
1055 +@@ -176,7 +176,9 @@ static struct vport *internal_dev_create(const struct vport_parms *parms)
1056 + {
1057 + struct vport *vport;
1058 + struct internal_dev *internal_dev;
1059 ++ struct net_device *dev;
1060 + int err;
1061 ++ bool free_vport = true;
1062 +
1063 + vport = ovs_vport_alloc(0, &ovs_internal_vport_ops, parms);
1064 + if (IS_ERR(vport)) {
1065 +@@ -184,8 +186,9 @@ static struct vport *internal_dev_create(const struct vport_parms *parms)
1066 + goto error;
1067 + }
1068 +
1069 +- vport->dev = alloc_netdev(sizeof(struct internal_dev),
1070 +- parms->name, NET_NAME_USER, do_setup);
1071 ++ dev = alloc_netdev(sizeof(struct internal_dev),
1072 ++ parms->name, NET_NAME_USER, do_setup);
1073 ++ vport->dev = dev;
1074 + if (!vport->dev) {
1075 + err = -ENOMEM;
1076 + goto error_free_vport;
1077 +@@ -207,8 +210,10 @@ static struct vport *internal_dev_create(const struct vport_parms *parms)
1078 +
1079 + rtnl_lock();
1080 + err = register_netdevice(vport->dev);
1081 +- if (err)
1082 ++ if (err) {
1083 ++ free_vport = false;
1084 + goto error_unlock;
1085 ++ }
1086 +
1087 + dev_set_promiscuity(vport->dev, 1);
1088 + rtnl_unlock();
1089 +@@ -218,11 +223,12 @@ static struct vport *internal_dev_create(const struct vport_parms *parms)
1090 +
1091 + error_unlock:
1092 + rtnl_unlock();
1093 +- free_percpu(vport->dev->tstats);
1094 ++ free_percpu(dev->tstats);
1095 + error_free_netdev:
1096 +- free_netdev(vport->dev);
1097 ++ free_netdev(dev);
1098 + error_free_vport:
1099 +- ovs_vport_free(vport);
1100 ++ if (free_vport)
1101 ++ ovs_vport_free(vport);
1102 + error:
1103 + return ERR_PTR(err);
1104 + }
1105 +diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c
1106 +index 4edb4f5596b8..f67df16bd340 100644
1107 +--- a/net/sctp/sm_make_chunk.c
1108 ++++ b/net/sctp/sm_make_chunk.c
1109 +@@ -2586,6 +2586,8 @@ do_addr_param:
1110 + case SCTP_PARAM_STATE_COOKIE:
1111 + asoc->peer.cookie_len =
1112 + ntohs(param.p->length) - sizeof(struct sctp_paramhdr);
1113 ++ if (asoc->peer.cookie)
1114 ++ kfree(asoc->peer.cookie);
1115 + asoc->peer.cookie = kmemdup(param.cookie->body, asoc->peer.cookie_len, gfp);
1116 + if (!asoc->peer.cookie)
1117 + retval = 0;
1118 +@@ -2650,6 +2652,8 @@ do_addr_param:
1119 + goto fall_through;
1120 +
1121 + /* Save peer's random parameter */
1122 ++ if (asoc->peer.peer_random)
1123 ++ kfree(asoc->peer.peer_random);
1124 + asoc->peer.peer_random = kmemdup(param.p,
1125 + ntohs(param.p->length), gfp);
1126 + if (!asoc->peer.peer_random) {
1127 +@@ -2663,6 +2667,8 @@ do_addr_param:
1128 + goto fall_through;
1129 +
1130 + /* Save peer's HMAC list */
1131 ++ if (asoc->peer.peer_hmacs)
1132 ++ kfree(asoc->peer.peer_hmacs);
1133 + asoc->peer.peer_hmacs = kmemdup(param.p,
1134 + ntohs(param.p->length), gfp);
1135 + if (!asoc->peer.peer_hmacs) {
1136 +@@ -2678,6 +2684,8 @@ do_addr_param:
1137 + if (!ep->auth_enable)
1138 + goto fall_through;
1139 +
1140 ++ if (asoc->peer.peer_chunks)
1141 ++ kfree(asoc->peer.peer_chunks);
1142 + asoc->peer.peer_chunks = kmemdup(param.p,
1143 + ntohs(param.p->length), gfp);
1144 + if (!asoc->peer.peer_chunks)
1145 +diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
1146 +index 65fb1e7edb9c..d349f69ef03c 100644
1147 +--- a/sound/pci/hda/hda_intel.c
1148 ++++ b/sound/pci/hda/hda_intel.c
1149 +@@ -376,6 +376,7 @@ enum {
1150 +
1151 + #define IS_BXT(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x5a98)
1152 + #define IS_CFL(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0xa348)
1153 ++#define IS_CNL(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x9dc8)
1154 +
1155 + static char *driver_short_names[] = {
1156 + [AZX_DRIVER_ICH] = "HDA Intel",
1157 +@@ -1751,8 +1752,8 @@ static int azx_create(struct snd_card *card, struct pci_dev *pci,
1158 + else
1159 + chip->bdl_pos_adj = bdl_pos_adj[dev];
1160 +
1161 +- /* Workaround for a communication error on CFL (bko#199007) */
1162 +- if (IS_CFL(pci))
1163 ++ /* Workaround for a communication error on CFL (bko#199007) and CNL */
1164 ++ if (IS_CFL(pci) || IS_CNL(pci))
1165 + chip->polling_mode = 1;
1166 +
1167 + err = azx_bus_init(chip, model[dev], &pci_hda_io_ops);
1168 +diff --git a/tools/perf/arch/s390/util/machine.c b/tools/perf/arch/s390/util/machine.c
1169 +index 0b2054007314..a19690a17291 100644
1170 +--- a/tools/perf/arch/s390/util/machine.c
1171 ++++ b/tools/perf/arch/s390/util/machine.c
1172 +@@ -5,16 +5,19 @@
1173 + #include "util.h"
1174 + #include "machine.h"
1175 + #include "api/fs/fs.h"
1176 ++#include "debug.h"
1177 +
1178 + int arch__fix_module_text_start(u64 *start, const char *name)
1179 + {
1180 ++ u64 m_start = *start;
1181 + char path[PATH_MAX];
1182 +
1183 + snprintf(path, PATH_MAX, "module/%.*s/sections/.text",
1184 + (int)strlen(name) - 2, name + 1);
1185 +-
1186 +- if (sysfs__read_ull(path, (unsigned long long *)start) < 0)
1187 +- return -1;
1188 ++ if (sysfs__read_ull(path, (unsigned long long *)start) < 0) {
1189 ++ pr_debug2("Using module %s start:%#lx\n", path, m_start);
1190 ++ *start = m_start;
1191 ++ }
1192 +
1193 + return 0;
1194 + }
1195 +diff --git a/tools/perf/util/data-convert-bt.c b/tools/perf/util/data-convert-bt.c
1196 +index 2346cecb8ea2..5131304ea3a8 100644
1197 +--- a/tools/perf/util/data-convert-bt.c
1198 ++++ b/tools/perf/util/data-convert-bt.c
1199 +@@ -271,7 +271,7 @@ static int string_set_value(struct bt_ctf_field *field, const char *string)
1200 + if (i > 0)
1201 + strncpy(buffer, string, i);
1202 + }
1203 +- strncat(buffer + p, numstr, 4);
1204 ++ memcpy(buffer + p, numstr, 4);
1205 + p += 3;
1206 + }
1207 + }
1208 +diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
1209 +index 968fd0454e6b..d246080cd85e 100644
1210 +--- a/tools/perf/util/machine.c
1211 ++++ b/tools/perf/util/machine.c
1212 +@@ -156,6 +156,9 @@ void machine__delete_threads(struct machine *machine)
1213 +
1214 + void machine__exit(struct machine *machine)
1215 + {
1216 ++ if (machine == NULL)
1217 ++ return;
1218 ++
1219 + machine__destroy_kernel_maps(machine);
1220 + map_groups__exit(&machine->kmaps);
1221 + dsos__exit(&machine->dsos);
1222 +diff --git a/tools/testing/selftests/netfilter/nft_nat.sh b/tools/testing/selftests/netfilter/nft_nat.sh
1223 +index 8ec76681605c..f25f72a75cf3 100755
1224 +--- a/tools/testing/selftests/netfilter/nft_nat.sh
1225 ++++ b/tools/testing/selftests/netfilter/nft_nat.sh
1226 +@@ -23,7 +23,11 @@ ip netns add ns0
1227 + ip netns add ns1
1228 + ip netns add ns2
1229 +
1230 +-ip link add veth0 netns ns0 type veth peer name eth0 netns ns1
1231 ++ip link add veth0 netns ns0 type veth peer name eth0 netns ns1 > /dev/null 2>&1
1232 ++if [ $? -ne 0 ];then
1233 ++ echo "SKIP: No virtual ethernet pair device support in kernel"
1234 ++ exit $ksft_skip
1235 ++fi
1236 + ip link add veth1 netns ns0 type veth peer name eth0 netns ns2
1237 +
1238 + ip -net ns0 link set lo up