Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2956 - (hide annotations) (download)
Mon Jul 24 12:03:46 2017 UTC (6 years, 10 months ago) by niro
File size: 38337 byte(s)
-added patches-4.9
1 niro 2956 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     };