Magellan Linux

Contents of /trunk/kernel-alx-legacy/patches-4.9/0136-4.9.37-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3608 - (show annotations) (download)
Fri Aug 14 07:34:29 2020 UTC (3 years, 8 months ago) by niro
File size: 38337 byte(s)
-added kerenl-alx-legacy pkg
1 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 };