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"); |