Gentoo Archives: gentoo-commits

From: Alice Ferrazzi <alicef@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/linux-patches:5.4 commit in: /
Date: Wed, 28 Apr 2021 11:52:09
Message-Id: 1619610694.e52146d165c2dd6f04efda226ca7db12993d2113.alicef@gentoo
1 commit: e52146d165c2dd6f04efda226ca7db12993d2113
2 Author: Alice Ferrazzi <alicef <AT> gentoo <DOT> org>
3 AuthorDate: Wed Apr 28 11:51:26 2021 +0000
4 Commit: Alice Ferrazzi <alicef <AT> gentoo <DOT> org>
5 CommitDate: Wed Apr 28 11:51:34 2021 +0000
6 URL: https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=e52146d1
7
8 linux patch 5.4.115
9
10 Signed-off-by: Alice Ferrazzi <alicef <AT> gentoo.org>
11
12 0000_README | 4 +
13 1114_linux-5.4.115.patch | 592 +++++++++++++++++++++++++++++++++++++++++++++++
14 2 files changed, 596 insertions(+)
15
16 diff --git a/0000_README b/0000_README
17 index 95ce3e1..bd18287 100644
18 --- a/0000_README
19 +++ b/0000_README
20 @@ -499,6 +499,10 @@ Patch: 1113_linux-5.4.114.patch
21 From: http://www.kernel.org
22 Desc: Linux 5.4.114
23
24 +Patch: 1114_linux-5.4.115.patch
25 +From: http://www.kernel.org
26 +Desc: Linux 5.4.115
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/1114_linux-5.4.115.patch b/1114_linux-5.4.115.patch
33 new file mode 100644
34 index 0000000..462430d
35 --- /dev/null
36 +++ b/1114_linux-5.4.115.patch
37 @@ -0,0 +1,592 @@
38 +diff --git a/Makefile b/Makefile
39 +index 355e05ba065cb..f473f4fe5a0c3 100644
40 +--- a/Makefile
41 ++++ b/Makefile
42 +@@ -1,7 +1,7 @@
43 + # SPDX-License-Identifier: GPL-2.0
44 + VERSION = 5
45 + PATCHLEVEL = 4
46 +-SUBLEVEL = 114
47 ++SUBLEVEL = 115
48 + EXTRAVERSION =
49 + NAME = Kleptomaniac Octopus
50 +
51 +diff --git a/arch/arm/boot/dts/omap3.dtsi b/arch/arm/boot/dts/omap3.dtsi
52 +index 4043ecb380168..0c8fcfb292bf9 100644
53 +--- a/arch/arm/boot/dts/omap3.dtsi
54 ++++ b/arch/arm/boot/dts/omap3.dtsi
55 +@@ -23,6 +23,9 @@
56 + i2c0 = &i2c1;
57 + i2c1 = &i2c2;
58 + i2c2 = &i2c3;
59 ++ mmc0 = &mmc1;
60 ++ mmc1 = &mmc2;
61 ++ mmc2 = &mmc3;
62 + serial0 = &uart1;
63 + serial1 = &uart2;
64 + serial2 = &uart3;
65 +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-lts.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-lts.dts
66 +index 8d15164f2a3c6..7eb252adf9f03 100644
67 +--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-lts.dts
68 ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-lts.dts
69 +@@ -13,5 +13,5 @@
70 + };
71 +
72 + &mmc0 {
73 +- cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 push-push switch */
74 ++ broken-cd; /* card detect is broken on *some* boards */
75 + };
76 +diff --git a/arch/csky/Kconfig b/arch/csky/Kconfig
77 +index 48b2e1b591193..4f48a2f0513b7 100644
78 +--- a/arch/csky/Kconfig
79 ++++ b/arch/csky/Kconfig
80 +@@ -220,7 +220,7 @@ config FORCE_MAX_ZONEORDER
81 + int "Maximum zone order"
82 + default "11"
83 +
84 +-config RAM_BASE
85 ++config DRAM_BASE
86 + hex "DRAM start addr (the same with memory-section in dts)"
87 + default 0x0
88 +
89 +diff --git a/arch/csky/include/asm/page.h b/arch/csky/include/asm/page.h
90 +index 9738eacefdc7e..62bb307459caf 100644
91 +--- a/arch/csky/include/asm/page.h
92 ++++ b/arch/csky/include/asm/page.h
93 +@@ -28,7 +28,7 @@
94 + #define SSEG_SIZE 0x20000000
95 + #define LOWMEM_LIMIT (SSEG_SIZE * 2)
96 +
97 +-#define PHYS_OFFSET_OFFSET (CONFIG_RAM_BASE & (SSEG_SIZE - 1))
98 ++#define PHYS_OFFSET_OFFSET (CONFIG_DRAM_BASE & (SSEG_SIZE - 1))
99 +
100 + #ifndef __ASSEMBLY__
101 +
102 +diff --git a/arch/ia64/mm/discontig.c b/arch/ia64/mm/discontig.c
103 +index 4f33f6e7e2065..41d243c0c6267 100644
104 +--- a/arch/ia64/mm/discontig.c
105 ++++ b/arch/ia64/mm/discontig.c
106 +@@ -95,7 +95,7 @@ static int __init build_node_maps(unsigned long start, unsigned long len,
107 + * acpi_boot_init() (which builds the node_to_cpu_mask array) hasn't been
108 + * called yet. Note that node 0 will also count all non-existent cpus.
109 + */
110 +-static int __meminit early_nr_cpus_node(int node)
111 ++static int early_nr_cpus_node(int node)
112 + {
113 + int cpu, n = 0;
114 +
115 +@@ -110,7 +110,7 @@ static int __meminit early_nr_cpus_node(int node)
116 + * compute_pernodesize - compute size of pernode data
117 + * @node: the node id.
118 + */
119 +-static unsigned long __meminit compute_pernodesize(int node)
120 ++static unsigned long compute_pernodesize(int node)
121 + {
122 + unsigned long pernodesize = 0, cpus;
123 +
124 +@@ -367,7 +367,7 @@ static void __init reserve_pernode_space(void)
125 + }
126 + }
127 +
128 +-static void __meminit scatter_node_data(void)
129 ++static void scatter_node_data(void)
130 + {
131 + pg_data_t **dst;
132 + int node;
133 +diff --git a/arch/s390/kernel/entry.S b/arch/s390/kernel/entry.S
134 +index c544b7a11ebb3..5cba1815b8f8f 100644
135 +--- a/arch/s390/kernel/entry.S
136 ++++ b/arch/s390/kernel/entry.S
137 +@@ -993,6 +993,7 @@ ENDPROC(ext_int_handler)
138 + * Load idle PSW. The second "half" of this function is in .Lcleanup_idle.
139 + */
140 + ENTRY(psw_idle)
141 ++ stg %r14,(__SF_GPRS+8*8)(%r15)
142 + stg %r3,__SF_EMPTY(%r15)
143 + larl %r1,.Lpsw_idle_lpsw+4
144 + stg %r1,__SF_EMPTY+8(%r15)
145 +diff --git a/arch/s390/kernel/ptrace.c b/arch/s390/kernel/ptrace.c
146 +index c6aef2ecf2890..ad74472ce967e 100644
147 +--- a/arch/s390/kernel/ptrace.c
148 ++++ b/arch/s390/kernel/ptrace.c
149 +@@ -867,6 +867,7 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request,
150 + asmlinkage long do_syscall_trace_enter(struct pt_regs *regs)
151 + {
152 + unsigned long mask = -1UL;
153 ++ long ret = -1;
154 +
155 + /*
156 + * The sysc_tracesys code in entry.S stored the system
157 +@@ -878,27 +879,33 @@ asmlinkage long do_syscall_trace_enter(struct pt_regs *regs)
158 + * Tracing decided this syscall should not happen. Skip
159 + * the system call and the system call restart handling.
160 + */
161 +- clear_pt_regs_flag(regs, PIF_SYSCALL);
162 +- return -1;
163 ++ goto skip;
164 + }
165 +
166 + /* Do the secure computing check after ptrace. */
167 + if (secure_computing(NULL)) {
168 + /* seccomp failures shouldn't expose any additional code. */
169 +- return -1;
170 ++ goto skip;
171 + }
172 +
173 + if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
174 +- trace_sys_enter(regs, regs->gprs[2]);
175 ++ trace_sys_enter(regs, regs->int_code & 0xffff);
176 +
177 + if (is_compat_task())
178 + mask = 0xffffffff;
179 +
180 +- audit_syscall_entry(regs->gprs[2], regs->orig_gpr2 & mask,
181 ++ audit_syscall_entry(regs->int_code & 0xffff, regs->orig_gpr2 & mask,
182 + regs->gprs[3] &mask, regs->gprs[4] &mask,
183 + regs->gprs[5] &mask);
184 +
185 ++ if ((signed long)regs->gprs[2] >= NR_syscalls) {
186 ++ regs->gprs[2] = -ENOSYS;
187 ++ ret = -ENOSYS;
188 ++ }
189 + return regs->gprs[2];
190 ++skip:
191 ++ clear_pt_regs_flag(regs, PIF_SYSCALL);
192 ++ return ret;
193 + }
194 +
195 + asmlinkage void do_syscall_trace_exit(struct pt_regs *regs)
196 +diff --git a/arch/x86/events/intel/core.c b/arch/x86/events/intel/core.c
197 +index 90760393a9643..9cb3266e148dc 100644
198 +--- a/arch/x86/events/intel/core.c
199 ++++ b/arch/x86/events/intel/core.c
200 +@@ -3999,7 +3999,7 @@ static const struct x86_cpu_desc isolation_ucodes[] = {
201 + INTEL_CPU_DESC(INTEL_FAM6_BROADWELL_D, 3, 0x07000009),
202 + INTEL_CPU_DESC(INTEL_FAM6_BROADWELL_D, 4, 0x0f000009),
203 + INTEL_CPU_DESC(INTEL_FAM6_BROADWELL_D, 5, 0x0e000002),
204 +- INTEL_CPU_DESC(INTEL_FAM6_BROADWELL_X, 2, 0x0b000014),
205 ++ INTEL_CPU_DESC(INTEL_FAM6_BROADWELL_X, 1, 0x0b000014),
206 + INTEL_CPU_DESC(INTEL_FAM6_SKYLAKE_X, 3, 0x00000021),
207 + INTEL_CPU_DESC(INTEL_FAM6_SKYLAKE_X, 4, 0x00000000),
208 + INTEL_CPU_DESC(INTEL_FAM6_SKYLAKE_X, 5, 0x00000000),
209 +diff --git a/arch/x86/events/intel/uncore_snbep.c b/arch/x86/events/intel/uncore_snbep.c
210 +index ad20220af303a..40751af62dd3d 100644
211 +--- a/arch/x86/events/intel/uncore_snbep.c
212 ++++ b/arch/x86/events/intel/uncore_snbep.c
213 +@@ -1093,7 +1093,6 @@ enum {
214 + SNBEP_PCI_QPI_PORT0_FILTER,
215 + SNBEP_PCI_QPI_PORT1_FILTER,
216 + BDX_PCI_QPI_PORT2_FILTER,
217 +- HSWEP_PCI_PCU_3,
218 + };
219 +
220 + static int snbep_qpi_hw_config(struct intel_uncore_box *box, struct perf_event *event)
221 +@@ -2750,22 +2749,33 @@ static struct intel_uncore_type *hswep_msr_uncores[] = {
222 + NULL,
223 + };
224 +
225 +-void hswep_uncore_cpu_init(void)
226 ++#define HSWEP_PCU_DID 0x2fc0
227 ++#define HSWEP_PCU_CAPID4_OFFET 0x94
228 ++#define hswep_get_chop(_cap) (((_cap) >> 6) & 0x3)
229 ++
230 ++static bool hswep_has_limit_sbox(unsigned int device)
231 + {
232 +- int pkg = boot_cpu_data.logical_proc_id;
233 ++ struct pci_dev *dev = pci_get_device(PCI_VENDOR_ID_INTEL, device, NULL);
234 ++ u32 capid4;
235 ++
236 ++ if (!dev)
237 ++ return false;
238 ++
239 ++ pci_read_config_dword(dev, HSWEP_PCU_CAPID4_OFFET, &capid4);
240 ++ if (!hswep_get_chop(capid4))
241 ++ return true;
242 +
243 ++ return false;
244 ++}
245 ++
246 ++void hswep_uncore_cpu_init(void)
247 ++{
248 + if (hswep_uncore_cbox.num_boxes > boot_cpu_data.x86_max_cores)
249 + hswep_uncore_cbox.num_boxes = boot_cpu_data.x86_max_cores;
250 +
251 + /* Detect 6-8 core systems with only two SBOXes */
252 +- if (uncore_extra_pci_dev[pkg].dev[HSWEP_PCI_PCU_3]) {
253 +- u32 capid4;
254 +-
255 +- pci_read_config_dword(uncore_extra_pci_dev[pkg].dev[HSWEP_PCI_PCU_3],
256 +- 0x94, &capid4);
257 +- if (((capid4 >> 6) & 0x3) == 0)
258 +- hswep_uncore_sbox.num_boxes = 2;
259 +- }
260 ++ if (hswep_has_limit_sbox(HSWEP_PCU_DID))
261 ++ hswep_uncore_sbox.num_boxes = 2;
262 +
263 + uncore_msr_uncores = hswep_msr_uncores;
264 + }
265 +@@ -3028,11 +3038,6 @@ static const struct pci_device_id hswep_uncore_pci_ids[] = {
266 + .driver_data = UNCORE_PCI_DEV_DATA(UNCORE_EXTRA_PCI_DEV,
267 + SNBEP_PCI_QPI_PORT1_FILTER),
268 + },
269 +- { /* PCU.3 (for Capability registers) */
270 +- PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x2fc0),
271 +- .driver_data = UNCORE_PCI_DEV_DATA(UNCORE_EXTRA_PCI_DEV,
272 +- HSWEP_PCI_PCU_3),
273 +- },
274 + { /* end: all zeroes */ }
275 + };
276 +
277 +@@ -3124,27 +3129,18 @@ static struct event_constraint bdx_uncore_pcu_constraints[] = {
278 + EVENT_CONSTRAINT_END
279 + };
280 +
281 ++#define BDX_PCU_DID 0x6fc0
282 ++
283 + void bdx_uncore_cpu_init(void)
284 + {
285 +- int pkg = topology_phys_to_logical_pkg(boot_cpu_data.phys_proc_id);
286 +-
287 + if (bdx_uncore_cbox.num_boxes > boot_cpu_data.x86_max_cores)
288 + bdx_uncore_cbox.num_boxes = boot_cpu_data.x86_max_cores;
289 + uncore_msr_uncores = bdx_msr_uncores;
290 +
291 +- /* BDX-DE doesn't have SBOX */
292 +- if (boot_cpu_data.x86_model == 86) {
293 +- uncore_msr_uncores[BDX_MSR_UNCORE_SBOX] = NULL;
294 + /* Detect systems with no SBOXes */
295 +- } else if (uncore_extra_pci_dev[pkg].dev[HSWEP_PCI_PCU_3]) {
296 +- struct pci_dev *pdev;
297 +- u32 capid4;
298 +-
299 +- pdev = uncore_extra_pci_dev[pkg].dev[HSWEP_PCI_PCU_3];
300 +- pci_read_config_dword(pdev, 0x94, &capid4);
301 +- if (((capid4 >> 6) & 0x3) == 0)
302 +- bdx_msr_uncores[BDX_MSR_UNCORE_SBOX] = NULL;
303 +- }
304 ++ if ((boot_cpu_data.x86_model == 86) || hswep_has_limit_sbox(BDX_PCU_DID))
305 ++ uncore_msr_uncores[BDX_MSR_UNCORE_SBOX] = NULL;
306 ++
307 + hswep_uncore_pcu.constraints = bdx_uncore_pcu_constraints;
308 + }
309 +
310 +@@ -3365,11 +3361,6 @@ static const struct pci_device_id bdx_uncore_pci_ids[] = {
311 + .driver_data = UNCORE_PCI_DEV_DATA(UNCORE_EXTRA_PCI_DEV,
312 + BDX_PCI_QPI_PORT2_FILTER),
313 + },
314 +- { /* PCU.3 (for Capability registers) */
315 +- PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x6fc0),
316 +- .driver_data = UNCORE_PCI_DEV_DATA(UNCORE_EXTRA_PCI_DEV,
317 +- HSWEP_PCI_PCU_3),
318 +- },
319 + { /* end: all zeroes */ }
320 + };
321 +
322 +diff --git a/arch/x86/kernel/crash.c b/arch/x86/kernel/crash.c
323 +index ff25a2ea271cf..0c319d09378dd 100644
324 +--- a/arch/x86/kernel/crash.c
325 ++++ b/arch/x86/kernel/crash.c
326 +@@ -364,7 +364,7 @@ int crash_setup_memmap_entries(struct kimage *image, struct boot_params *params)
327 + struct crash_memmap_data cmd;
328 + struct crash_mem *cmem;
329 +
330 +- cmem = vzalloc(sizeof(struct crash_mem));
331 ++ cmem = vzalloc(struct_size(cmem, ranges, 1));
332 + if (!cmem)
333 + return -ENOMEM;
334 +
335 +diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
336 +index d0f27084a9420..ce6954390cfd4 100644
337 +--- a/drivers/gpio/gpio-omap.c
338 ++++ b/drivers/gpio/gpio-omap.c
339 +@@ -29,6 +29,7 @@
340 + #define OMAP4_GPIO_DEBOUNCINGTIME_MASK 0xFF
341 +
342 + struct gpio_regs {
343 ++ u32 sysconfig;
344 + u32 irqenable1;
345 + u32 irqenable2;
346 + u32 wake_en;
347 +@@ -1058,6 +1059,7 @@ static void omap_gpio_init_context(struct gpio_bank *p)
348 + const struct omap_gpio_reg_offs *regs = p->regs;
349 + void __iomem *base = p->base;
350 +
351 ++ p->context.sysconfig = readl_relaxed(base + regs->sysconfig);
352 + p->context.ctrl = readl_relaxed(base + regs->ctrl);
353 + p->context.oe = readl_relaxed(base + regs->direction);
354 + p->context.wake_en = readl_relaxed(base + regs->wkup_en);
355 +@@ -1077,6 +1079,7 @@ static void omap_gpio_restore_context(struct gpio_bank *bank)
356 + const struct omap_gpio_reg_offs *regs = bank->regs;
357 + void __iomem *base = bank->base;
358 +
359 ++ writel_relaxed(bank->context.sysconfig, base + regs->sysconfig);
360 + writel_relaxed(bank->context.wake_en, base + regs->wkup_en);
361 + writel_relaxed(bank->context.ctrl, base + regs->ctrl);
362 + writel_relaxed(bank->context.leveldetect0, base + regs->leveldetect0);
363 +@@ -1104,6 +1107,10 @@ static void omap_gpio_idle(struct gpio_bank *bank, bool may_lose_context)
364 +
365 + bank->saved_datain = readl_relaxed(base + bank->regs->datain);
366 +
367 ++ /* Save syconfig, it's runtime value can be different from init value */
368 ++ if (bank->loses_context)
369 ++ bank->context.sysconfig = readl_relaxed(base + bank->regs->sysconfig);
370 ++
371 + if (!bank->enabled_non_wakeup_gpios)
372 + goto update_gpio_context_count;
373 +
374 +@@ -1259,6 +1266,7 @@ static int gpio_omap_cpu_notifier(struct notifier_block *nb,
375 +
376 + static const struct omap_gpio_reg_offs omap2_gpio_regs = {
377 + .revision = OMAP24XX_GPIO_REVISION,
378 ++ .sysconfig = OMAP24XX_GPIO_SYSCONFIG,
379 + .direction = OMAP24XX_GPIO_OE,
380 + .datain = OMAP24XX_GPIO_DATAIN,
381 + .dataout = OMAP24XX_GPIO_DATAOUT,
382 +@@ -1282,6 +1290,7 @@ static const struct omap_gpio_reg_offs omap2_gpio_regs = {
383 +
384 + static const struct omap_gpio_reg_offs omap4_gpio_regs = {
385 + .revision = OMAP4_GPIO_REVISION,
386 ++ .sysconfig = OMAP4_GPIO_SYSCONFIG,
387 + .direction = OMAP4_GPIO_OE,
388 + .datain = OMAP4_GPIO_DATAIN,
389 + .dataout = OMAP4_GPIO_DATAOUT,
390 +diff --git a/drivers/hid/hid-alps.c b/drivers/hid/hid-alps.c
391 +index d33f5abc8f64d..2477b2a3f7c3a 100644
392 +--- a/drivers/hid/hid-alps.c
393 ++++ b/drivers/hid/hid-alps.c
394 +@@ -762,6 +762,7 @@ static int alps_input_configured(struct hid_device *hdev, struct hid_input *hi)
395 +
396 + if (input_register_device(data->input2)) {
397 + input_free_device(input2);
398 ++ ret = -ENOENT;
399 + goto exit;
400 + }
401 + }
402 +diff --git a/drivers/hid/hid-google-hammer.c b/drivers/hid/hid-google-hammer.c
403 +index aeb351658ad34..505ed76a830e8 100644
404 +--- a/drivers/hid/hid-google-hammer.c
405 ++++ b/drivers/hid/hid-google-hammer.c
406 +@@ -467,6 +467,8 @@ static int hammer_probe(struct hid_device *hdev,
407 +
408 +
409 + static const struct hid_device_id hammer_devices[] = {
410 ++ { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC,
411 ++ USB_VENDOR_ID_GOOGLE, USB_DEVICE_ID_GOOGLE_DON) },
412 + { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC,
413 + USB_VENDOR_ID_GOOGLE, USB_DEVICE_ID_GOOGLE_HAMMER) },
414 + { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC,
415 +diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
416 +index d004f5645b30c..d9e8105045a6d 100644
417 +--- a/drivers/hid/hid-ids.h
418 ++++ b/drivers/hid/hid-ids.h
419 +@@ -488,6 +488,7 @@
420 + #define USB_DEVICE_ID_GOOGLE_MASTERBALL 0x503c
421 + #define USB_DEVICE_ID_GOOGLE_MAGNEMITE 0x503d
422 + #define USB_DEVICE_ID_GOOGLE_MOONBALL 0x5044
423 ++#define USB_DEVICE_ID_GOOGLE_DON 0x5050
424 +
425 + #define USB_VENDOR_ID_GOTOP 0x08f2
426 + #define USB_DEVICE_ID_SUPER_Q2 0x007f
427 +diff --git a/drivers/hid/wacom_wac.c b/drivers/hid/wacom_wac.c
428 +index bf0621e446199..b21cf764afc0d 100644
429 +--- a/drivers/hid/wacom_wac.c
430 ++++ b/drivers/hid/wacom_wac.c
431 +@@ -2533,7 +2533,7 @@ static void wacom_wac_finger_slot(struct wacom_wac *wacom_wac,
432 + !wacom_wac->shared->is_touch_on) {
433 + if (!wacom_wac->shared->touch_down)
434 + return;
435 +- prox = 0;
436 ++ prox = false;
437 + }
438 +
439 + wacom_wac->hid_data.num_received++;
440 +diff --git a/drivers/net/ethernet/cavium/liquidio/cn66xx_regs.h b/drivers/net/ethernet/cavium/liquidio/cn66xx_regs.h
441 +index b248966837b4c..7aad40b2aa736 100644
442 +--- a/drivers/net/ethernet/cavium/liquidio/cn66xx_regs.h
443 ++++ b/drivers/net/ethernet/cavium/liquidio/cn66xx_regs.h
444 +@@ -412,7 +412,7 @@
445 + | CN6XXX_INTR_M0UNWI_ERR \
446 + | CN6XXX_INTR_M1UPB0_ERR \
447 + | CN6XXX_INTR_M1UPWI_ERR \
448 +- | CN6XXX_INTR_M1UPB0_ERR \
449 ++ | CN6XXX_INTR_M1UNB0_ERR \
450 + | CN6XXX_INTR_M1UNWI_ERR \
451 + | CN6XXX_INTR_INSTR_DB_OF_ERR \
452 + | CN6XXX_INTR_SLIST_DB_OF_ERR \
453 +diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c
454 +index c7ec3d24eabc8..c33a08d65208c 100644
455 +--- a/drivers/net/geneve.c
456 ++++ b/drivers/net/geneve.c
457 +@@ -891,6 +891,9 @@ static int geneve_xmit_skb(struct sk_buff *skb, struct net_device *dev,
458 + __be16 sport;
459 + int err;
460 +
461 ++ if (!pskb_network_may_pull(skb, sizeof(struct iphdr)))
462 ++ return -EINVAL;
463 ++
464 + sport = udp_flow_src_port(geneve->net, skb, 1, USHRT_MAX, true);
465 + rt = geneve_get_v4_rt(skb, dev, gs4, &fl4, info,
466 + geneve->info.key.tp_dst, sport);
467 +@@ -954,6 +957,9 @@ static int geneve6_xmit_skb(struct sk_buff *skb, struct net_device *dev,
468 + __be16 sport;
469 + int err;
470 +
471 ++ if (!pskb_network_may_pull(skb, sizeof(struct ipv6hdr)))
472 ++ return -EINVAL;
473 ++
474 + sport = udp_flow_src_port(geneve->net, skb, 1, USHRT_MAX, true);
475 + dst = geneve_get_v6_dst(skb, dev, gs6, &fl6, info,
476 + geneve->info.key.tp_dst, sport);
477 +diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c
478 +index 38f39154a6433..02de9480d3f06 100644
479 +--- a/drivers/net/usb/hso.c
480 ++++ b/drivers/net/usb/hso.c
481 +@@ -3105,7 +3105,7 @@ static void hso_free_interface(struct usb_interface *interface)
482 + cancel_work_sync(&serial_table[i]->async_put_intf);
483 + cancel_work_sync(&serial_table[i]->async_get_intf);
484 + hso_serial_tty_unregister(serial);
485 +- kref_put(&serial_table[i]->ref, hso_serial_ref_free);
486 ++ kref_put(&serial->parent->ref, hso_serial_ref_free);
487 + }
488 + }
489 +
490 +diff --git a/drivers/net/xen-netback/xenbus.c b/drivers/net/xen-netback/xenbus.c
491 +index 9e61a6f294641..416305e6d0932 100644
492 +--- a/drivers/net/xen-netback/xenbus.c
493 ++++ b/drivers/net/xen-netback/xenbus.c
494 +@@ -979,11 +979,15 @@ static void connect(struct backend_info *be)
495 + xenvif_carrier_on(be->vif);
496 +
497 + unregister_hotplug_status_watch(be);
498 +- err = xenbus_watch_pathfmt(dev, &be->hotplug_status_watch, NULL,
499 +- hotplug_status_changed,
500 +- "%s/%s", dev->nodename, "hotplug-status");
501 +- if (!err)
502 ++ if (xenbus_exists(XBT_NIL, dev->nodename, "hotplug-status")) {
503 ++ err = xenbus_watch_pathfmt(dev, &be->hotplug_status_watch,
504 ++ NULL, hotplug_status_changed,
505 ++ "%s/%s", dev->nodename,
506 ++ "hotplug-status");
507 ++ if (err)
508 ++ goto err;
509 + be->have_hotplug_status_watch = 1;
510 ++ }
511 +
512 + netif_tx_wake_all_queues(be->vif->dev);
513 +
514 +diff --git a/drivers/pinctrl/intel/pinctrl-lewisburg.c b/drivers/pinctrl/intel/pinctrl-lewisburg.c
515 +index 7fdf4257df1ed..ad4b446d588e6 100644
516 +--- a/drivers/pinctrl/intel/pinctrl-lewisburg.c
517 ++++ b/drivers/pinctrl/intel/pinctrl-lewisburg.c
518 +@@ -299,9 +299,9 @@ static const struct pinctrl_pin_desc lbg_pins[] = {
519 + static const struct intel_community lbg_communities[] = {
520 + LBG_COMMUNITY(0, 0, 71),
521 + LBG_COMMUNITY(1, 72, 132),
522 +- LBG_COMMUNITY(3, 133, 144),
523 +- LBG_COMMUNITY(4, 145, 180),
524 +- LBG_COMMUNITY(5, 181, 246),
525 ++ LBG_COMMUNITY(3, 133, 143),
526 ++ LBG_COMMUNITY(4, 144, 178),
527 ++ LBG_COMMUNITY(5, 179, 246),
528 + };
529 +
530 + static const struct intel_pinctrl_soc_data lbg_soc_data = {
531 +diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
532 +index 2b672840dfd9a..68d57b45273aa 100644
533 +--- a/drivers/usb/class/cdc-acm.c
534 ++++ b/drivers/usb/class/cdc-acm.c
535 +@@ -1650,12 +1650,13 @@ static int acm_resume(struct usb_interface *intf)
536 + struct urb *urb;
537 + int rv = 0;
538 +
539 +- acm_unpoison_urbs(acm);
540 + spin_lock_irq(&acm->write_lock);
541 +
542 + if (--acm->susp_count)
543 + goto out;
544 +
545 ++ acm_unpoison_urbs(acm);
546 ++
547 + if (tty_port_initialized(&acm->port)) {
548 + rv = usb_submit_urb(acm->ctrlurb, GFP_ATOMIC);
549 +
550 +diff --git a/include/linux/platform_data/gpio-omap.h b/include/linux/platform_data/gpio-omap.h
551 +index 8b30b14b47d3f..f377817ce75c1 100644
552 +--- a/include/linux/platform_data/gpio-omap.h
553 ++++ b/include/linux/platform_data/gpio-omap.h
554 +@@ -85,6 +85,7 @@
555 + * omap2+ specific GPIO registers
556 + */
557 + #define OMAP24XX_GPIO_REVISION 0x0000
558 ++#define OMAP24XX_GPIO_SYSCONFIG 0x0010
559 + #define OMAP24XX_GPIO_IRQSTATUS1 0x0018
560 + #define OMAP24XX_GPIO_IRQSTATUS2 0x0028
561 + #define OMAP24XX_GPIO_IRQENABLE2 0x002c
562 +@@ -108,6 +109,7 @@
563 + #define OMAP24XX_GPIO_SETDATAOUT 0x0094
564 +
565 + #define OMAP4_GPIO_REVISION 0x0000
566 ++#define OMAP4_GPIO_SYSCONFIG 0x0010
567 + #define OMAP4_GPIO_EOI 0x0020
568 + #define OMAP4_GPIO_IRQSTATUSRAW0 0x0024
569 + #define OMAP4_GPIO_IRQSTATUSRAW1 0x0028
570 +@@ -148,6 +150,7 @@
571 + #ifndef __ASSEMBLER__
572 + struct omap_gpio_reg_offs {
573 + u16 revision;
574 ++ u16 sysconfig;
575 + u16 direction;
576 + u16 datain;
577 + u16 dataout;
578 +diff --git a/kernel/locking/qrwlock.c b/kernel/locking/qrwlock.c
579 +index fe9ca92faa2a7..909b0bf22a1ec 100644
580 +--- a/kernel/locking/qrwlock.c
581 ++++ b/kernel/locking/qrwlock.c
582 +@@ -61,6 +61,8 @@ EXPORT_SYMBOL(queued_read_lock_slowpath);
583 + */
584 + void queued_write_lock_slowpath(struct qrwlock *lock)
585 + {
586 ++ int cnts;
587 ++
588 + /* Put the writer into the wait queue */
589 + arch_spin_lock(&lock->wait_lock);
590 +
591 +@@ -74,9 +76,8 @@ void queued_write_lock_slowpath(struct qrwlock *lock)
592 +
593 + /* When no more readers or writers, set the locked flag */
594 + do {
595 +- atomic_cond_read_acquire(&lock->cnts, VAL == _QW_WAITING);
596 +- } while (atomic_cmpxchg_relaxed(&lock->cnts, _QW_WAITING,
597 +- _QW_LOCKED) != _QW_WAITING);
598 ++ cnts = atomic_cond_read_relaxed(&lock->cnts, VAL == _QW_WAITING);
599 ++ } while (!atomic_try_cmpxchg_acquire(&lock->cnts, &cnts, _QW_LOCKED));
600 + unlock:
601 + arch_spin_unlock(&lock->wait_lock);
602 + }
603 +diff --git a/tools/arch/ia64/include/asm/barrier.h b/tools/arch/ia64/include/asm/barrier.h
604 +index 4d471d9511a54..6fffe56827134 100644
605 +--- a/tools/arch/ia64/include/asm/barrier.h
606 ++++ b/tools/arch/ia64/include/asm/barrier.h
607 +@@ -39,9 +39,6 @@
608 + * sequential memory pages only.
609 + */
610 +
611 +-/* XXX From arch/ia64/include/uapi/asm/gcc_intrin.h */
612 +-#define ia64_mf() asm volatile ("mf" ::: "memory")
613 +-
614 + #define mb() ia64_mf()
615 + #define rmb() mb()
616 + #define wmb() mb()
617 +diff --git a/tools/perf/util/auxtrace.c b/tools/perf/util/auxtrace.c
618 +index 61b8dc45428ff..ae5b97427192f 100644
619 +--- a/tools/perf/util/auxtrace.c
620 ++++ b/tools/perf/util/auxtrace.c
621 +@@ -586,7 +586,7 @@ int auxtrace_parse_snapshot_options(struct auxtrace_record *itr,
622 + break;
623 + }
624 +
625 +- if (itr)
626 ++ if (itr && itr->parse_snapshot_options)
627 + return itr->parse_snapshot_options(itr, opts, str);
628 +
629 + pr_err("No AUX area tracing to snapshot\n");