Magellan Linux

Contents of /trunk/kernel-alx/patches-5.4/0214-5.4.115-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3635 - (show annotations) (download)
Mon Oct 24 12:34:12 2022 UTC (18 months, 1 week 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");