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