Annotation of /trunk/kernel-alx-legacy/patches-4.9/0136-4.9.37-all-fixes.patch
Parent Directory | Revision Log
Revision 3608 -
(hide annotations)
(download)
Fri Aug 14 07:34:29 2020 UTC (4 years, 1 month ago) by niro
File size: 38337 byte(s)
Fri Aug 14 07:34:29 2020 UTC (4 years, 1 month ago) by niro
File size: 38337 byte(s)
-added kerenl-alx-legacy pkg
1 | niro | 3608 | diff --git a/Makefile b/Makefile |
2 | index 4263dca12f07..342e19adbf7f 100644 | ||
3 | --- a/Makefile | ||
4 | +++ b/Makefile | ||
5 | @@ -1,6 +1,6 @@ | ||
6 | VERSION = 4 | ||
7 | PATCHLEVEL = 9 | ||
8 | -SUBLEVEL = 36 | ||
9 | +SUBLEVEL = 37 | ||
10 | EXTRAVERSION = | ||
11 | NAME = Roaring Lionus | ||
12 | |||
13 | diff --git a/arch/x86/lib/copy_user_64.S b/arch/x86/lib/copy_user_64.S | ||
14 | index d376e4b48f88..04c067bafe24 100644 | ||
15 | --- a/arch/x86/lib/copy_user_64.S | ||
16 | +++ b/arch/x86/lib/copy_user_64.S | ||
17 | @@ -84,7 +84,7 @@ ENTRY(copy_user_generic_unrolled) | ||
18 | movl %edx,%ecx | ||
19 | andl $63,%edx | ||
20 | shrl $6,%ecx | ||
21 | - jz 17f | ||
22 | + jz .L_copy_short_string | ||
23 | 1: movq (%rsi),%r8 | ||
24 | 2: movq 1*8(%rsi),%r9 | ||
25 | 3: movq 2*8(%rsi),%r10 | ||
26 | @@ -105,7 +105,8 @@ ENTRY(copy_user_generic_unrolled) | ||
27 | leaq 64(%rdi),%rdi | ||
28 | decl %ecx | ||
29 | jnz 1b | ||
30 | -17: movl %edx,%ecx | ||
31 | +.L_copy_short_string: | ||
32 | + movl %edx,%ecx | ||
33 | andl $7,%edx | ||
34 | shrl $3,%ecx | ||
35 | jz 20f | ||
36 | @@ -221,6 +222,8 @@ EXPORT_SYMBOL(copy_user_generic_string) | ||
37 | */ | ||
38 | ENTRY(copy_user_enhanced_fast_string) | ||
39 | ASM_STAC | ||
40 | + cmpl $64,%edx | ||
41 | + jb .L_copy_short_string /* less then 64 bytes, avoid the costly 'rep' */ | ||
42 | movl %edx,%ecx | ||
43 | 1: rep | ||
44 | movsb | ||
45 | diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c | ||
46 | index 0c2fae8d929d..73eb7fd4aec4 100644 | ||
47 | --- a/arch/x86/tools/relocs.c | ||
48 | +++ b/arch/x86/tools/relocs.c | ||
49 | @@ -992,11 +992,12 @@ static void emit_relocs(int as_text, int use_real_mode) | ||
50 | die("Segment relocations found but --realmode not specified\n"); | ||
51 | |||
52 | /* Order the relocations for more efficient processing */ | ||
53 | - sort_relocs(&relocs16); | ||
54 | sort_relocs(&relocs32); | ||
55 | #if ELF_BITS == 64 | ||
56 | sort_relocs(&relocs32neg); | ||
57 | sort_relocs(&relocs64); | ||
58 | +#else | ||
59 | + sort_relocs(&relocs16); | ||
60 | #endif | ||
61 | |||
62 | /* Print the relocations */ | ||
63 | diff --git a/crypto/drbg.c b/crypto/drbg.c | ||
64 | index 123d211efa12..8cac3d31a5f8 100644 | ||
65 | --- a/crypto/drbg.c | ||
66 | +++ b/crypto/drbg.c | ||
67 | @@ -1691,6 +1691,7 @@ static int drbg_init_sym_kernel(struct drbg_state *drbg) | ||
68 | return PTR_ERR(sk_tfm); | ||
69 | } | ||
70 | drbg->ctr_handle = sk_tfm; | ||
71 | + init_completion(&drbg->ctr_completion); | ||
72 | |||
73 | req = skcipher_request_alloc(sk_tfm, GFP_KERNEL); | ||
74 | if (!req) { | ||
75 | diff --git a/drivers/base/platform.c b/drivers/base/platform.c | ||
76 | index c4af00385502..5eba47815bb6 100644 | ||
77 | --- a/drivers/base/platform.c | ||
78 | +++ b/drivers/base/platform.c | ||
79 | @@ -856,7 +856,7 @@ static ssize_t driver_override_store(struct device *dev, | ||
80 | const char *buf, size_t count) | ||
81 | { | ||
82 | struct platform_device *pdev = to_platform_device(dev); | ||
83 | - char *driver_override, *old = pdev->driver_override, *cp; | ||
84 | + char *driver_override, *old, *cp; | ||
85 | |||
86 | if (count > PATH_MAX) | ||
87 | return -EINVAL; | ||
88 | @@ -869,12 +869,15 @@ static ssize_t driver_override_store(struct device *dev, | ||
89 | if (cp) | ||
90 | *cp = '\0'; | ||
91 | |||
92 | + device_lock(dev); | ||
93 | + old = pdev->driver_override; | ||
94 | if (strlen(driver_override)) { | ||
95 | pdev->driver_override = driver_override; | ||
96 | } else { | ||
97 | kfree(driver_override); | ||
98 | pdev->driver_override = NULL; | ||
99 | } | ||
100 | + device_unlock(dev); | ||
101 | |||
102 | kfree(old); | ||
103 | |||
104 | @@ -885,8 +888,12 @@ static ssize_t driver_override_show(struct device *dev, | ||
105 | struct device_attribute *attr, char *buf) | ||
106 | { | ||
107 | struct platform_device *pdev = to_platform_device(dev); | ||
108 | + ssize_t len; | ||
109 | |||
110 | - return sprintf(buf, "%s\n", pdev->driver_override); | ||
111 | + device_lock(dev); | ||
112 | + len = sprintf(buf, "%s\n", pdev->driver_override); | ||
113 | + device_unlock(dev); | ||
114 | + return len; | ||
115 | } | ||
116 | static DEVICE_ATTR_RW(driver_override); | ||
117 | |||
118 | diff --git a/drivers/char/tpm/tpm-sysfs.c b/drivers/char/tpm/tpm-sysfs.c | ||
119 | index a76ab4af9fb2..47005840c42c 100644 | ||
120 | --- a/drivers/char/tpm/tpm-sysfs.c | ||
121 | +++ b/drivers/char/tpm/tpm-sysfs.c | ||
122 | @@ -35,9 +35,10 @@ static ssize_t pubek_show(struct device *dev, struct device_attribute *attr, | ||
123 | ssize_t err; | ||
124 | int i, rc; | ||
125 | char *str = buf; | ||
126 | - | ||
127 | struct tpm_chip *chip = to_tpm_chip(dev); | ||
128 | |||
129 | + memset(&tpm_cmd, 0, sizeof(tpm_cmd)); | ||
130 | + | ||
131 | tpm_cmd.header.in = tpm_readpubek_header; | ||
132 | err = tpm_transmit_cmd(chip, &tpm_cmd, READ_PUBEK_RESULT_SIZE, 0, | ||
133 | "attempting to read the PUBEK"); | ||
134 | diff --git a/drivers/gpu/drm/virtio/virtgpu_object.c b/drivers/gpu/drm/virtio/virtgpu_object.c | ||
135 | index 1483daebe057..6f66b7347cd0 100644 | ||
136 | --- a/drivers/gpu/drm/virtio/virtgpu_object.c | ||
137 | +++ b/drivers/gpu/drm/virtio/virtgpu_object.c | ||
138 | @@ -81,8 +81,10 @@ int virtio_gpu_object_create(struct virtio_gpu_device *vgdev, | ||
139 | return -ENOMEM; | ||
140 | size = roundup(size, PAGE_SIZE); | ||
141 | ret = drm_gem_object_init(vgdev->ddev, &bo->gem_base, size); | ||
142 | - if (ret != 0) | ||
143 | + if (ret != 0) { | ||
144 | + kfree(bo); | ||
145 | return ret; | ||
146 | + } | ||
147 | bo->dumb = false; | ||
148 | virtio_gpu_init_ttm_placement(bo, pinned); | ||
149 | |||
150 | diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c | ||
151 | index cb3f515a2285..01e3a37b0aef 100644 | ||
152 | --- a/drivers/infiniband/core/uverbs_cmd.c | ||
153 | +++ b/drivers/infiniband/core/uverbs_cmd.c | ||
154 | @@ -2342,6 +2342,10 @@ ssize_t ib_uverbs_modify_qp(struct ib_uverbs_file *file, | ||
155 | if (copy_from_user(&cmd, buf, sizeof cmd)) | ||
156 | return -EFAULT; | ||
157 | |||
158 | + if (cmd.port_num < rdma_start_port(ib_dev) || | ||
159 | + cmd.port_num > rdma_end_port(ib_dev)) | ||
160 | + return -EINVAL; | ||
161 | + | ||
162 | INIT_UDATA(&udata, buf + sizeof cmd, NULL, in_len - sizeof cmd, | ||
163 | out_len); | ||
164 | |||
165 | @@ -2882,6 +2886,10 @@ ssize_t ib_uverbs_create_ah(struct ib_uverbs_file *file, | ||
166 | if (copy_from_user(&cmd, buf, sizeof cmd)) | ||
167 | return -EFAULT; | ||
168 | |||
169 | + if (cmd.attr.port_num < rdma_start_port(ib_dev) || | ||
170 | + cmd.attr.port_num > rdma_end_port(ib_dev)) | ||
171 | + return -EINVAL; | ||
172 | + | ||
173 | uobj = kmalloc(sizeof *uobj, GFP_KERNEL); | ||
174 | if (!uobj) | ||
175 | return -ENOMEM; | ||
176 | diff --git a/drivers/media/media-entity.c b/drivers/media/media-entity.c | ||
177 | index c68239e60487..98b067b712b3 100644 | ||
178 | --- a/drivers/media/media-entity.c | ||
179 | +++ b/drivers/media/media-entity.c | ||
180 | @@ -468,7 +468,7 @@ __must_check int __media_entity_pipeline_start(struct media_entity *entity, | ||
181 | |||
182 | while ((entity_err = media_entity_graph_walk_next(graph))) { | ||
183 | /* don't let the stream_count go negative */ | ||
184 | - if (entity->stream_count > 0) { | ||
185 | + if (entity_err->stream_count > 0) { | ||
186 | entity_err->stream_count--; | ||
187 | if (entity_err->stream_count == 0) | ||
188 | entity_err->pipe = NULL; | ||
189 | diff --git a/drivers/net/wireless/ath/ath10k/pci.c b/drivers/net/wireless/ath/ath10k/pci.c | ||
190 | index 6063cf439d3d..410bcdaa9e87 100644 | ||
191 | --- a/drivers/net/wireless/ath/ath10k/pci.c | ||
192 | +++ b/drivers/net/wireless/ath/ath10k/pci.c | ||
193 | @@ -3133,7 +3133,7 @@ int ath10k_pci_setup_resource(struct ath10k *ar) | ||
194 | setup_timer(&ar_pci->rx_post_retry, ath10k_pci_rx_replenish_retry, | ||
195 | (unsigned long)ar); | ||
196 | |||
197 | - if (QCA_REV_6174(ar)) | ||
198 | + if (QCA_REV_6174(ar) || QCA_REV_9377(ar)) | ||
199 | ath10k_pci_override_ce_config(ar); | ||
200 | |||
201 | ret = ath10k_pci_alloc_pipes(ar); | ||
202 | diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c | ||
203 | index d3bad5779376..0fd7d7ed07ce 100644 | ||
204 | --- a/drivers/net/wireless/mac80211_hwsim.c | ||
205 | +++ b/drivers/net/wireless/mac80211_hwsim.c | ||
206 | @@ -2662,7 +2662,7 @@ static int mac80211_hwsim_new_radio(struct genl_info *info, | ||
207 | |||
208 | tasklet_hrtimer_init(&data->beacon_timer, | ||
209 | mac80211_hwsim_beacon, | ||
210 | - CLOCK_MONOTONIC_RAW, HRTIMER_MODE_ABS); | ||
211 | + CLOCK_MONOTONIC, HRTIMER_MODE_ABS); | ||
212 | |||
213 | spin_lock_bh(&hwsim_radio_lock); | ||
214 | list_add_tail(&data->list, &hwsim_radios); | ||
215 | diff --git a/drivers/pinctrl/freescale/pinctrl-mxs.c b/drivers/pinctrl/freescale/pinctrl-mxs.c | ||
216 | index 41b5b07d5a2b..6852010a6d70 100644 | ||
217 | --- a/drivers/pinctrl/freescale/pinctrl-mxs.c | ||
218 | +++ b/drivers/pinctrl/freescale/pinctrl-mxs.c | ||
219 | @@ -194,6 +194,16 @@ static int mxs_pinctrl_get_func_groups(struct pinctrl_dev *pctldev, | ||
220 | return 0; | ||
221 | } | ||
222 | |||
223 | +static void mxs_pinctrl_rmwl(u32 value, u32 mask, u8 shift, void __iomem *reg) | ||
224 | +{ | ||
225 | + u32 tmp; | ||
226 | + | ||
227 | + tmp = readl(reg); | ||
228 | + tmp &= ~(mask << shift); | ||
229 | + tmp |= value << shift; | ||
230 | + writel(tmp, reg); | ||
231 | +} | ||
232 | + | ||
233 | static int mxs_pinctrl_set_mux(struct pinctrl_dev *pctldev, unsigned selector, | ||
234 | unsigned group) | ||
235 | { | ||
236 | @@ -211,8 +221,7 @@ static int mxs_pinctrl_set_mux(struct pinctrl_dev *pctldev, unsigned selector, | ||
237 | reg += bank * 0x20 + pin / 16 * 0x10; | ||
238 | shift = pin % 16 * 2; | ||
239 | |||
240 | - writel(0x3 << shift, reg + CLR); | ||
241 | - writel(g->muxsel[i] << shift, reg + SET); | ||
242 | + mxs_pinctrl_rmwl(g->muxsel[i], 0x3, shift, reg); | ||
243 | } | ||
244 | |||
245 | return 0; | ||
246 | @@ -279,8 +288,7 @@ static int mxs_pinconf_group_set(struct pinctrl_dev *pctldev, | ||
247 | /* mA */ | ||
248 | if (config & MA_PRESENT) { | ||
249 | shift = pin % 8 * 4; | ||
250 | - writel(0x3 << shift, reg + CLR); | ||
251 | - writel(ma << shift, reg + SET); | ||
252 | + mxs_pinctrl_rmwl(ma, 0x3, shift, reg); | ||
253 | } | ||
254 | |||
255 | /* vol */ | ||
256 | diff --git a/drivers/pinctrl/intel/pinctrl-cherryview.c b/drivers/pinctrl/intel/pinctrl-cherryview.c | ||
257 | index c43b1e9a06af..0d34d8a4ab14 100644 | ||
258 | --- a/drivers/pinctrl/intel/pinctrl-cherryview.c | ||
259 | +++ b/drivers/pinctrl/intel/pinctrl-cherryview.c | ||
260 | @@ -13,6 +13,7 @@ | ||
261 | * published by the Free Software Foundation. | ||
262 | */ | ||
263 | |||
264 | +#include <linux/dmi.h> | ||
265 | #include <linux/kernel.h> | ||
266 | #include <linux/module.h> | ||
267 | #include <linux/init.h> | ||
268 | @@ -1524,10 +1525,32 @@ static void chv_gpio_irq_handler(struct irq_desc *desc) | ||
269 | chained_irq_exit(chip, desc); | ||
270 | } | ||
271 | |||
272 | +/* | ||
273 | + * Certain machines seem to hardcode Linux IRQ numbers in their ACPI | ||
274 | + * tables. Since we leave GPIOs that are not capable of generating | ||
275 | + * interrupts out of the irqdomain the numbering will be different and | ||
276 | + * cause devices using the hardcoded IRQ numbers fail. In order not to | ||
277 | + * break such machines we will only mask pins from irqdomain if the machine | ||
278 | + * is not listed below. | ||
279 | + */ | ||
280 | +static const struct dmi_system_id chv_no_valid_mask[] = { | ||
281 | + { | ||
282 | + /* See https://bugzilla.kernel.org/show_bug.cgi?id=194945 */ | ||
283 | + .ident = "Acer Chromebook (CYAN)", | ||
284 | + .matches = { | ||
285 | + DMI_MATCH(DMI_SYS_VENDOR, "GOOGLE"), | ||
286 | + DMI_MATCH(DMI_PRODUCT_NAME, "Edgar"), | ||
287 | + DMI_MATCH(DMI_BIOS_DATE, "05/21/2016"), | ||
288 | + }, | ||
289 | + }, | ||
290 | + {} | ||
291 | +}; | ||
292 | + | ||
293 | static int chv_gpio_probe(struct chv_pinctrl *pctrl, int irq) | ||
294 | { | ||
295 | const struct chv_gpio_pinrange *range; | ||
296 | struct gpio_chip *chip = &pctrl->chip; | ||
297 | + bool need_valid_mask = !dmi_check_system(chv_no_valid_mask); | ||
298 | int ret, i, offset; | ||
299 | |||
300 | *chip = chv_gpio_chip; | ||
301 | @@ -1536,7 +1559,7 @@ static int chv_gpio_probe(struct chv_pinctrl *pctrl, int irq) | ||
302 | chip->label = dev_name(pctrl->dev); | ||
303 | chip->parent = pctrl->dev; | ||
304 | chip->base = -1; | ||
305 | - chip->irq_need_valid_mask = true; | ||
306 | + chip->irq_need_valid_mask = need_valid_mask; | ||
307 | |||
308 | ret = devm_gpiochip_add_data(pctrl->dev, chip, pctrl); | ||
309 | if (ret) { | ||
310 | @@ -1567,7 +1590,7 @@ static int chv_gpio_probe(struct chv_pinctrl *pctrl, int irq) | ||
311 | intsel &= CHV_PADCTRL0_INTSEL_MASK; | ||
312 | intsel >>= CHV_PADCTRL0_INTSEL_SHIFT; | ||
313 | |||
314 | - if (intsel >= pctrl->community->nirqs) | ||
315 | + if (need_valid_mask && intsel >= pctrl->community->nirqs) | ||
316 | clear_bit(i, chip->irq_valid_mask); | ||
317 | } | ||
318 | |||
319 | diff --git a/drivers/pinctrl/meson/pinctrl-meson8b.c b/drivers/pinctrl/meson/pinctrl-meson8b.c | ||
320 | index 76f077f18193..f87ef5a0ee6c 100644 | ||
321 | --- a/drivers/pinctrl/meson/pinctrl-meson8b.c | ||
322 | +++ b/drivers/pinctrl/meson/pinctrl-meson8b.c | ||
323 | @@ -739,8 +739,8 @@ static const char * const sdxc_c_groups[] = { | ||
324 | static const char * const nand_groups[] = { | ||
325 | "nand_io", "nand_io_ce0", "nand_io_ce1", | ||
326 | "nand_io_rb0", "nand_ale", "nand_cle", | ||
327 | - "nand_wen_clk", "nand_ren_clk", "nand_dqs0", | ||
328 | - "nand_dqs1" | ||
329 | + "nand_wen_clk", "nand_ren_clk", "nand_dqs_0", | ||
330 | + "nand_dqs_1" | ||
331 | }; | ||
332 | |||
333 | static const char * const nor_groups[] = { | ||
334 | diff --git a/drivers/pinctrl/qcom/pinctrl-ipq4019.c b/drivers/pinctrl/qcom/pinctrl-ipq4019.c | ||
335 | index b68ae424cee2..743d1f458205 100644 | ||
336 | --- a/drivers/pinctrl/qcom/pinctrl-ipq4019.c | ||
337 | +++ b/drivers/pinctrl/qcom/pinctrl-ipq4019.c | ||
338 | @@ -405,6 +405,36 @@ static const struct msm_pingroup ipq4019_groups[] = { | ||
339 | PINGROUP(67, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
340 | PINGROUP(68, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
341 | PINGROUP(69, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
342 | + PINGROUP(70, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
343 | + PINGROUP(71, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
344 | + PINGROUP(72, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
345 | + PINGROUP(73, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
346 | + PINGROUP(74, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
347 | + PINGROUP(75, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
348 | + PINGROUP(76, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
349 | + PINGROUP(77, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
350 | + PINGROUP(78, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
351 | + PINGROUP(79, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
352 | + PINGROUP(80, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
353 | + PINGROUP(81, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
354 | + PINGROUP(82, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
355 | + PINGROUP(83, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
356 | + PINGROUP(84, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
357 | + PINGROUP(85, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
358 | + PINGROUP(86, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
359 | + PINGROUP(87, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
360 | + PINGROUP(88, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
361 | + PINGROUP(89, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
362 | + PINGROUP(90, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
363 | + PINGROUP(91, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
364 | + PINGROUP(92, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
365 | + PINGROUP(93, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
366 | + PINGROUP(94, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
367 | + PINGROUP(95, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
368 | + PINGROUP(96, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
369 | + PINGROUP(97, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
370 | + PINGROUP(98, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
371 | + PINGROUP(99, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), | ||
372 | }; | ||
373 | |||
374 | static const struct msm_pinctrl_soc_data ipq4019_pinctrl = { | ||
375 | diff --git a/drivers/pinctrl/sh-pfc/core.c b/drivers/pinctrl/sh-pfc/core.c | ||
376 | index cf80ce1dd7ce..4a5a0feb931b 100644 | ||
377 | --- a/drivers/pinctrl/sh-pfc/core.c | ||
378 | +++ b/drivers/pinctrl/sh-pfc/core.c | ||
379 | @@ -586,6 +586,9 @@ static int sh_pfc_probe(struct platform_device *pdev) | ||
380 | ret = info->ops->init(pfc); | ||
381 | if (ret < 0) | ||
382 | return ret; | ||
383 | + | ||
384 | + /* .init() may have overridden pfc->info */ | ||
385 | + info = pfc->info; | ||
386 | } | ||
387 | |||
388 | /* Enable dummy states for those platforms without pinctrl support */ | ||
389 | diff --git a/drivers/pinctrl/sh-pfc/pfc-r8a7791.c b/drivers/pinctrl/sh-pfc/pfc-r8a7791.c | ||
390 | index 7ca37c3019ab..baa98d7fe947 100644 | ||
391 | --- a/drivers/pinctrl/sh-pfc/pfc-r8a7791.c | ||
392 | +++ b/drivers/pinctrl/sh-pfc/pfc-r8a7791.c | ||
393 | @@ -203,7 +203,7 @@ enum { | ||
394 | |||
395 | /* IPSR6 */ | ||
396 | FN_AUDIO_CLKB, FN_STP_OPWM_0_B, FN_MSIOF1_SCK_B, | ||
397 | - FN_SCIF_CLK, FN_BPFCLK_E, | ||
398 | + FN_SCIF_CLK, FN_DVC_MUTE, FN_BPFCLK_E, | ||
399 | FN_AUDIO_CLKC, FN_SCIFB0_SCK_C, FN_MSIOF1_SYNC_B, FN_RX2, | ||
400 | FN_SCIFA2_RXD, FN_FMIN_E, | ||
401 | FN_AUDIO_CLKOUT, FN_MSIOF1_SS1_B, FN_TX2, FN_SCIFA2_TXD, | ||
402 | @@ -573,7 +573,7 @@ enum { | ||
403 | |||
404 | /* IPSR6 */ | ||
405 | AUDIO_CLKB_MARK, STP_OPWM_0_B_MARK, MSIOF1_SCK_B_MARK, | ||
406 | - SCIF_CLK_MARK, BPFCLK_E_MARK, | ||
407 | + SCIF_CLK_MARK, DVC_MUTE_MARK, BPFCLK_E_MARK, | ||
408 | AUDIO_CLKC_MARK, SCIFB0_SCK_C_MARK, MSIOF1_SYNC_B_MARK, RX2_MARK, | ||
409 | SCIFA2_RXD_MARK, FMIN_E_MARK, | ||
410 | AUDIO_CLKOUT_MARK, MSIOF1_SS1_B_MARK, TX2_MARK, SCIFA2_TXD_MARK, | ||
411 | @@ -1010,14 +1010,17 @@ static const u16 pinmux_data[] = { | ||
412 | PINMUX_IPSR_MSEL(IP4_12_10, SCL2, SEL_IIC2_0), | ||
413 | PINMUX_IPSR_MSEL(IP4_12_10, GPS_CLK_B, SEL_GPS_1), | ||
414 | PINMUX_IPSR_MSEL(IP4_12_10, GLO_Q0_D, SEL_GPS_3), | ||
415 | + PINMUX_IPSR_MSEL(IP4_12_10, HSCK1_E, SEL_HSCIF1_4), | ||
416 | PINMUX_IPSR_GPSR(IP4_15_13, SSI_WS2), | ||
417 | PINMUX_IPSR_MSEL(IP4_15_13, SDA2, SEL_IIC2_0), | ||
418 | PINMUX_IPSR_MSEL(IP4_15_13, GPS_SIGN_B, SEL_GPS_1), | ||
419 | PINMUX_IPSR_MSEL(IP4_15_13, RX2_E, SEL_SCIF2_4), | ||
420 | PINMUX_IPSR_MSEL(IP4_15_13, GLO_Q1_D, SEL_GPS_3), | ||
421 | + PINMUX_IPSR_MSEL(IP4_15_13, HCTS1_N_E, SEL_HSCIF1_4), | ||
422 | PINMUX_IPSR_GPSR(IP4_18_16, SSI_SDATA2), | ||
423 | PINMUX_IPSR_MSEL(IP4_18_16, GPS_MAG_B, SEL_GPS_1), | ||
424 | PINMUX_IPSR_MSEL(IP4_18_16, TX2_E, SEL_SCIF2_4), | ||
425 | + PINMUX_IPSR_MSEL(IP4_18_16, HRTS1_N_E, SEL_HSCIF1_4), | ||
426 | PINMUX_IPSR_GPSR(IP4_19, SSI_SCK34), | ||
427 | PINMUX_IPSR_GPSR(IP4_20, SSI_WS34), | ||
428 | PINMUX_IPSR_GPSR(IP4_21, SSI_SDATA3), | ||
429 | @@ -1090,6 +1093,7 @@ static const u16 pinmux_data[] = { | ||
430 | PINMUX_IPSR_MSEL(IP6_2_0, STP_OPWM_0_B, SEL_SSP_1), | ||
431 | PINMUX_IPSR_MSEL(IP6_2_0, MSIOF1_SCK_B, SEL_SOF1_1), | ||
432 | PINMUX_IPSR_MSEL(IP6_2_0, SCIF_CLK, SEL_SCIF_0), | ||
433 | + PINMUX_IPSR_GPSR(IP6_2_0, DVC_MUTE), | ||
434 | PINMUX_IPSR_MSEL(IP6_2_0, BPFCLK_E, SEL_FM_4), | ||
435 | PINMUX_IPSR_GPSR(IP6_5_3, AUDIO_CLKC), | ||
436 | PINMUX_IPSR_MSEL(IP6_5_3, SCIFB0_SCK_C, SEL_SCIFB_2), | ||
437 | @@ -1099,7 +1103,7 @@ static const u16 pinmux_data[] = { | ||
438 | PINMUX_IPSR_MSEL(IP6_5_3, FMIN_E, SEL_FM_4), | ||
439 | PINMUX_IPSR_GPSR(IP6_7_6, AUDIO_CLKOUT), | ||
440 | PINMUX_IPSR_MSEL(IP6_7_6, MSIOF1_SS1_B, SEL_SOF1_1), | ||
441 | - PINMUX_IPSR_MSEL(IP6_5_3, TX2, SEL_SCIF2_0), | ||
442 | + PINMUX_IPSR_MSEL(IP6_7_6, TX2, SEL_SCIF2_0), | ||
443 | PINMUX_IPSR_MSEL(IP6_7_6, SCIFA2_TXD, SEL_SCIFA2_0), | ||
444 | PINMUX_IPSR_GPSR(IP6_9_8, IRQ0), | ||
445 | PINMUX_IPSR_MSEL(IP6_9_8, SCIFB1_RXD_D, SEL_SCIFB1_3), | ||
446 | @@ -5810,7 +5814,7 @@ static const struct pinmux_cfg_reg pinmux_config_regs[] = { | ||
447 | 0, 0, | ||
448 | /* IP6_2_0 [3] */ | ||
449 | FN_AUDIO_CLKB, FN_STP_OPWM_0_B, FN_MSIOF1_SCK_B, | ||
450 | - FN_SCIF_CLK, 0, FN_BPFCLK_E, | ||
451 | + FN_SCIF_CLK, FN_DVC_MUTE, FN_BPFCLK_E, | ||
452 | 0, 0, } | ||
453 | }, | ||
454 | { PINMUX_CFG_REG_VAR("IPSR7", 0xE606003C, 32, | ||
455 | diff --git a/drivers/pinctrl/sh-pfc/pfc-r8a7794.c b/drivers/pinctrl/sh-pfc/pfc-r8a7794.c | ||
456 | index ed734f560c84..ef093ac0cf2f 100644 | ||
457 | --- a/drivers/pinctrl/sh-pfc/pfc-r8a7794.c | ||
458 | +++ b/drivers/pinctrl/sh-pfc/pfc-r8a7794.c | ||
459 | @@ -281,8 +281,8 @@ enum { | ||
460 | FN_AVB_AVTP_CAPTURE, FN_ETH_CRS_DV_B, FN_SSI_WS1, FN_SCIF1_TXD_B, | ||
461 | FN_IIC1_SDA_C, FN_VI1_DATA0, FN_CAN0_TX_D, FN_AVB_AVTP_MATCH, | ||
462 | FN_ETH_RX_ER_B, FN_SSI_SDATA1, FN_HSCIF1_HRX_B, FN_SDATA, FN_VI1_DATA1, | ||
463 | - FN_ATAG0_N, FN_ETH_RXD0_B, FN_SSI_SCK2, FN_HSCIF1_HTX_B, FN_VI1_DATA2, | ||
464 | - FN_MDATA, FN_ATAWR0_N, FN_ETH_RXD1_B, | ||
465 | + FN_ATAWR0_N, FN_ETH_RXD0_B, FN_SSI_SCK2, FN_HSCIF1_HTX_B, FN_VI1_DATA2, | ||
466 | + FN_MDATA, FN_ATAG0_N, FN_ETH_RXD1_B, | ||
467 | |||
468 | /* IPSR13 */ | ||
469 | FN_SSI_WS2, FN_HSCIF1_HCTS_N_B, FN_SCIFA0_RXD_D, FN_VI1_DATA3, FN_SCKZ, | ||
470 | @@ -575,8 +575,8 @@ enum { | ||
471 | ETH_CRS_DV_B_MARK, SSI_WS1_MARK, SCIF1_TXD_B_MARK, IIC1_SDA_C_MARK, | ||
472 | VI1_DATA0_MARK, CAN0_TX_D_MARK, AVB_AVTP_MATCH_MARK, ETH_RX_ER_B_MARK, | ||
473 | SSI_SDATA1_MARK, HSCIF1_HRX_B_MARK, VI1_DATA1_MARK, SDATA_MARK, | ||
474 | - ATAG0_N_MARK, ETH_RXD0_B_MARK, SSI_SCK2_MARK, HSCIF1_HTX_B_MARK, | ||
475 | - VI1_DATA2_MARK, MDATA_MARK, ATAWR0_N_MARK, ETH_RXD1_B_MARK, | ||
476 | + ATAWR0_N_MARK, ETH_RXD0_B_MARK, SSI_SCK2_MARK, HSCIF1_HTX_B_MARK, | ||
477 | + VI1_DATA2_MARK, MDATA_MARK, ATAG0_N_MARK, ETH_RXD1_B_MARK, | ||
478 | |||
479 | /* IPSR13 */ | ||
480 | SSI_WS2_MARK, HSCIF1_HCTS_N_B_MARK, SCIFA0_RXD_D_MARK, VI1_DATA3_MARK, | ||
481 | @@ -1413,13 +1413,13 @@ static const u16 pinmux_data[] = { | ||
482 | PINMUX_IPSR_MSEL(IP12_26_24, HSCIF1_HRX_B, SEL_HSCIF1_1), | ||
483 | PINMUX_IPSR_GPSR(IP12_26_24, VI1_DATA1), | ||
484 | PINMUX_IPSR_MSEL(IP12_26_24, SDATA, SEL_FSN_0), | ||
485 | - PINMUX_IPSR_GPSR(IP12_26_24, ATAG0_N), | ||
486 | + PINMUX_IPSR_GPSR(IP12_26_24, ATAWR0_N), | ||
487 | PINMUX_IPSR_MSEL(IP12_26_24, ETH_RXD0_B, SEL_ETH_1), | ||
488 | PINMUX_IPSR_MSEL(IP12_29_27, SSI_SCK2, SEL_SSI2_0), | ||
489 | PINMUX_IPSR_MSEL(IP12_29_27, HSCIF1_HTX_B, SEL_HSCIF1_1), | ||
490 | PINMUX_IPSR_GPSR(IP12_29_27, VI1_DATA2), | ||
491 | PINMUX_IPSR_MSEL(IP12_29_27, MDATA, SEL_FSN_0), | ||
492 | - PINMUX_IPSR_GPSR(IP12_29_27, ATAWR0_N), | ||
493 | + PINMUX_IPSR_GPSR(IP12_29_27, ATAG0_N), | ||
494 | PINMUX_IPSR_MSEL(IP12_29_27, ETH_RXD1_B, SEL_ETH_1), | ||
495 | |||
496 | /* IPSR13 */ | ||
497 | @@ -4938,10 +4938,10 @@ static const struct pinmux_cfg_reg pinmux_config_regs[] = { | ||
498 | 0, 0, 0, 0, | ||
499 | /* IP12_29_27 [3] */ | ||
500 | FN_SSI_SCK2, FN_HSCIF1_HTX_B, FN_VI1_DATA2, FN_MDATA, | ||
501 | - FN_ATAWR0_N, FN_ETH_RXD1_B, 0, 0, | ||
502 | + FN_ATAG0_N, FN_ETH_RXD1_B, 0, 0, | ||
503 | /* IP12_26_24 [3] */ | ||
504 | FN_SSI_SDATA1, FN_HSCIF1_HRX_B, FN_VI1_DATA1, FN_SDATA, | ||
505 | - FN_ATAG0_N, FN_ETH_RXD0_B, 0, 0, | ||
506 | + FN_ATAWR0_N, FN_ETH_RXD0_B, 0, 0, | ||
507 | /* IP12_23_21 [3] */ | ||
508 | FN_SSI_WS1, FN_SCIF1_TXD_B, FN_IIC1_SDA_C, FN_VI1_DATA0, | ||
509 | FN_CAN0_TX_D, FN_AVB_AVTP_MATCH, FN_ETH_RX_ER_B, 0, | ||
510 | diff --git a/drivers/pinctrl/sh-pfc/pfc-r8a7795.c b/drivers/pinctrl/sh-pfc/pfc-r8a7795.c | ||
511 | index 84cee66b1e08..0acb0a756650 100644 | ||
512 | --- a/drivers/pinctrl/sh-pfc/pfc-r8a7795.c | ||
513 | +++ b/drivers/pinctrl/sh-pfc/pfc-r8a7795.c | ||
514 | @@ -2056,7 +2056,7 @@ static const unsigned int hscif2_clk_b_pins[] = { | ||
515 | RCAR_GP_PIN(6, 21), | ||
516 | }; | ||
517 | static const unsigned int hscif2_clk_b_mux[] = { | ||
518 | - HSCK1_B_MARK, | ||
519 | + HSCK2_B_MARK, | ||
520 | }; | ||
521 | static const unsigned int hscif2_ctrl_b_pins[] = { | ||
522 | /* RTS, CTS */ | ||
523 | @@ -2129,7 +2129,7 @@ static const unsigned int hscif4_ctrl_pins[] = { | ||
524 | RCAR_GP_PIN(1, 15), RCAR_GP_PIN(1, 14), | ||
525 | }; | ||
526 | static const unsigned int hscif4_ctrl_mux[] = { | ||
527 | - HRTS4_N_MARK, HCTS3_N_MARK, | ||
528 | + HRTS4_N_MARK, HCTS4_N_MARK, | ||
529 | }; | ||
530 | |||
531 | static const unsigned int hscif4_data_b_pins[] = { | ||
532 | diff --git a/drivers/pinctrl/stm32/pinctrl-stm32.c b/drivers/pinctrl/stm32/pinctrl-stm32.c | ||
533 | index efc43711ff5c..a36fd4b7e996 100644 | ||
534 | --- a/drivers/pinctrl/stm32/pinctrl-stm32.c | ||
535 | +++ b/drivers/pinctrl/stm32/pinctrl-stm32.c | ||
536 | @@ -798,7 +798,7 @@ static int stm32_pconf_parse_conf(struct pinctrl_dev *pctldev, | ||
537 | break; | ||
538 | case PIN_CONFIG_OUTPUT: | ||
539 | __stm32_gpio_set(bank, offset, arg); | ||
540 | - ret = stm32_pmx_gpio_set_direction(pctldev, NULL, pin, false); | ||
541 | + ret = stm32_pmx_gpio_set_direction(pctldev, range, pin, false); | ||
542 | break; | ||
543 | default: | ||
544 | ret = -EINVAL; | ||
545 | diff --git a/drivers/pinctrl/sunxi/pinctrl-sun8i-a83t.c b/drivers/pinctrl/sunxi/pinctrl-sun8i-a83t.c | ||
546 | index 90b973e15982..a7c81e988656 100644 | ||
547 | --- a/drivers/pinctrl/sunxi/pinctrl-sun8i-a83t.c | ||
548 | +++ b/drivers/pinctrl/sunxi/pinctrl-sun8i-a83t.c | ||
549 | @@ -394,7 +394,7 @@ static const struct sunxi_desc_pin sun8i_a83t_pins[] = { | ||
550 | SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 18), | ||
551 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
552 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
553 | - SUNXI_FUNCTION(0x3, "owa")), /* DOUT */ | ||
554 | + SUNXI_FUNCTION(0x3, "spdif")), /* DOUT */ | ||
555 | SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 19), | ||
556 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
557 | SUNXI_FUNCTION(0x1, "gpio_out")), | ||
558 | diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c | ||
559 | index 96b21b0dac1e..3116edfcdc18 100644 | ||
560 | --- a/drivers/usb/core/quirks.c | ||
561 | +++ b/drivers/usb/core/quirks.c | ||
562 | @@ -223,6 +223,10 @@ static const struct usb_device_id usb_quirk_list[] = { | ||
563 | /* Blackmagic Design UltraStudio SDI */ | ||
564 | { USB_DEVICE(0x1edb, 0xbd4f), .driver_info = USB_QUIRK_NO_LPM }, | ||
565 | |||
566 | + /* Hauppauge HVR-950q */ | ||
567 | + { USB_DEVICE(0x2040, 0x7200), .driver_info = | ||
568 | + USB_QUIRK_CONFIG_INTF_STRINGS }, | ||
569 | + | ||
570 | /* INTEL VALUE SSD */ | ||
571 | { USB_DEVICE(0x8086, 0xf1a5), .driver_info = USB_QUIRK_RESET_RESUME }, | ||
572 | |||
573 | diff --git a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c | ||
574 | index 592151461017..eaf1c3b06f02 100644 | ||
575 | --- a/drivers/usb/core/usb.c | ||
576 | +++ b/drivers/usb/core/usb.c | ||
577 | @@ -279,6 +279,8 @@ static void usb_release_dev(struct device *dev) | ||
578 | |||
579 | usb_destroy_configuration(udev); | ||
580 | usb_release_bos_descriptor(udev); | ||
581 | + if (udev->parent) | ||
582 | + of_node_put(dev->of_node); | ||
583 | usb_put_hcd(hcd); | ||
584 | kfree(udev->product); | ||
585 | kfree(udev->manufacturer); | ||
586 | diff --git a/drivers/usb/dwc3/dwc3-st.c b/drivers/usb/dwc3/dwc3-st.c | ||
587 | index aaaf256f71dd..4cf5381ff991 100644 | ||
588 | --- a/drivers/usb/dwc3/dwc3-st.c | ||
589 | +++ b/drivers/usb/dwc3/dwc3-st.c | ||
590 | @@ -231,7 +231,7 @@ static int st_dwc3_probe(struct platform_device *pdev) | ||
591 | |||
592 | dwc3_data->syscfg_reg_off = res->start; | ||
593 | |||
594 | - dev_vdbg(&pdev->dev, "glue-logic addr 0x%p, syscfg-reg offset 0x%x\n", | ||
595 | + dev_vdbg(&pdev->dev, "glue-logic addr 0x%pK, syscfg-reg offset 0x%x\n", | ||
596 | dwc3_data->glue_base, dwc3_data->syscfg_reg_off); | ||
597 | |||
598 | dwc3_data->rstc_pwrdn = | ||
599 | diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c | ||
600 | index a7e28095026d..f92c680e3937 100644 | ||
601 | --- a/drivers/usb/dwc3/gadget.c | ||
602 | +++ b/drivers/usb/dwc3/gadget.c | ||
603 | @@ -1069,9 +1069,9 @@ static int __dwc3_gadget_ep_queue(struct dwc3_ep *dep, struct dwc3_request *req) | ||
604 | return -ESHUTDOWN; | ||
605 | } | ||
606 | |||
607 | - if (WARN(req->dep != dep, "request %p belongs to '%s'\n", | ||
608 | + if (WARN(req->dep != dep, "request %pK belongs to '%s'\n", | ||
609 | &req->request, req->dep->name)) { | ||
610 | - dwc3_trace(trace_dwc3_gadget, "request %p belongs to '%s'", | ||
611 | + dwc3_trace(trace_dwc3_gadget, "request %pK belongs to '%s'", | ||
612 | &req->request, req->dep->name); | ||
613 | return -EINVAL; | ||
614 | } | ||
615 | @@ -1212,7 +1212,7 @@ static int dwc3_gadget_ep_dequeue(struct usb_ep *ep, | ||
616 | dwc3_stop_active_transfer(dwc, dep->number, true); | ||
617 | goto out1; | ||
618 | } | ||
619 | - dev_err(dwc->dev, "request %p was not queued to %s\n", | ||
620 | + dev_err(dwc->dev, "request %pK was not queued to %s\n", | ||
621 | request, ep->name); | ||
622 | ret = -EINVAL; | ||
623 | goto out0; | ||
624 | diff --git a/drivers/usb/host/xhci-hub.c b/drivers/usb/host/xhci-hub.c | ||
625 | index 1d41637a53e5..ff544f20872c 100644 | ||
626 | --- a/drivers/usb/host/xhci-hub.c | ||
627 | +++ b/drivers/usb/host/xhci-hub.c | ||
628 | @@ -1348,6 +1348,9 @@ int xhci_bus_suspend(struct usb_hcd *hcd) | ||
629 | t2 |= PORT_WKOC_E | PORT_WKCONN_E; | ||
630 | t2 &= ~PORT_WKDISC_E; | ||
631 | } | ||
632 | + if ((xhci->quirks & XHCI_U2_DISABLE_WAKE) && | ||
633 | + (hcd->speed < HCD_USB3)) | ||
634 | + t2 &= ~PORT_WAKE_BITS; | ||
635 | } else | ||
636 | t2 &= ~PORT_WAKE_BITS; | ||
637 | |||
638 | diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c | ||
639 | index 69864ba38698..672751ed2ba1 100644 | ||
640 | --- a/drivers/usb/host/xhci-pci.c | ||
641 | +++ b/drivers/usb/host/xhci-pci.c | ||
642 | @@ -54,6 +54,11 @@ | ||
643 | #define PCI_DEVICE_ID_INTEL_APL_XHCI 0x5aa8 | ||
644 | #define PCI_DEVICE_ID_INTEL_DNV_XHCI 0x19d0 | ||
645 | |||
646 | +#define PCI_DEVICE_ID_AMD_PROMONTORYA_4 0x43b9 | ||
647 | +#define PCI_DEVICE_ID_AMD_PROMONTORYA_3 0x43ba | ||
648 | +#define PCI_DEVICE_ID_AMD_PROMONTORYA_2 0x43bb | ||
649 | +#define PCI_DEVICE_ID_AMD_PROMONTORYA_1 0x43bc | ||
650 | + | ||
651 | static const char hcd_name[] = "xhci_hcd"; | ||
652 | |||
653 | static struct hc_driver __read_mostly xhci_pci_hc_driver; | ||
654 | @@ -135,6 +140,13 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) | ||
655 | if (pdev->vendor == PCI_VENDOR_ID_AMD) | ||
656 | xhci->quirks |= XHCI_TRUST_TX_LENGTH; | ||
657 | |||
658 | + if ((pdev->vendor == PCI_VENDOR_ID_AMD) && | ||
659 | + ((pdev->device == PCI_DEVICE_ID_AMD_PROMONTORYA_4) || | ||
660 | + (pdev->device == PCI_DEVICE_ID_AMD_PROMONTORYA_3) || | ||
661 | + (pdev->device == PCI_DEVICE_ID_AMD_PROMONTORYA_2) || | ||
662 | + (pdev->device == PCI_DEVICE_ID_AMD_PROMONTORYA_1))) | ||
663 | + xhci->quirks |= XHCI_U2_DISABLE_WAKE; | ||
664 | + | ||
665 | if (pdev->vendor == PCI_VENDOR_ID_INTEL) { | ||
666 | xhci->quirks |= XHCI_LPM_SUPPORT; | ||
667 | xhci->quirks |= XHCI_INTEL_HOST; | ||
668 | diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h | ||
669 | index 328fe06752ec..8336e07dc5f9 100644 | ||
670 | --- a/drivers/usb/host/xhci.h | ||
671 | +++ b/drivers/usb/host/xhci.h | ||
672 | @@ -1660,6 +1660,7 @@ struct xhci_hcd { | ||
673 | /* For controller with a broken Port Disable implementation */ | ||
674 | #define XHCI_BROKEN_PORT_PED (1 << 25) | ||
675 | #define XHCI_LIMIT_ENDPOINT_INTERVAL_7 (1 << 26) | ||
676 | +#define XHCI_U2_DISABLE_WAKE (1 << 27) | ||
677 | |||
678 | unsigned int num_active_eps; | ||
679 | unsigned int limit_active_eps; | ||
680 | diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c | ||
681 | index 8bb48751028c..84b444f69c9b 100644 | ||
682 | --- a/drivers/usb/serial/cp210x.c | ||
683 | +++ b/drivers/usb/serial/cp210x.c | ||
684 | @@ -135,6 +135,7 @@ static const struct usb_device_id id_table[] = { | ||
685 | { USB_DEVICE(0x10C4, 0x8977) }, /* CEL MeshWorks DevKit Device */ | ||
686 | { USB_DEVICE(0x10C4, 0x8998) }, /* KCF Technologies PRN */ | ||
687 | { USB_DEVICE(0x10C4, 0x8A2A) }, /* HubZ dual ZigBee and Z-Wave dongle */ | ||
688 | + { USB_DEVICE(0x10C4, 0x8A5E) }, /* CEL EM3588 ZigBee USB Stick Long Range */ | ||
689 | { USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */ | ||
690 | { USB_DEVICE(0x10C4, 0xEA61) }, /* Silicon Labs factory default */ | ||
691 | { USB_DEVICE(0x10C4, 0xEA70) }, /* Silicon Labs factory default */ | ||
692 | diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c | ||
693 | index 3bf61acfc26b..ebe51f11105d 100644 | ||
694 | --- a/drivers/usb/serial/option.c | ||
695 | +++ b/drivers/usb/serial/option.c | ||
696 | @@ -1877,6 +1877,10 @@ static const struct usb_device_id option_ids[] = { | ||
697 | .driver_info = (kernel_ulong_t)&four_g_w100_blacklist | ||
698 | }, | ||
699 | { USB_DEVICE_INTERFACE_CLASS(LONGCHEER_VENDOR_ID, SPEEDUP_PRODUCT_SU9800, 0xff) }, | ||
700 | + { USB_DEVICE_INTERFACE_CLASS(LONGCHEER_VENDOR_ID, 0x9801, 0xff), | ||
701 | + .driver_info = (kernel_ulong_t)&net_intf3_blacklist }, | ||
702 | + { USB_DEVICE_INTERFACE_CLASS(LONGCHEER_VENDOR_ID, 0x9803, 0xff), | ||
703 | + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, | ||
704 | { USB_DEVICE(LONGCHEER_VENDOR_ID, ZOOM_PRODUCT_4597) }, | ||
705 | { USB_DEVICE(LONGCHEER_VENDOR_ID, IBALL_3_5G_CONNECT) }, | ||
706 | { USB_DEVICE(HAIER_VENDOR_ID, HAIER_PRODUCT_CE100) }, | ||
707 | diff --git a/drivers/usb/serial/qcserial.c b/drivers/usb/serial/qcserial.c | ||
708 | index fd509ed6cf70..652b4334b26d 100644 | ||
709 | --- a/drivers/usb/serial/qcserial.c | ||
710 | +++ b/drivers/usb/serial/qcserial.c | ||
711 | @@ -158,6 +158,7 @@ static const struct usb_device_id id_table[] = { | ||
712 | {DEVICE_SWI(0x1199, 0x9056)}, /* Sierra Wireless Modem */ | ||
713 | {DEVICE_SWI(0x1199, 0x9060)}, /* Sierra Wireless Modem */ | ||
714 | {DEVICE_SWI(0x1199, 0x9061)}, /* Sierra Wireless Modem */ | ||
715 | + {DEVICE_SWI(0x1199, 0x9063)}, /* Sierra Wireless EM7305 */ | ||
716 | {DEVICE_SWI(0x1199, 0x9070)}, /* Sierra Wireless MC74xx */ | ||
717 | {DEVICE_SWI(0x1199, 0x9071)}, /* Sierra Wireless MC74xx */ | ||
718 | {DEVICE_SWI(0x1199, 0x9078)}, /* Sierra Wireless EM74xx */ | ||
719 | diff --git a/drivers/usb/usbip/stub_main.c b/drivers/usb/usbip/stub_main.c | ||
720 | index 44ab43fc4fcc..af10f7b131a4 100644 | ||
721 | --- a/drivers/usb/usbip/stub_main.c | ||
722 | +++ b/drivers/usb/usbip/stub_main.c | ||
723 | @@ -262,7 +262,11 @@ void stub_device_cleanup_urbs(struct stub_device *sdev) | ||
724 | kmem_cache_free(stub_priv_cache, priv); | ||
725 | |||
726 | kfree(urb->transfer_buffer); | ||
727 | + urb->transfer_buffer = NULL; | ||
728 | + | ||
729 | kfree(urb->setup_packet); | ||
730 | + urb->setup_packet = NULL; | ||
731 | + | ||
732 | usb_free_urb(urb); | ||
733 | } | ||
734 | } | ||
735 | diff --git a/drivers/usb/usbip/stub_tx.c b/drivers/usb/usbip/stub_tx.c | ||
736 | index 6b1e8c3f0e4b..be50cef645d8 100644 | ||
737 | --- a/drivers/usb/usbip/stub_tx.c | ||
738 | +++ b/drivers/usb/usbip/stub_tx.c | ||
739 | @@ -28,7 +28,11 @@ static void stub_free_priv_and_urb(struct stub_priv *priv) | ||
740 | struct urb *urb = priv->urb; | ||
741 | |||
742 | kfree(urb->setup_packet); | ||
743 | + urb->setup_packet = NULL; | ||
744 | + | ||
745 | kfree(urb->transfer_buffer); | ||
746 | + urb->transfer_buffer = NULL; | ||
747 | + | ||
748 | list_del(&priv->list); | ||
749 | kmem_cache_free(stub_priv_cache, priv); | ||
750 | usb_free_urb(urb); | ||
751 | diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c | ||
752 | index 1afa11191000..aca0d884de73 100644 | ||
753 | --- a/fs/ceph/dir.c | ||
754 | +++ b/fs/ceph/dir.c | ||
755 | @@ -315,7 +315,7 @@ static int ceph_readdir(struct file *file, struct dir_context *ctx) | ||
756 | struct ceph_mds_client *mdsc = fsc->mdsc; | ||
757 | int i; | ||
758 | int err; | ||
759 | - u32 ftype; | ||
760 | + unsigned frag = -1; | ||
761 | struct ceph_mds_reply_info_parsed *rinfo; | ||
762 | |||
763 | dout("readdir %p file %p pos %llx\n", inode, file, ctx->pos); | ||
764 | @@ -362,7 +362,6 @@ static int ceph_readdir(struct file *file, struct dir_context *ctx) | ||
765 | /* do we have the correct frag content buffered? */ | ||
766 | if (need_send_readdir(fi, ctx->pos)) { | ||
767 | struct ceph_mds_request *req; | ||
768 | - unsigned frag; | ||
769 | int op = ceph_snap(inode) == CEPH_SNAPDIR ? | ||
770 | CEPH_MDS_OP_LSSNAP : CEPH_MDS_OP_READDIR; | ||
771 | |||
772 | @@ -373,8 +372,11 @@ static int ceph_readdir(struct file *file, struct dir_context *ctx) | ||
773 | } | ||
774 | |||
775 | if (is_hash_order(ctx->pos)) { | ||
776 | - frag = ceph_choose_frag(ci, fpos_hash(ctx->pos), | ||
777 | - NULL, NULL); | ||
778 | + /* fragtree isn't always accurate. choose frag | ||
779 | + * based on previous reply when possible. */ | ||
780 | + if (frag == (unsigned)-1) | ||
781 | + frag = ceph_choose_frag(ci, fpos_hash(ctx->pos), | ||
782 | + NULL, NULL); | ||
783 | } else { | ||
784 | frag = fpos_frag(ctx->pos); | ||
785 | } | ||
786 | @@ -497,6 +499,7 @@ static int ceph_readdir(struct file *file, struct dir_context *ctx) | ||
787 | struct ceph_mds_reply_dir_entry *rde = rinfo->dir_entries + i; | ||
788 | struct ceph_vino vino; | ||
789 | ino_t ino; | ||
790 | + u32 ftype; | ||
791 | |||
792 | BUG_ON(rde->offset < ctx->pos); | ||
793 | |||
794 | @@ -519,15 +522,17 @@ static int ceph_readdir(struct file *file, struct dir_context *ctx) | ||
795 | ctx->pos++; | ||
796 | } | ||
797 | |||
798 | + ceph_mdsc_put_request(fi->last_readdir); | ||
799 | + fi->last_readdir = NULL; | ||
800 | + | ||
801 | if (fi->next_offset > 2) { | ||
802 | - ceph_mdsc_put_request(fi->last_readdir); | ||
803 | - fi->last_readdir = NULL; | ||
804 | + frag = fi->frag; | ||
805 | goto more; | ||
806 | } | ||
807 | |||
808 | /* more frags? */ | ||
809 | if (!ceph_frag_is_rightmost(fi->frag)) { | ||
810 | - unsigned frag = ceph_frag_next(fi->frag); | ||
811 | + frag = ceph_frag_next(fi->frag); | ||
812 | if (is_hash_order(ctx->pos)) { | ||
813 | loff_t new_pos = ceph_make_fpos(ceph_frag_value(frag), | ||
814 | fi->next_offset, true); | ||
815 | diff --git a/fs/fcntl.c b/fs/fcntl.c | ||
816 | index 350a2c8cfd28..1493ceb0477d 100644 | ||
817 | --- a/fs/fcntl.c | ||
818 | +++ b/fs/fcntl.c | ||
819 | @@ -741,16 +741,10 @@ static int __init fcntl_init(void) | ||
820 | * Exceptions: O_NONBLOCK is a two bit define on parisc; O_NDELAY | ||
821 | * is defined as O_NONBLOCK on some platforms and not on others. | ||
822 | */ | ||
823 | - BUILD_BUG_ON(21 - 1 /* for O_RDONLY being 0 */ != HWEIGHT32( | ||
824 | - O_RDONLY | O_WRONLY | O_RDWR | | ||
825 | - O_CREAT | O_EXCL | O_NOCTTY | | ||
826 | - O_TRUNC | O_APPEND | /* O_NONBLOCK | */ | ||
827 | - __O_SYNC | O_DSYNC | FASYNC | | ||
828 | - O_DIRECT | O_LARGEFILE | O_DIRECTORY | | ||
829 | - O_NOFOLLOW | O_NOATIME | O_CLOEXEC | | ||
830 | - __FMODE_EXEC | O_PATH | __O_TMPFILE | | ||
831 | - __FMODE_NONOTIFY | ||
832 | - )); | ||
833 | + BUILD_BUG_ON(21 - 1 /* for O_RDONLY being 0 */ != | ||
834 | + HWEIGHT32( | ||
835 | + (VALID_OPEN_FLAGS & ~(O_NONBLOCK | O_NDELAY)) | | ||
836 | + __FMODE_EXEC | __FMODE_NONOTIFY)); | ||
837 | |||
838 | fasync_cache = kmem_cache_create("fasync_cache", | ||
839 | sizeof(struct fasync_struct), 0, SLAB_PANIC, NULL); | ||
840 | diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c | ||
841 | index 6528724ad6e5..7bff6f46f5da 100644 | ||
842 | --- a/fs/gfs2/glock.c | ||
843 | +++ b/fs/gfs2/glock.c | ||
844 | @@ -80,9 +80,9 @@ static struct rhashtable_params ht_parms = { | ||
845 | |||
846 | static struct rhashtable gl_hash_table; | ||
847 | |||
848 | -void gfs2_glock_free(struct gfs2_glock *gl) | ||
849 | +static void gfs2_glock_dealloc(struct rcu_head *rcu) | ||
850 | { | ||
851 | - struct gfs2_sbd *sdp = gl->gl_name.ln_sbd; | ||
852 | + struct gfs2_glock *gl = container_of(rcu, struct gfs2_glock, gl_rcu); | ||
853 | |||
854 | if (gl->gl_ops->go_flags & GLOF_ASPACE) { | ||
855 | kmem_cache_free(gfs2_glock_aspace_cachep, gl); | ||
856 | @@ -90,6 +90,13 @@ void gfs2_glock_free(struct gfs2_glock *gl) | ||
857 | kfree(gl->gl_lksb.sb_lvbptr); | ||
858 | kmem_cache_free(gfs2_glock_cachep, gl); | ||
859 | } | ||
860 | +} | ||
861 | + | ||
862 | +void gfs2_glock_free(struct gfs2_glock *gl) | ||
863 | +{ | ||
864 | + struct gfs2_sbd *sdp = gl->gl_name.ln_sbd; | ||
865 | + | ||
866 | + call_rcu(&gl->gl_rcu, gfs2_glock_dealloc); | ||
867 | if (atomic_dec_and_test(&sdp->sd_glock_disposal)) | ||
868 | wake_up(&sdp->sd_glock_wait); | ||
869 | } | ||
870 | diff --git a/fs/gfs2/incore.h b/fs/gfs2/incore.h | ||
871 | index 51519c2836b5..a04bf9533d9e 100644 | ||
872 | --- a/fs/gfs2/incore.h | ||
873 | +++ b/fs/gfs2/incore.h | ||
874 | @@ -370,6 +370,7 @@ struct gfs2_glock { | ||
875 | loff_t end; | ||
876 | } gl_vm; | ||
877 | }; | ||
878 | + struct rcu_head gl_rcu; | ||
879 | struct rhash_head gl_node; | ||
880 | }; | ||
881 | |||
882 | diff --git a/fs/open.c b/fs/open.c | ||
883 | index d3ed8171e8e0..a6c6244f4993 100644 | ||
884 | --- a/fs/open.c | ||
885 | +++ b/fs/open.c | ||
886 | @@ -902,6 +902,12 @@ static inline int build_open_flags(int flags, umode_t mode, struct open_flags *o | ||
887 | int lookup_flags = 0; | ||
888 | int acc_mode = ACC_MODE(flags); | ||
889 | |||
890 | + /* | ||
891 | + * Clear out all open flags we don't know about so that we don't report | ||
892 | + * them in fcntl(F_GETFD) or similar interfaces. | ||
893 | + */ | ||
894 | + flags &= VALID_OPEN_FLAGS; | ||
895 | + | ||
896 | if (flags & (O_CREAT | __O_TMPFILE)) | ||
897 | op->mode = (mode & S_IALLUGO) | S_IFREG; | ||
898 | else | ||
899 | diff --git a/include/linux/fcntl.h b/include/linux/fcntl.h | ||
900 | index 76ce329e656d..1b48d9c9a561 100644 | ||
901 | --- a/include/linux/fcntl.h | ||
902 | +++ b/include/linux/fcntl.h | ||
903 | @@ -3,6 +3,12 @@ | ||
904 | |||
905 | #include <uapi/linux/fcntl.h> | ||
906 | |||
907 | +/* list of all valid flags for the open/openat flags argument: */ | ||
908 | +#define VALID_OPEN_FLAGS \ | ||
909 | + (O_RDONLY | O_WRONLY | O_RDWR | O_CREAT | O_EXCL | O_NOCTTY | O_TRUNC | \ | ||
910 | + O_APPEND | O_NDELAY | O_NONBLOCK | O_NDELAY | __O_SYNC | O_DSYNC | \ | ||
911 | + FASYNC | O_DIRECT | O_LARGEFILE | O_DIRECTORY | O_NOFOLLOW | \ | ||
912 | + O_NOATIME | O_CLOEXEC | O_PATH | __O_TMPFILE) | ||
913 | |||
914 | #ifndef force_o_largefile | ||
915 | #define force_o_largefile() (BITS_PER_LONG != 32) | ||
916 | diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h | ||
917 | index 66fc13705ab7..492034126876 100644 | ||
918 | --- a/include/linux/usb/hcd.h | ||
919 | +++ b/include/linux/usb/hcd.h | ||
920 | @@ -561,9 +561,9 @@ extern void usb_ep0_reinit(struct usb_device *); | ||
921 | ((USB_DIR_IN|USB_TYPE_STANDARD|USB_RECIP_INTERFACE)<<8) | ||
922 | |||
923 | #define EndpointRequest \ | ||
924 | - ((USB_DIR_IN|USB_TYPE_STANDARD|USB_RECIP_INTERFACE)<<8) | ||
925 | + ((USB_DIR_IN|USB_TYPE_STANDARD|USB_RECIP_ENDPOINT)<<8) | ||
926 | #define EndpointOutRequest \ | ||
927 | - ((USB_DIR_OUT|USB_TYPE_STANDARD|USB_RECIP_INTERFACE)<<8) | ||
928 | + ((USB_DIR_OUT|USB_TYPE_STANDARD|USB_RECIP_ENDPOINT)<<8) | ||
929 | |||
930 | /* class requests from the USB 2.0 hub spec, table 11-15 */ | ||
931 | /* GetBusState and SetHubDescriptor are optional, omitted */ | ||
932 | diff --git a/kernel/sysctl.c b/kernel/sysctl.c | ||
933 | index c1095cdc0fe2..265e0d0216e3 100644 | ||
934 | --- a/kernel/sysctl.c | ||
935 | +++ b/kernel/sysctl.c | ||
936 | @@ -2146,9 +2146,12 @@ static int do_proc_douintvec_conv(bool *negp, unsigned long *lvalp, | ||
937 | if (write) { | ||
938 | if (*negp) | ||
939 | return -EINVAL; | ||
940 | + if (*lvalp > UINT_MAX) | ||
941 | + return -EINVAL; | ||
942 | *valp = *lvalp; | ||
943 | } else { | ||
944 | unsigned int val = *valp; | ||
945 | + *negp = false; | ||
946 | *lvalp = (unsigned long)val; | ||
947 | } | ||
948 | return 0; | ||
949 | diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c | ||
950 | index 8d2b4d8fd714..5ff45cae4ac4 100644 | ||
951 | --- a/kernel/trace/trace_kprobe.c | ||
952 | +++ b/kernel/trace/trace_kprobe.c | ||
953 | @@ -667,30 +667,25 @@ static int create_trace_kprobe(int argc, char **argv) | ||
954 | pr_info("Probe point is not specified.\n"); | ||
955 | return -EINVAL; | ||
956 | } | ||
957 | - if (isdigit(argv[1][0])) { | ||
958 | - if (is_return) { | ||
959 | - pr_info("Return probe point must be a symbol.\n"); | ||
960 | - return -EINVAL; | ||
961 | - } | ||
962 | - /* an address specified */ | ||
963 | - ret = kstrtoul(&argv[1][0], 0, (unsigned long *)&addr); | ||
964 | - if (ret) { | ||
965 | - pr_info("Failed to parse address.\n"); | ||
966 | - return ret; | ||
967 | - } | ||
968 | - } else { | ||
969 | + | ||
970 | + /* try to parse an address. if that fails, try to read the | ||
971 | + * input as a symbol. */ | ||
972 | + if (kstrtoul(argv[1], 0, (unsigned long *)&addr)) { | ||
973 | /* a symbol specified */ | ||
974 | symbol = argv[1]; | ||
975 | /* TODO: support .init module functions */ | ||
976 | ret = traceprobe_split_symbol_offset(symbol, &offset); | ||
977 | if (ret) { | ||
978 | - pr_info("Failed to parse symbol.\n"); | ||
979 | + pr_info("Failed to parse either an address or a symbol.\n"); | ||
980 | return ret; | ||
981 | } | ||
982 | if (offset && is_return) { | ||
983 | pr_info("Return probe must be used without offset.\n"); | ||
984 | return -EINVAL; | ||
985 | } | ||
986 | + } else if (is_return) { | ||
987 | + pr_info("Return probe point must be a symbol.\n"); | ||
988 | + return -EINVAL; | ||
989 | } | ||
990 | argc -= 2; argv += 2; | ||
991 | |||
992 | diff --git a/security/keys/encrypted-keys/encrypted.c b/security/keys/encrypted-keys/encrypted.c | ||
993 | index 56c458dd16a2..8d9330aba77e 100644 | ||
994 | --- a/security/keys/encrypted-keys/encrypted.c | ||
995 | +++ b/security/keys/encrypted-keys/encrypted.c | ||
996 | @@ -437,7 +437,7 @@ static struct skcipher_request *init_skcipher_req(const u8 *key, | ||
997 | static struct key *request_master_key(struct encrypted_key_payload *epayload, | ||
998 | const u8 **master_key, size_t *master_keylen) | ||
999 | { | ||
1000 | - struct key *mkey = NULL; | ||
1001 | + struct key *mkey = ERR_PTR(-EINVAL); | ||
1002 | |||
1003 | if (!strncmp(epayload->master_desc, KEY_TRUSTED_PREFIX, | ||
1004 | KEY_TRUSTED_PREFIX_LEN)) { | ||
1005 | diff --git a/sound/soc/codecs/rt286.c b/sound/soc/codecs/rt286.c | ||
1006 | index 9c365a7f758d..7899a2cdeb42 100644 | ||
1007 | --- a/sound/soc/codecs/rt286.c | ||
1008 | +++ b/sound/soc/codecs/rt286.c | ||
1009 | @@ -1108,6 +1108,13 @@ static const struct dmi_system_id force_combo_jack_table[] = { | ||
1010 | DMI_MATCH(DMI_PRODUCT_NAME, "Kabylake Client platform") | ||
1011 | } | ||
1012 | }, | ||
1013 | + { | ||
1014 | + .ident = "Thinkpad Helix 2nd", | ||
1015 | + .matches = { | ||
1016 | + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), | ||
1017 | + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad Helix 2nd") | ||
1018 | + } | ||
1019 | + }, | ||
1020 | |||
1021 | { } | ||
1022 | }; |