Magellan Linux

Annotation of /trunk/kernel-alx-legacy/patches-4.9/0345-4.9.246-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3647 - (hide annotations) (download)
Mon Oct 24 14:07:27 2022 UTC (23 months ago) by niro
File size: 44233 byte(s)
-linux-4.9.246
1 niro 3647 diff --git a/Makefile b/Makefile
2     index b72f286d3bcdd..b9e2a97da5da7 100644
3     --- a/Makefile
4     +++ b/Makefile
5     @@ -1,6 +1,6 @@
6     VERSION = 4
7     PATCHLEVEL = 9
8     -SUBLEVEL = 245
9     +SUBLEVEL = 246
10     EXTRAVERSION =
11     NAME = Roaring Lionus
12    
13     diff --git a/arch/arm/boot/dts/imx50-evk.dts b/arch/arm/boot/dts/imx50-evk.dts
14     index 27d763c7a307d..4dbd180e72ba6 100644
15     --- a/arch/arm/boot/dts/imx50-evk.dts
16     +++ b/arch/arm/boot/dts/imx50-evk.dts
17     @@ -66,7 +66,7 @@
18     MX50_PAD_CSPI_MISO__CSPI_MISO 0x00
19     MX50_PAD_CSPI_MOSI__CSPI_MOSI 0x00
20     MX50_PAD_CSPI_SS0__GPIO4_11 0xc4
21     - MX50_PAD_ECSPI1_MOSI__CSPI_SS1 0xf4
22     + MX50_PAD_ECSPI1_MOSI__GPIO4_13 0x84
23     >;
24     };
25    
26     diff --git a/arch/arm/boot/dts/imx6qdl-udoo.dtsi b/arch/arm/boot/dts/imx6qdl-udoo.dtsi
27     index c96c91d836785..fc4ae2e423bd7 100644
28     --- a/arch/arm/boot/dts/imx6qdl-udoo.dtsi
29     +++ b/arch/arm/boot/dts/imx6qdl-udoo.dtsi
30     @@ -94,7 +94,7 @@
31     &fec {
32     pinctrl-names = "default";
33     pinctrl-0 = <&pinctrl_enet>;
34     - phy-mode = "rgmii";
35     + phy-mode = "rgmii-id";
36     status = "okay";
37     };
38    
39     diff --git a/arch/arm64/kernel/psci.c b/arch/arm64/kernel/psci.c
40     index e3713d6fb8e00..bf6142a80cf1a 100644
41     --- a/arch/arm64/kernel/psci.c
42     +++ b/arch/arm64/kernel/psci.c
43     @@ -68,7 +68,6 @@ static int cpu_psci_cpu_disable(unsigned int cpu)
44    
45     static void cpu_psci_cpu_die(unsigned int cpu)
46     {
47     - int ret;
48     /*
49     * There are no known implementations of PSCI actually using the
50     * power state field, pass a sensible default for now.
51     @@ -76,9 +75,7 @@ static void cpu_psci_cpu_die(unsigned int cpu)
52     u32 state = PSCI_POWER_STATE_TYPE_POWER_DOWN <<
53     PSCI_0_2_POWER_STATE_TYPE_SHIFT;
54    
55     - ret = psci_ops.cpu_off(state);
56     -
57     - pr_crit("unable to power off CPU%u (%d)\n", cpu, ret);
58     + psci_ops.cpu_off(state);
59     }
60    
61     static int cpu_psci_cpu_kill(unsigned int cpu)
62     diff --git a/arch/mips/alchemy/common/clock.c b/arch/mips/alchemy/common/clock.c
63     index 7ba7ea0a22f80..e6d0044393b08 100644
64     --- a/arch/mips/alchemy/common/clock.c
65     +++ b/arch/mips/alchemy/common/clock.c
66     @@ -151,6 +151,7 @@ static struct clk __init *alchemy_clk_setup_cpu(const char *parent_name,
67     {
68     struct clk_init_data id;
69     struct clk_hw *h;
70     + struct clk *clk;
71    
72     h = kzalloc(sizeof(*h), GFP_KERNEL);
73     if (!h)
74     @@ -163,7 +164,13 @@ static struct clk __init *alchemy_clk_setup_cpu(const char *parent_name,
75     id.ops = &alchemy_clkops_cpu;
76     h->init = &id;
77    
78     - return clk_register(NULL, h);
79     + clk = clk_register(NULL, h);
80     + if (IS_ERR(clk)) {
81     + pr_err("failed to register clock\n");
82     + kfree(h);
83     + }
84     +
85     + return clk;
86     }
87    
88     /* AUXPLLs ************************************************************/
89     diff --git a/arch/mips/mm/tlb-r4k.c b/arch/mips/mm/tlb-r4k.c
90     index 0596505770dba..11985399c4695 100644
91     --- a/arch/mips/mm/tlb-r4k.c
92     +++ b/arch/mips/mm/tlb-r4k.c
93     @@ -424,6 +424,7 @@ int has_transparent_hugepage(void)
94     }
95     return mask == PM_HUGE_MASK;
96     }
97     +EXPORT_SYMBOL(has_transparent_hugepage);
98    
99     #endif /* CONFIG_TRANSPARENT_HUGEPAGE */
100    
101     diff --git a/arch/powerpc/include/asm/book3s/64/kup-radix.h b/arch/powerpc/include/asm/book3s/64/kup-radix.h
102     index aa54ac2e5659e..cce8e7497d72b 100644
103     --- a/arch/powerpc/include/asm/book3s/64/kup-radix.h
104     +++ b/arch/powerpc/include/asm/book3s/64/kup-radix.h
105     @@ -1,6 +1,7 @@
106     /* SPDX-License-Identifier: GPL-2.0 */
107     #ifndef _ASM_POWERPC_BOOK3S_64_KUP_RADIX_H
108     #define _ASM_POWERPC_BOOK3S_64_KUP_RADIX_H
109     +#include <linux/jump_label.h>
110    
111     DECLARE_STATIC_KEY_FALSE(uaccess_flush_key);
112    
113     diff --git a/arch/s390/kernel/perf_cpum_sf.c b/arch/s390/kernel/perf_cpum_sf.c
114     index c62eb09b2ba7b..427b70397fcd3 100644
115     --- a/arch/s390/kernel/perf_cpum_sf.c
116     +++ b/arch/s390/kernel/perf_cpum_sf.c
117     @@ -1663,4 +1663,4 @@ out:
118     return err;
119     }
120     arch_initcall(init_cpum_sampling_pmu);
121     -core_param(cpum_sfb_size, CPUM_SF_MAX_SDB, sfb_size, 0640);
122     +core_param(cpum_sfb_size, CPUM_SF_MAX_SDB, sfb_size, 0644);
123     diff --git a/arch/x86/kernel/cpu/microcode/intel.c b/arch/x86/kernel/cpu/microcode/intel.c
124     index 1308abfc47580..0939151a42a9d 100644
125     --- a/arch/x86/kernel/cpu/microcode/intel.c
126     +++ b/arch/x86/kernel/cpu/microcode/intel.c
127     @@ -147,51 +147,6 @@ load_microcode(struct mc_saved_data *mcs, unsigned long *mc_ptrs,
128     }
129     }
130    
131     -/*
132     - * Given CPU signature and a microcode patch, this function finds if the
133     - * microcode patch has matching family and model with the CPU.
134     - */
135     -static enum ucode_state
136     -matching_model_microcode(struct microcode_header_intel *mc_header,
137     - unsigned long sig)
138     -{
139     - unsigned int fam, model;
140     - unsigned int fam_ucode, model_ucode;
141     - struct extended_sigtable *ext_header;
142     - unsigned long total_size = get_totalsize(mc_header);
143     - unsigned long data_size = get_datasize(mc_header);
144     - int ext_sigcount, i;
145     - struct extended_signature *ext_sig;
146     -
147     - fam = x86_family(sig);
148     - model = x86_model(sig);
149     -
150     - fam_ucode = x86_family(mc_header->sig);
151     - model_ucode = x86_model(mc_header->sig);
152     -
153     - if (fam == fam_ucode && model == model_ucode)
154     - return UCODE_OK;
155     -
156     - /* Look for ext. headers: */
157     - if (total_size <= data_size + MC_HEADER_SIZE)
158     - return UCODE_NFOUND;
159     -
160     - ext_header = (void *) mc_header + data_size + MC_HEADER_SIZE;
161     - ext_sig = (void *)ext_header + EXT_HEADER_SIZE;
162     - ext_sigcount = ext_header->count;
163     -
164     - for (i = 0; i < ext_sigcount; i++) {
165     - fam_ucode = x86_family(ext_sig->sig);
166     - model_ucode = x86_model(ext_sig->sig);
167     -
168     - if (fam == fam_ucode && model == model_ucode)
169     - return UCODE_OK;
170     -
171     - ext_sig++;
172     - }
173     - return UCODE_NFOUND;
174     -}
175     -
176     static int
177     save_microcode(struct mc_saved_data *mcs,
178     struct microcode_intel **mc_saved_src,
179     @@ -332,7 +287,8 @@ get_matching_model_microcode(unsigned long start, void *data, size_t size,
180     * the platform, we need to find and save microcode patches
181     * with the same family and model as the BSP.
182     */
183     - if (matching_model_microcode(mc_header, uci->cpu_sig.sig) != UCODE_OK) {
184     + if (!find_matching_signature(mc_header, uci->cpu_sig.sig,
185     + uci->cpu_sig.pf)) {
186     ucode_ptr += mc_size;
187     continue;
188     }
189     diff --git a/arch/xtensa/mm/cache.c b/arch/xtensa/mm/cache.c
190     index 3c75c4e597da8..7aaedeebb35dd 100644
191     --- a/arch/xtensa/mm/cache.c
192     +++ b/arch/xtensa/mm/cache.c
193     @@ -74,8 +74,10 @@ static inline void kmap_invalidate_coherent(struct page *page,
194     kvaddr = TLBTEMP_BASE_1 +
195     (page_to_phys(page) & DCACHE_ALIAS_MASK);
196    
197     + preempt_disable();
198     __invalidate_dcache_page_alias(kvaddr,
199     page_to_phys(page));
200     + preempt_enable();
201     }
202     }
203     }
204     @@ -160,6 +162,7 @@ void flush_dcache_page(struct page *page)
205     if (!alias && !mapping)
206     return;
207    
208     + preempt_disable();
209     virt = TLBTEMP_BASE_1 + (phys & DCACHE_ALIAS_MASK);
210     __flush_invalidate_dcache_page_alias(virt, phys);
211    
212     @@ -170,6 +173,7 @@ void flush_dcache_page(struct page *page)
213    
214     if (mapping)
215     __invalidate_icache_page_alias(virt, phys);
216     + preempt_enable();
217     }
218    
219     /* There shouldn't be an entry in the cache for this page anymore. */
220     @@ -203,8 +207,10 @@ void local_flush_cache_page(struct vm_area_struct *vma, unsigned long address,
221     unsigned long phys = page_to_phys(pfn_to_page(pfn));
222     unsigned long virt = TLBTEMP_BASE_1 + (address & DCACHE_ALIAS_MASK);
223    
224     + preempt_disable();
225     __flush_invalidate_dcache_page_alias(virt, phys);
226     __invalidate_icache_page_alias(virt, phys);
227     + preempt_enable();
228     }
229     EXPORT_SYMBOL(local_flush_cache_page);
230    
231     @@ -231,11 +237,13 @@ update_mmu_cache(struct vm_area_struct * vma, unsigned long addr, pte_t *ptep)
232     unsigned long phys = page_to_phys(page);
233     unsigned long tmp;
234    
235     + preempt_disable();
236     tmp = TLBTEMP_BASE_1 + (phys & DCACHE_ALIAS_MASK);
237     __flush_invalidate_dcache_page_alias(tmp, phys);
238     tmp = TLBTEMP_BASE_1 + (addr & DCACHE_ALIAS_MASK);
239     __flush_invalidate_dcache_page_alias(tmp, phys);
240     __invalidate_icache_page_alias(tmp, phys);
241     + preempt_enable();
242    
243     clear_bit(PG_arch_1, &page->flags);
244     }
245     @@ -269,7 +277,9 @@ void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
246    
247     if (alias) {
248     unsigned long t = TLBTEMP_BASE_1 + (vaddr & DCACHE_ALIAS_MASK);
249     + preempt_disable();
250     __flush_invalidate_dcache_page_alias(t, phys);
251     + preempt_enable();
252     }
253    
254     /* Copy data */
255     @@ -284,9 +294,11 @@ void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
256     if (alias) {
257     unsigned long t = TLBTEMP_BASE_1 + (vaddr & DCACHE_ALIAS_MASK);
258    
259     + preempt_disable();
260     __flush_invalidate_dcache_range((unsigned long) dst, len);
261     if ((vma->vm_flags & VM_EXEC) != 0)
262     __invalidate_icache_page_alias(t, phys);
263     + preempt_enable();
264    
265     } else if ((vma->vm_flags & VM_EXEC) != 0) {
266     __flush_dcache_range((unsigned long)dst,len);
267     @@ -308,7 +320,9 @@ extern void copy_from_user_page(struct vm_area_struct *vma, struct page *page,
268    
269     if (alias) {
270     unsigned long t = TLBTEMP_BASE_1 + (vaddr & DCACHE_ALIAS_MASK);
271     + preempt_disable();
272     __flush_invalidate_dcache_page_alias(t, phys);
273     + preempt_enable();
274     }
275    
276     memcpy(dst, src, len);
277     diff --git a/drivers/atm/nicstar.c b/drivers/atm/nicstar.c
278     index c7296b5837873..8bcd09fb0feb9 100644
279     --- a/drivers/atm/nicstar.c
280     +++ b/drivers/atm/nicstar.c
281     @@ -1707,6 +1707,8 @@ static int ns_send(struct atm_vcc *vcc, struct sk_buff *skb)
282    
283     if (push_scqe(card, vc, scq, &scqe, skb) != 0) {
284     atomic_inc(&vcc->stats->tx_err);
285     + dma_unmap_single(&card->pcidev->dev, NS_PRV_DMA(skb), skb->len,
286     + DMA_TO_DEVICE);
287     dev_kfree_skb_any(skb);
288     return -EIO;
289     }
290     diff --git a/drivers/iio/accel/kxcjk-1013.c b/drivers/iio/accel/kxcjk-1013.c
291     index 780f886ccbfe9..261fbdb88fe15 100644
292     --- a/drivers/iio/accel/kxcjk-1013.c
293     +++ b/drivers/iio/accel/kxcjk-1013.c
294     @@ -91,6 +91,11 @@ enum kx_chipset {
295     KX_MAX_CHIPS /* this must be last */
296     };
297    
298     +enum kx_acpi_type {
299     + ACPI_GENERIC,
300     + ACPI_SMO8500,
301     +};
302     +
303     struct kxcjk1013_data {
304     struct i2c_client *client;
305     struct iio_trigger *dready_trig;
306     @@ -107,7 +112,7 @@ struct kxcjk1013_data {
307     bool motion_trigger_on;
308     int64_t timestamp;
309     enum kx_chipset chipset;
310     - bool is_smo8500_device;
311     + enum kx_acpi_type acpi_type;
312     };
313    
314     enum kxcjk1013_axis {
315     @@ -1144,7 +1149,7 @@ static irqreturn_t kxcjk1013_data_rdy_trig_poll(int irq, void *private)
316    
317     static const char *kxcjk1013_match_acpi_device(struct device *dev,
318     enum kx_chipset *chipset,
319     - bool *is_smo8500_device)
320     + enum kx_acpi_type *acpi_type)
321     {
322     const struct acpi_device_id *id;
323    
324     @@ -1153,7 +1158,7 @@ static const char *kxcjk1013_match_acpi_device(struct device *dev,
325     return NULL;
326    
327     if (strcmp(id->id, "SMO8500") == 0)
328     - *is_smo8500_device = true;
329     + *acpi_type = ACPI_SMO8500;
330    
331     *chipset = (enum kx_chipset)id->driver_data;
332    
333     @@ -1189,7 +1194,7 @@ static int kxcjk1013_probe(struct i2c_client *client,
334     } else if (ACPI_HANDLE(&client->dev)) {
335     name = kxcjk1013_match_acpi_device(&client->dev,
336     &data->chipset,
337     - &data->is_smo8500_device);
338     + &data->acpi_type);
339     } else
340     return -ENODEV;
341    
342     @@ -1207,7 +1212,7 @@ static int kxcjk1013_probe(struct i2c_client *client,
343     indio_dev->modes = INDIO_DIRECT_MODE;
344     indio_dev->info = &kxcjk1013_info;
345    
346     - if (client->irq > 0 && !data->is_smo8500_device) {
347     + if (client->irq > 0 && data->acpi_type != ACPI_SMO8500) {
348     ret = devm_request_threaded_irq(&client->dev, client->irq,
349     kxcjk1013_data_rdy_trig_poll,
350     kxcjk1013_event_handler,
351     diff --git a/drivers/input/misc/adxl34x.c b/drivers/input/misc/adxl34x.c
352     index 2b2d02f408bbb..2e189646d8fe2 100644
353     --- a/drivers/input/misc/adxl34x.c
354     +++ b/drivers/input/misc/adxl34x.c
355     @@ -696,7 +696,7 @@ struct adxl34x *adxl34x_probe(struct device *dev, int irq,
356     struct input_dev *input_dev;
357     const struct adxl34x_platform_data *pdata;
358     int err, range, i;
359     - unsigned char revid;
360     + int revid;
361    
362     if (!irq) {
363     dev_err(dev, "no IRQ?\n");
364     diff --git a/drivers/net/can/dev.c b/drivers/net/can/dev.c
365     index 617eb75c7c0ce..c7508d9a4c6fb 100644
366     --- a/drivers/net/can/dev.c
367     +++ b/drivers/net/can/dev.c
368     @@ -555,7 +555,7 @@ static void can_restart(struct net_device *dev)
369     }
370     cf->can_id |= CAN_ERR_RESTARTED;
371    
372     - netif_rx(skb);
373     + netif_rx_ni(skb);
374    
375     stats->rx_packets++;
376     stats->rx_bytes += cf->can_dlc;
377     diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c
378     index 195f15edb32e3..0bd7e71647964 100644
379     --- a/drivers/net/can/m_can/m_can.c
380     +++ b/drivers/net/can/m_can/m_can.c
381     @@ -572,7 +572,7 @@ static int m_can_handle_state_change(struct net_device *dev,
382     unsigned int ecr;
383    
384     switch (new_state) {
385     - case CAN_STATE_ERROR_ACTIVE:
386     + case CAN_STATE_ERROR_WARNING:
387     /* error warning state */
388     priv->can.can_stats.error_warning++;
389     priv->can.state = CAN_STATE_ERROR_WARNING;
390     @@ -601,7 +601,7 @@ static int m_can_handle_state_change(struct net_device *dev,
391     __m_can_get_berr_counter(dev, &bec);
392    
393     switch (new_state) {
394     - case CAN_STATE_ERROR_ACTIVE:
395     + case CAN_STATE_ERROR_WARNING:
396     /* error warning state */
397     cf->can_id |= CAN_ERR_CRTL;
398     cf->data[1] = (bec.txerr > bec.rxerr) ?
399     diff --git a/drivers/net/can/usb/peak_usb/pcan_usb_core.c b/drivers/net/can/usb/peak_usb/pcan_usb_core.c
400     index 74b37309efab7..2e316228aa1e8 100644
401     --- a/drivers/net/can/usb/peak_usb/pcan_usb_core.c
402     +++ b/drivers/net/can/usb/peak_usb/pcan_usb_core.c
403     @@ -178,7 +178,7 @@ void peak_usb_get_ts_tv(struct peak_time_ref *time_ref, u32 ts,
404     if (time_ref->ts_dev_1 < time_ref->ts_dev_2) {
405     /* case when event time (tsw) wraps */
406     if (ts < time_ref->ts_dev_1)
407     - delta_ts = 1 << time_ref->adapter->ts_used_bits;
408     + delta_ts = BIT_ULL(time_ref->adapter->ts_used_bits);
409    
410     /* Otherwise, sync time counter (ts_dev_2) has wrapped:
411     * handle case when event time (tsn) hasn't.
412     @@ -190,7 +190,7 @@ void peak_usb_get_ts_tv(struct peak_time_ref *time_ref, u32 ts,
413     * tsn ts
414     */
415     } else if (time_ref->ts_dev_1 < ts) {
416     - delta_ts = -(1 << time_ref->adapter->ts_used_bits);
417     + delta_ts = -BIT_ULL(time_ref->adapter->ts_used_bits);
418     }
419    
420     /* add delay between last sync and event timestamps */
421     diff --git a/drivers/net/ethernet/broadcom/b44.c b/drivers/net/ethernet/broadcom/b44.c
422     index d95dec5957861..9a9f6c12f89ab 100644
423     --- a/drivers/net/ethernet/broadcom/b44.c
424     +++ b/drivers/net/ethernet/broadcom/b44.c
425     @@ -2390,7 +2390,8 @@ static int b44_init_one(struct ssb_device *sdev,
426     goto err_out_free_dev;
427     }
428    
429     - if (dma_set_mask_and_coherent(sdev->dma_dev, DMA_BIT_MASK(30))) {
430     + err = dma_set_mask_and_coherent(sdev->dma_dev, DMA_BIT_MASK(30));
431     + if (err) {
432     dev_err(sdev->dev,
433     "Required 30BIT DMA mask unsupported by the system\n");
434     goto err_out_powerdown;
435     diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
436     index 8634337e1a99d..9e5251c427a36 100644
437     --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
438     +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
439     @@ -1862,7 +1862,7 @@ static int bnxt_get_module_eeprom(struct net_device *dev,
440     /* Read A2 portion of the EEPROM */
441     if (length) {
442     start -= ETH_MODULE_SFF_8436_LEN;
443     - rc = bnxt_read_sfp_module_eeprom_info(bp, I2C_DEV_ADDR_A2, 1,
444     + rc = bnxt_read_sfp_module_eeprom_info(bp, I2C_DEV_ADDR_A2, 0,
445     start, length, data);
446     }
447     return rc;
448     diff --git a/drivers/net/ethernet/faraday/ftgmac100.c b/drivers/net/ethernet/faraday/ftgmac100.c
449     index 0437149f59392..65859ecf5c328 100644
450     --- a/drivers/net/ethernet/faraday/ftgmac100.c
451     +++ b/drivers/net/ethernet/faraday/ftgmac100.c
452     @@ -1444,6 +1444,8 @@ static int ftgmac100_probe(struct platform_device *pdev)
453     return 0;
454    
455     err_ncsi_dev:
456     + if (priv->ndev)
457     + ncsi_unregister_dev(priv->ndev);
458     err_register_netdev:
459     ftgmac100_destroy_mdio(netdev);
460     err_setup_mdio:
461     @@ -1465,6 +1467,8 @@ static int __exit ftgmac100_remove(struct platform_device *pdev)
462     netdev = platform_get_drvdata(pdev);
463     priv = netdev_priv(netdev);
464    
465     + if (priv->ndev)
466     + ncsi_unregister_dev(priv->ndev);
467     unregister_netdev(netdev);
468     ftgmac100_destroy_mdio(netdev);
469    
470     diff --git a/drivers/net/ethernet/mellanox/mlx4/fw.c b/drivers/net/ethernet/mellanox/mlx4/fw.c
471     index fe9dc1b3078c5..7c3e505cf2557 100644
472     --- a/drivers/net/ethernet/mellanox/mlx4/fw.c
473     +++ b/drivers/net/ethernet/mellanox/mlx4/fw.c
474     @@ -1843,14 +1843,14 @@ int mlx4_INIT_HCA(struct mlx4_dev *dev, struct mlx4_init_hca_param *param)
475     #define INIT_HCA_LOG_RD_OFFSET (INIT_HCA_QPC_OFFSET + 0x77)
476     #define INIT_HCA_MCAST_OFFSET 0x0c0
477     #define INIT_HCA_MC_BASE_OFFSET (INIT_HCA_MCAST_OFFSET + 0x00)
478     -#define INIT_HCA_LOG_MC_ENTRY_SZ_OFFSET (INIT_HCA_MCAST_OFFSET + 0x12)
479     -#define INIT_HCA_LOG_MC_HASH_SZ_OFFSET (INIT_HCA_MCAST_OFFSET + 0x16)
480     +#define INIT_HCA_LOG_MC_ENTRY_SZ_OFFSET (INIT_HCA_MCAST_OFFSET + 0x13)
481     +#define INIT_HCA_LOG_MC_HASH_SZ_OFFSET (INIT_HCA_MCAST_OFFSET + 0x17)
482     #define INIT_HCA_UC_STEERING_OFFSET (INIT_HCA_MCAST_OFFSET + 0x18)
483     #define INIT_HCA_LOG_MC_TABLE_SZ_OFFSET (INIT_HCA_MCAST_OFFSET + 0x1b)
484     #define INIT_HCA_DEVICE_MANAGED_FLOW_STEERING_EN 0x6
485     #define INIT_HCA_FS_PARAM_OFFSET 0x1d0
486     #define INIT_HCA_FS_BASE_OFFSET (INIT_HCA_FS_PARAM_OFFSET + 0x00)
487     -#define INIT_HCA_FS_LOG_ENTRY_SZ_OFFSET (INIT_HCA_FS_PARAM_OFFSET + 0x12)
488     +#define INIT_HCA_FS_LOG_ENTRY_SZ_OFFSET (INIT_HCA_FS_PARAM_OFFSET + 0x13)
489     #define INIT_HCA_FS_A0_OFFSET (INIT_HCA_FS_PARAM_OFFSET + 0x18)
490     #define INIT_HCA_FS_LOG_TABLE_SZ_OFFSET (INIT_HCA_FS_PARAM_OFFSET + 0x1b)
491     #define INIT_HCA_FS_ETH_BITS_OFFSET (INIT_HCA_FS_PARAM_OFFSET + 0x21)
492     diff --git a/drivers/net/ethernet/mellanox/mlx4/fw.h b/drivers/net/ethernet/mellanox/mlx4/fw.h
493     index 5343a0599253b..b30a5a9b9777b 100644
494     --- a/drivers/net/ethernet/mellanox/mlx4/fw.h
495     +++ b/drivers/net/ethernet/mellanox/mlx4/fw.h
496     @@ -184,8 +184,8 @@ struct mlx4_init_hca_param {
497     u64 cmpt_base;
498     u64 mtt_base;
499     u64 global_caps;
500     - u16 log_mc_entry_sz;
501     - u16 log_mc_hash_sz;
502     + u8 log_mc_entry_sz;
503     + u8 log_mc_hash_sz;
504     u16 hca_core_clock; /* Internal Clock Frequency (in MHz) */
505     u8 log_num_qps;
506     u8 log_num_srqs;
507     diff --git a/drivers/net/ethernet/mellanox/mlxsw/core.c b/drivers/net/ethernet/mellanox/mlxsw/core.c
508     index bdf29d0cf4d77..901835d70f734 100644
509     --- a/drivers/net/ethernet/mellanox/mlxsw/core.c
510     +++ b/drivers/net/ethernet/mellanox/mlxsw/core.c
511     @@ -436,7 +436,7 @@ static void mlxsw_emad_trans_timeout_schedule(struct mlxsw_reg_trans *trans)
512     {
513     unsigned long timeout = msecs_to_jiffies(MLXSW_EMAD_TIMEOUT_MS);
514    
515     - mlxsw_core_schedule_dw(&trans->timeout_dw, timeout);
516     + mlxsw_core_schedule_dw(&trans->timeout_dw, timeout << trans->retries);
517     }
518    
519     static int mlxsw_emad_transmit(struct mlxsw_core *mlxsw_core,
520     diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c
521     index cda5b0a9e9489..10286215092f6 100644
522     --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c
523     +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c
524     @@ -2251,7 +2251,8 @@ static int qlcnic_83xx_restart_hw(struct qlcnic_adapter *adapter)
525    
526     /* Boot either flash image or firmware image from host file system */
527     if (qlcnic_load_fw_file == 1) {
528     - if (qlcnic_83xx_load_fw_image_from_host(adapter))
529     + err = qlcnic_83xx_load_fw_image_from_host(adapter);
530     + if (err)
531     return err;
532     } else {
533     QLC_SHARED_REG_WR32(adapter, QLCNIC_FW_IMG_VALID,
534     diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c
535     index 74c925cd19a93..a571024882d7c 100644
536     --- a/drivers/net/usb/qmi_wwan.c
537     +++ b/drivers/net/usb/qmi_wwan.c
538     @@ -705,7 +705,7 @@ static const struct usb_device_id products[] = {
539     {QMI_FIXED_INTF(0x05c6, 0x9011, 4)},
540     {QMI_FIXED_INTF(0x05c6, 0x9021, 1)},
541     {QMI_FIXED_INTF(0x05c6, 0x9022, 2)},
542     - {QMI_FIXED_INTF(0x05c6, 0x9025, 4)}, /* Alcatel-sbell ASB TL131 TDD LTE (China Mobile) */
543     + {QMI_QUIRK_SET_DTR(0x05c6, 0x9025, 4)}, /* Alcatel-sbell ASB TL131 TDD LTE (China Mobile) */
544     {QMI_FIXED_INTF(0x05c6, 0x9026, 3)},
545     {QMI_FIXED_INTF(0x05c6, 0x902e, 5)},
546     {QMI_FIXED_INTF(0x05c6, 0x9031, 5)},
547     diff --git a/drivers/pinctrl/pinctrl-rockchip.c b/drivers/pinctrl/pinctrl-rockchip.c
548     index 417cd3bd7e0c9..ee2dcea1e54b9 100644
549     --- a/drivers/pinctrl/pinctrl-rockchip.c
550     +++ b/drivers/pinctrl/pinctrl-rockchip.c
551     @@ -1815,7 +1815,9 @@ static int rockchip_gpio_to_irq(struct gpio_chip *gc, unsigned offset)
552     if (!bank->domain)
553     return -ENXIO;
554    
555     + clk_enable(bank->clk);
556     virq = irq_create_mapping(bank->domain, offset);
557     + clk_disable(bank->clk);
558    
559     return (virq) ? : -ENXIO;
560     }
561     diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
562     index 0caf751d85ded..0a0dd0aac047c 100644
563     --- a/drivers/regulator/core.c
564     +++ b/drivers/regulator/core.c
565     @@ -1025,7 +1025,6 @@ static int _regulator_do_enable(struct regulator_dev *rdev);
566     /**
567     * set_machine_constraints - sets regulator constraints
568     * @rdev: regulator source
569     - * @constraints: constraints to apply
570     *
571     * Allows platform initialisation code to define and constrain
572     * regulator circuits e.g. valid voltage/current ranges, etc. NOTE:
573     @@ -1033,21 +1032,11 @@ static int _regulator_do_enable(struct regulator_dev *rdev);
574     * regulator operations to proceed i.e. set_voltage, set_current_limit,
575     * set_mode.
576     */
577     -static int set_machine_constraints(struct regulator_dev *rdev,
578     - const struct regulation_constraints *constraints)
579     +static int set_machine_constraints(struct regulator_dev *rdev)
580     {
581     int ret = 0;
582     const struct regulator_ops *ops = rdev->desc->ops;
583    
584     - if (constraints)
585     - rdev->constraints = kmemdup(constraints, sizeof(*constraints),
586     - GFP_KERNEL);
587     - else
588     - rdev->constraints = kzalloc(sizeof(*constraints),
589     - GFP_KERNEL);
590     - if (!rdev->constraints)
591     - return -ENOMEM;
592     -
593     ret = machine_constraints_voltage(rdev, rdev->constraints);
594     if (ret != 0)
595     return ret;
596     @@ -3924,7 +3913,6 @@ struct regulator_dev *
597     regulator_register(const struct regulator_desc *regulator_desc,
598     const struct regulator_config *cfg)
599     {
600     - const struct regulation_constraints *constraints = NULL;
601     const struct regulator_init_data *init_data;
602     struct regulator_config *config = NULL;
603     static atomic_t regulator_no = ATOMIC_INIT(-1);
604     @@ -4024,14 +4012,23 @@ regulator_register(const struct regulator_desc *regulator_desc,
605    
606     /* set regulator constraints */
607     if (init_data)
608     - constraints = &init_data->constraints;
609     + rdev->constraints = kmemdup(&init_data->constraints,
610     + sizeof(*rdev->constraints),
611     + GFP_KERNEL);
612     + else
613     + rdev->constraints = kzalloc(sizeof(*rdev->constraints),
614     + GFP_KERNEL);
615     + if (!rdev->constraints) {
616     + ret = -ENOMEM;
617     + goto wash;
618     + }
619    
620     if (init_data && init_data->supply_regulator)
621     rdev->supply_name = init_data->supply_regulator;
622     else if (regulator_desc->supply_name)
623     rdev->supply_name = regulator_desc->supply_name;
624    
625     - ret = set_machine_constraints(rdev, constraints);
626     + ret = set_machine_constraints(rdev);
627     if (ret == -EPROBE_DEFER) {
628     /* Regulator might be in bypass mode and so needs its supply
629     * to set the constraints */
630     @@ -4040,7 +4037,7 @@ regulator_register(const struct regulator_desc *regulator_desc,
631     * that is just being created */
632     ret = regulator_resolve_supply(rdev);
633     if (!ret)
634     - ret = set_machine_constraints(rdev, constraints);
635     + ret = set_machine_constraints(rdev);
636     else
637     rdev_dbg(rdev, "unable to resolve supply early: %pe\n",
638     ERR_PTR(ret));
639     diff --git a/drivers/regulator/ti-abb-regulator.c b/drivers/regulator/ti-abb-regulator.c
640     index 6d17357b3a248..5f5f63eb8c762 100644
641     --- a/drivers/regulator/ti-abb-regulator.c
642     +++ b/drivers/regulator/ti-abb-regulator.c
643     @@ -342,8 +342,17 @@ static int ti_abb_set_voltage_sel(struct regulator_dev *rdev, unsigned sel)
644     return ret;
645     }
646    
647     - /* If data is exactly the same, then just update index, no change */
648     info = &abb->info[sel];
649     + /*
650     + * When Linux kernel is starting up, we are'nt sure of the
651     + * Bias configuration that bootloader has configured.
652     + * So, we get to know the actual setting the first time
653     + * we are asked to transition.
654     + */
655     + if (abb->current_info_idx == -EINVAL)
656     + goto just_set_abb;
657     +
658     + /* If data is exactly the same, then just update index, no change */
659     oinfo = &abb->info[abb->current_info_idx];
660     if (!memcmp(info, oinfo, sizeof(*info))) {
661     dev_dbg(dev, "%s: Same data new idx=%d, old idx=%d\n", __func__,
662     @@ -351,6 +360,7 @@ static int ti_abb_set_voltage_sel(struct regulator_dev *rdev, unsigned sel)
663     goto out;
664     }
665    
666     +just_set_abb:
667     ret = ti_abb_set_opp(rdev, abb, info);
668    
669     out:
670     diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
671     index 325c38c9b4516..a60376496b1a7 100644
672     --- a/drivers/tty/serial/imx.c
673     +++ b/drivers/tty/serial/imx.c
674     @@ -1787,16 +1787,6 @@ imx_console_write(struct console *co, const char *s, unsigned int count)
675     unsigned int ucr1;
676     unsigned long flags = 0;
677     int locked = 1;
678     - int retval;
679     -
680     - retval = clk_enable(sport->clk_per);
681     - if (retval)
682     - return;
683     - retval = clk_enable(sport->clk_ipg);
684     - if (retval) {
685     - clk_disable(sport->clk_per);
686     - return;
687     - }
688    
689     if (sport->port.sysrq)
690     locked = 0;
691     @@ -1832,9 +1822,6 @@ imx_console_write(struct console *co, const char *s, unsigned int count)
692    
693     if (locked)
694     spin_unlock_irqrestore(&sport->port.lock, flags);
695     -
696     - clk_disable(sport->clk_ipg);
697     - clk_disable(sport->clk_per);
698     }
699    
700     /*
701     @@ -1935,15 +1922,14 @@ imx_console_setup(struct console *co, char *options)
702    
703     retval = uart_set_options(&sport->port, co, baud, parity, bits, flow);
704    
705     - clk_disable(sport->clk_ipg);
706     if (retval) {
707     - clk_unprepare(sport->clk_ipg);
708     + clk_disable_unprepare(sport->clk_ipg);
709     goto error_console;
710     }
711    
712     - retval = clk_prepare(sport->clk_per);
713     + retval = clk_prepare_enable(sport->clk_per);
714     if (retval)
715     - clk_unprepare(sport->clk_ipg);
716     + clk_disable_unprepare(sport->clk_ipg);
717    
718     error_console:
719     return retval;
720     diff --git a/fs/efivarfs/super.c b/fs/efivarfs/super.c
721     index b1e6acec53041..bbf056191aaa4 100644
722     --- a/fs/efivarfs/super.c
723     +++ b/fs/efivarfs/super.c
724     @@ -23,6 +23,7 @@ LIST_HEAD(efivarfs_list);
725     static void efivarfs_evict_inode(struct inode *inode)
726     {
727     clear_inode(inode);
728     + kfree(inode->i_private);
729     }
730    
731     static const struct super_operations efivarfs_ops = {
732     diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
733     index 360954196e2f3..54a7f3b8b1bf3 100644
734     --- a/fs/ext4/ext4.h
735     +++ b/fs/ext4/ext4.h
736     @@ -2395,7 +2395,8 @@ int ext4_insert_dentry(struct inode *dir,
737     struct ext4_filename *fname);
738     static inline void ext4_update_dx_flag(struct inode *inode)
739     {
740     - if (!ext4_has_feature_dir_index(inode->i_sb)) {
741     + if (!ext4_has_feature_dir_index(inode->i_sb) &&
742     + ext4_test_inode_flag(inode, EXT4_INODE_INDEX)) {
743     /* ext4_iget() should have caught this... */
744     WARN_ON_ONCE(ext4_has_feature_metadata_csum(inode->i_sb));
745     ext4_clear_inode_flag(inode, EXT4_INODE_INDEX);
746     diff --git a/fs/libfs.c b/fs/libfs.c
747     index 278457f221482..835d25e335095 100644
748     --- a/fs/libfs.c
749     +++ b/fs/libfs.c
750     @@ -865,7 +865,7 @@ ssize_t simple_attr_write(struct file *file, const char __user *buf,
751     size_t len, loff_t *ppos)
752     {
753     struct simple_attr *attr;
754     - u64 val;
755     + unsigned long long val;
756     size_t size;
757     ssize_t ret;
758    
759     @@ -883,7 +883,9 @@ ssize_t simple_attr_write(struct file *file, const char __user *buf,
760     goto out;
761    
762     attr->set_buf[size] = '\0';
763     - val = simple_strtoll(attr->set_buf, NULL, 0);
764     + ret = kstrtoull(attr->set_buf, 0, &val);
765     + if (ret)
766     + goto out;
767     ret = attr->set(attr->data, val);
768     if (ret == 0)
769     ret = len; /* on success, claim we got the whole input */
770     diff --git a/fs/super.c b/fs/super.c
771     index abe2541fb28c2..377c439477b74 100644
772     --- a/fs/super.c
773     +++ b/fs/super.c
774     @@ -1254,36 +1254,11 @@ EXPORT_SYMBOL(__sb_end_write);
775     */
776     int __sb_start_write(struct super_block *sb, int level, bool wait)
777     {
778     - bool force_trylock = false;
779     - int ret = 1;
780     + if (!wait)
781     + return percpu_down_read_trylock(sb->s_writers.rw_sem + level-1);
782    
783     -#ifdef CONFIG_LOCKDEP
784     - /*
785     - * We want lockdep to tell us about possible deadlocks with freezing
786     - * but it's it bit tricky to properly instrument it. Getting a freeze
787     - * protection works as getting a read lock but there are subtle
788     - * problems. XFS for example gets freeze protection on internal level
789     - * twice in some cases, which is OK only because we already hold a
790     - * freeze protection also on higher level. Due to these cases we have
791     - * to use wait == F (trylock mode) which must not fail.
792     - */
793     - if (wait) {
794     - int i;
795     -
796     - for (i = 0; i < level - 1; i++)
797     - if (percpu_rwsem_is_held(sb->s_writers.rw_sem + i)) {
798     - force_trylock = true;
799     - break;
800     - }
801     - }
802     -#endif
803     - if (wait && !force_trylock)
804     - percpu_down_read(sb->s_writers.rw_sem + level-1);
805     - else
806     - ret = percpu_down_read_trylock(sb->s_writers.rw_sem + level-1);
807     -
808     - WARN_ON(force_trylock && !ret);
809     - return ret;
810     + percpu_down_read(sb->s_writers.rw_sem + level-1);
811     + return 1;
812     }
813     EXPORT_SYMBOL(__sb_start_write);
814    
815     diff --git a/fs/xfs/libxfs/xfs_rmap_btree.c b/fs/xfs/libxfs/xfs_rmap_btree.c
816     index c5a24b80c7f72..33a28efc3085b 100644
817     --- a/fs/xfs/libxfs/xfs_rmap_btree.c
818     +++ b/fs/xfs/libxfs/xfs_rmap_btree.c
819     @@ -262,8 +262,8 @@ xfs_rmapbt_key_diff(
820     else if (y > x)
821     return -1;
822    
823     - x = be64_to_cpu(kp->rm_offset);
824     - y = xfs_rmap_irec_offset_pack(rec);
825     + x = XFS_RMAP_OFF(be64_to_cpu(kp->rm_offset));
826     + y = rec->rm_offset;
827     if (x > y)
828     return 1;
829     else if (y > x)
830     @@ -294,8 +294,8 @@ xfs_rmapbt_diff_two_keys(
831     else if (y > x)
832     return -1;
833    
834     - x = be64_to_cpu(kp1->rm_offset);
835     - y = be64_to_cpu(kp2->rm_offset);
836     + x = XFS_RMAP_OFF(be64_to_cpu(kp1->rm_offset));
837     + y = XFS_RMAP_OFF(be64_to_cpu(kp2->rm_offset));
838     if (x > y)
839     return 1;
840     else if (y > x)
841     @@ -401,8 +401,8 @@ xfs_rmapbt_keys_inorder(
842     return 1;
843     else if (a > b)
844     return 0;
845     - a = be64_to_cpu(k1->rmap.rm_offset);
846     - b = be64_to_cpu(k2->rmap.rm_offset);
847     + a = XFS_RMAP_OFF(be64_to_cpu(k1->rmap.rm_offset));
848     + b = XFS_RMAP_OFF(be64_to_cpu(k2->rmap.rm_offset));
849     if (a <= b)
850     return 1;
851     return 0;
852     @@ -431,8 +431,8 @@ xfs_rmapbt_recs_inorder(
853     return 1;
854     else if (a > b)
855     return 0;
856     - a = be64_to_cpu(r1->rmap.rm_offset);
857     - b = be64_to_cpu(r2->rmap.rm_offset);
858     + a = XFS_RMAP_OFF(be64_to_cpu(r1->rmap.rm_offset));
859     + b = XFS_RMAP_OFF(be64_to_cpu(r2->rmap.rm_offset));
860     if (a <= b)
861     return 1;
862     return 0;
863     diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c
864     index 928bd5515f02f..495655bcee69e 100644
865     --- a/net/bridge/br_device.c
866     +++ b/net/bridge/br_device.c
867     @@ -177,6 +177,7 @@ static struct rtnl_link_stats64 *br_get_stats64(struct net_device *dev,
868     sum.rx_packets += tmp.rx_packets;
869     }
870    
871     + netdev_stats_to_stats64(stats, &dev->stats);
872     stats->tx_bytes = sum.tx_bytes;
873     stats->tx_packets = sum.tx_packets;
874     stats->rx_bytes = sum.rx_bytes;
875     diff --git a/net/core/devlink.c b/net/core/devlink.c
876     index 1b5063088f1a7..785fbaac047ff 100644
877     --- a/net/core/devlink.c
878     +++ b/net/core/devlink.c
879     @@ -986,7 +986,7 @@ static int devlink_nl_sb_port_pool_fill(struct sk_buff *msg,
880     err = ops->sb_occ_port_pool_get(devlink_port, devlink_sb->index,
881     pool_index, &cur, &max);
882     if (err && err != -EOPNOTSUPP)
883     - return err;
884     + goto sb_occ_get_failure;
885     if (!err) {
886     if (nla_put_u32(msg, DEVLINK_ATTR_SB_OCC_CUR, cur))
887     goto nla_put_failure;
888     @@ -999,8 +999,10 @@ static int devlink_nl_sb_port_pool_fill(struct sk_buff *msg,
889     return 0;
890    
891     nla_put_failure:
892     + err = -EMSGSIZE;
893     +sb_occ_get_failure:
894     genlmsg_cancel(msg, hdr);
895     - return -EMSGSIZE;
896     + return err;
897     }
898    
899     static int devlink_nl_cmd_sb_port_pool_get_doit(struct sk_buff *skb,
900     diff --git a/net/core/netpoll.c b/net/core/netpoll.c
901     index 9c1bad3909bd7..0fa6269c3f20d 100644
902     --- a/net/core/netpoll.c
903     +++ b/net/core/netpoll.c
904     @@ -28,6 +28,7 @@
905     #include <linux/slab.h>
906     #include <linux/export.h>
907     #include <linux/if_vlan.h>
908     +#include <net/dsa.h>
909     #include <net/tcp.h>
910     #include <net/udp.h>
911     #include <net/addrconf.h>
912     @@ -661,15 +662,15 @@ EXPORT_SYMBOL_GPL(__netpoll_setup);
913    
914     int netpoll_setup(struct netpoll *np)
915     {
916     - struct net_device *ndev = NULL;
917     + struct net_device *ndev = NULL, *dev = NULL;
918     + struct net *net = current->nsproxy->net_ns;
919     struct in_device *in_dev;
920     int err;
921    
922     rtnl_lock();
923     - if (np->dev_name[0]) {
924     - struct net *net = current->nsproxy->net_ns;
925     + if (np->dev_name[0])
926     ndev = __dev_get_by_name(net, np->dev_name);
927     - }
928     +
929     if (!ndev) {
930     np_err(np, "%s doesn't exist, aborting\n", np->dev_name);
931     err = -ENODEV;
932     @@ -677,6 +678,19 @@ int netpoll_setup(struct netpoll *np)
933     }
934     dev_hold(ndev);
935    
936     + /* bring up DSA management network devices up first */
937     + for_each_netdev(net, dev) {
938     + if (!netdev_uses_dsa(dev))
939     + continue;
940     +
941     + err = dev_change_flags(dev, dev->flags | IFF_UP);
942     + if (err < 0) {
943     + np_err(np, "%s failed to open %s\n",
944     + np->dev_name, dev->name);
945     + goto put;
946     + }
947     + }
948     +
949     if (netdev_master_upper_dev_get(ndev)) {
950     np_err(np, "%s is a slave device, aborting\n", np->dev_name);
951     err = -EBUSY;
952     diff --git a/net/ipv4/inet_diag.c b/net/ipv4/inet_diag.c
953     index 4273576e14754..9b25809b2d457 100644
954     --- a/net/ipv4/inet_diag.c
955     +++ b/net/ipv4/inet_diag.c
956     @@ -355,8 +355,10 @@ static int inet_req_diag_fill(struct sock *sk, struct sk_buff *skb,
957     r->idiag_inode = 0;
958    
959     if (net_admin && nla_put_u32(skb, INET_DIAG_MARK,
960     - inet_rsk(reqsk)->ir_mark))
961     + inet_rsk(reqsk)->ir_mark)) {
962     + nlmsg_cancel(skb, nlh);
963     return -EMSGSIZE;
964     + }
965    
966     nlmsg_end(skb, nlh);
967     return 0;
968     diff --git a/net/ipv4/tcp_bbr.c b/net/ipv4/tcp_bbr.c
969     index 3bfab2d415749..c22da42376fe9 100644
970     --- a/net/ipv4/tcp_bbr.c
971     +++ b/net/ipv4/tcp_bbr.c
972     @@ -740,7 +740,7 @@ static void bbr_update_min_rtt(struct sock *sk, const struct rate_sample *rs)
973     filter_expired = after(tcp_time_stamp,
974     bbr->min_rtt_stamp + bbr_min_rtt_win_sec * HZ);
975     if (rs->rtt_us >= 0 &&
976     - (rs->rtt_us <= bbr->min_rtt_us || filter_expired)) {
977     + (rs->rtt_us < bbr->min_rtt_us || filter_expired)) {
978     bbr->min_rtt_us = rs->rtt_us;
979     bbr->min_rtt_stamp = tcp_time_stamp;
980     }
981     diff --git a/net/ipv6/ah6.c b/net/ipv6/ah6.c
982     index 0edc44cb254e0..519e0730d9f62 100644
983     --- a/net/ipv6/ah6.c
984     +++ b/net/ipv6/ah6.c
985     @@ -595,7 +595,8 @@ static int ah6_input(struct xfrm_state *x, struct sk_buff *skb)
986     memcpy(auth_data, ah->auth_data, ahp->icv_trunc_len);
987     memset(ah->auth_data, 0, ahp->icv_trunc_len);
988    
989     - if (ipv6_clear_mutable_options(ip6h, hdr_len, XFRM_POLICY_IN))
990     + err = ipv6_clear_mutable_options(ip6h, hdr_len, XFRM_POLICY_IN);
991     + if (err)
992     goto out_free;
993    
994     ip6h->priority = 0;
995     diff --git a/net/mac80211/rc80211_minstrel.c b/net/mac80211/rc80211_minstrel.c
996     index 14c5ba3a1b1c6..e913869193991 100644
997     --- a/net/mac80211/rc80211_minstrel.c
998     +++ b/net/mac80211/rc80211_minstrel.c
999     @@ -274,7 +274,7 @@ minstrel_tx_status(void *priv, struct ieee80211_supported_band *sband,
1000     success = !!(info->flags & IEEE80211_TX_STAT_ACK);
1001    
1002     for (i = 0; i < IEEE80211_TX_MAX_RATES; i++) {
1003     - if (ar[i].idx < 0)
1004     + if (ar[i].idx < 0 || !ar[i].count)
1005     break;
1006    
1007     ndx = rix_to_ndx(mi, ar[i].idx);
1008     @@ -287,12 +287,6 @@ minstrel_tx_status(void *priv, struct ieee80211_supported_band *sband,
1009     mi->r[ndx].stats.success += success;
1010     }
1011    
1012     - if ((info->flags & IEEE80211_TX_CTL_RATE_CTRL_PROBE) && (i >= 0))
1013     - mi->sample_packets++;
1014     -
1015     - if (mi->sample_deferred > 0)
1016     - mi->sample_deferred--;
1017     -
1018     if (time_after(jiffies, mi->last_stats_update +
1019     (mp->update_interval * HZ) / 1000))
1020     minstrel_update_stats(mp, mi);
1021     @@ -366,7 +360,7 @@ minstrel_get_rate(void *priv, struct ieee80211_sta *sta,
1022     #endif
1023    
1024     delta = (mi->total_packets * sampling_ratio / 100) -
1025     - (mi->sample_packets + mi->sample_deferred / 2);
1026     + mi->sample_packets;
1027    
1028     /* delta < 0: no sampling required */
1029     prev_sample = mi->prev_sample;
1030     @@ -375,7 +369,6 @@ minstrel_get_rate(void *priv, struct ieee80211_sta *sta,
1031     return;
1032    
1033     if (mi->total_packets >= 10000) {
1034     - mi->sample_deferred = 0;
1035     mi->sample_packets = 0;
1036     mi->total_packets = 0;
1037     } else if (delta > mi->n_rates * 2) {
1038     @@ -400,19 +393,8 @@ minstrel_get_rate(void *priv, struct ieee80211_sta *sta,
1039     * rate sampling method should be used.
1040     * Respect such rates that are not sampled for 20 interations.
1041     */
1042     - if (mrr_capable &&
1043     - msr->perfect_tx_time > mr->perfect_tx_time &&
1044     - msr->stats.sample_skipped < 20) {
1045     - /* Only use IEEE80211_TX_CTL_RATE_CTRL_PROBE to mark
1046     - * packets that have the sampling rate deferred to the
1047     - * second MRR stage. Increase the sample counter only
1048     - * if the deferred sample rate was actually used.
1049     - * Use the sample_deferred counter to make sure that
1050     - * the sampling is not done in large bursts */
1051     - info->flags |= IEEE80211_TX_CTL_RATE_CTRL_PROBE;
1052     - rate++;
1053     - mi->sample_deferred++;
1054     - } else {
1055     + if (msr->perfect_tx_time < mr->perfect_tx_time ||
1056     + msr->stats.sample_skipped >= 20) {
1057     if (!msr->sample_limit)
1058     return;
1059    
1060     @@ -432,6 +414,7 @@ minstrel_get_rate(void *priv, struct ieee80211_sta *sta,
1061    
1062     rate->idx = mi->r[ndx].rix;
1063     rate->count = minstrel_get_retry_count(&mi->r[ndx], info);
1064     + info->flags |= IEEE80211_TX_CTL_RATE_CTRL_PROBE;
1065     }
1066    
1067    
1068     diff --git a/net/mac80211/rc80211_minstrel.h b/net/mac80211/rc80211_minstrel.h
1069     index c230bbe93262b..5a9e44f4fba49 100644
1070     --- a/net/mac80211/rc80211_minstrel.h
1071     +++ b/net/mac80211/rc80211_minstrel.h
1072     @@ -105,7 +105,6 @@ struct minstrel_sta_info {
1073     u8 max_prob_rate;
1074     unsigned int total_packets;
1075     unsigned int sample_packets;
1076     - int sample_deferred;
1077    
1078     unsigned int sample_row;
1079     unsigned int sample_column;
1080     diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c
1081     index 8a9bbcfefbca6..bdcc6cb60b1c8 100644
1082     --- a/net/mac80211/sta_info.c
1083     +++ b/net/mac80211/sta_info.c
1084     @@ -601,7 +601,7 @@ static int sta_info_insert_finish(struct sta_info *sta) __acquires(RCU)
1085     out_drop_sta:
1086     local->num_sta--;
1087     synchronize_net();
1088     - __cleanup_single_sta(sta);
1089     + cleanup_single_sta(sta);
1090     out_err:
1091     mutex_unlock(&local->sta_mtx);
1092     kfree(sinfo);
1093     @@ -620,19 +620,13 @@ int sta_info_insert_rcu(struct sta_info *sta) __acquires(RCU)
1094    
1095     err = sta_info_insert_check(sta);
1096     if (err) {
1097     + sta_info_free(local, sta);
1098     mutex_unlock(&local->sta_mtx);
1099     rcu_read_lock();
1100     - goto out_free;
1101     + return err;
1102     }
1103    
1104     - err = sta_info_insert_finish(sta);
1105     - if (err)
1106     - goto out_free;
1107     -
1108     - return 0;
1109     - out_free:
1110     - sta_info_free(local, sta);
1111     - return err;
1112     + return sta_info_insert_finish(sta);
1113     }
1114    
1115     int sta_info_insert(struct sta_info *sta)
1116     diff --git a/net/netlabel/netlabel_unlabeled.c b/net/netlabel/netlabel_unlabeled.c
1117     index 053ba86461559..467e0d19cdfea 100644
1118     --- a/net/netlabel/netlabel_unlabeled.c
1119     +++ b/net/netlabel/netlabel_unlabeled.c
1120     @@ -1185,12 +1185,13 @@ static int netlbl_unlabel_staticlist(struct sk_buff *skb,
1121     struct netlbl_unlhsh_walk_arg cb_arg;
1122     u32 skip_bkt = cb->args[0];
1123     u32 skip_chain = cb->args[1];
1124     - u32 iter_bkt;
1125     - u32 iter_chain = 0, iter_addr4 = 0, iter_addr6 = 0;
1126     + u32 skip_addr4 = cb->args[2];
1127     + u32 iter_bkt, iter_chain = 0, iter_addr4 = 0, iter_addr6 = 0;
1128     struct netlbl_unlhsh_iface *iface;
1129     struct list_head *iter_list;
1130     struct netlbl_af4list *addr4;
1131     #if IS_ENABLED(CONFIG_IPV6)
1132     + u32 skip_addr6 = cb->args[3];
1133     struct netlbl_af6list *addr6;
1134     #endif
1135    
1136     @@ -1201,7 +1202,7 @@ static int netlbl_unlabel_staticlist(struct sk_buff *skb,
1137     rcu_read_lock();
1138     for (iter_bkt = skip_bkt;
1139     iter_bkt < rcu_dereference(netlbl_unlhsh)->size;
1140     - iter_bkt++, iter_chain = 0, iter_addr4 = 0, iter_addr6 = 0) {
1141     + iter_bkt++) {
1142     iter_list = &rcu_dereference(netlbl_unlhsh)->tbl[iter_bkt];
1143     list_for_each_entry_rcu(iface, iter_list, list) {
1144     if (!iface->valid ||
1145     @@ -1209,7 +1210,7 @@ static int netlbl_unlabel_staticlist(struct sk_buff *skb,
1146     continue;
1147     netlbl_af4list_foreach_rcu(addr4,
1148     &iface->addr4_list) {
1149     - if (iter_addr4++ < cb->args[2])
1150     + if (iter_addr4++ < skip_addr4)
1151     continue;
1152     if (netlbl_unlabel_staticlist_gen(
1153     NLBL_UNLABEL_C_STATICLIST,
1154     @@ -1222,10 +1223,12 @@ static int netlbl_unlabel_staticlist(struct sk_buff *skb,
1155     goto unlabel_staticlist_return;
1156     }
1157     }
1158     + iter_addr4 = 0;
1159     + skip_addr4 = 0;
1160     #if IS_ENABLED(CONFIG_IPV6)
1161     netlbl_af6list_foreach_rcu(addr6,
1162     &iface->addr6_list) {
1163     - if (iter_addr6++ < cb->args[3])
1164     + if (iter_addr6++ < skip_addr6)
1165     continue;
1166     if (netlbl_unlabel_staticlist_gen(
1167     NLBL_UNLABEL_C_STATICLIST,
1168     @@ -1238,8 +1241,12 @@ static int netlbl_unlabel_staticlist(struct sk_buff *skb,
1169     goto unlabel_staticlist_return;
1170     }
1171     }
1172     + iter_addr6 = 0;
1173     + skip_addr6 = 0;
1174     #endif /* IPv6 */
1175     }
1176     + iter_chain = 0;
1177     + skip_chain = 0;
1178     }
1179    
1180     unlabel_staticlist_return:
1181     diff --git a/net/sctp/input.c b/net/sctp/input.c
1182     index 969fb1623e4ef..12d821ea8a1f6 100644
1183     --- a/net/sctp/input.c
1184     +++ b/net/sctp/input.c
1185     @@ -449,7 +449,7 @@ void sctp_icmp_proto_unreachable(struct sock *sk,
1186     else {
1187     if (!mod_timer(&t->proto_unreach_timer,
1188     jiffies + (HZ/20)))
1189     - sctp_association_hold(asoc);
1190     + sctp_transport_hold(t);
1191     }
1192     } else {
1193     struct net *net = sock_net(sk);
1194     @@ -458,7 +458,7 @@ void sctp_icmp_proto_unreachable(struct sock *sk,
1195     "encountered!\n", __func__);
1196    
1197     if (del_timer(&t->proto_unreach_timer))
1198     - sctp_association_put(asoc);
1199     + sctp_transport_put(t);
1200    
1201     sctp_do_sm(net, SCTP_EVENT_T_OTHER,
1202     SCTP_ST_OTHER(SCTP_EVENT_ICMP_PROTO_UNREACH),
1203     diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c
1204     index 1133fa0830f4e..26e2927e0c6e2 100644
1205     --- a/net/sctp/sm_sideeffect.c
1206     +++ b/net/sctp/sm_sideeffect.c
1207     @@ -417,7 +417,7 @@ void sctp_generate_proto_unreach_event(unsigned long data)
1208     /* Try again later. */
1209     if (!mod_timer(&transport->proto_unreach_timer,
1210     jiffies + (HZ/20)))
1211     - sctp_association_hold(asoc);
1212     + sctp_transport_hold(transport);
1213     goto out_unlock;
1214     }
1215    
1216     @@ -433,7 +433,7 @@ void sctp_generate_proto_unreach_event(unsigned long data)
1217    
1218     out_unlock:
1219     bh_unlock_sock(sk);
1220     - sctp_association_put(asoc);
1221     + sctp_transport_put(transport);
1222     }
1223    
1224    
1225     diff --git a/net/sctp/transport.c b/net/sctp/transport.c
1226     index 5c78942550e97..bace37b086e98 100644
1227     --- a/net/sctp/transport.c
1228     +++ b/net/sctp/transport.c
1229     @@ -146,7 +146,7 @@ void sctp_transport_free(struct sctp_transport *transport)
1230    
1231     /* Delete the ICMP proto unreachable timer if it's active. */
1232     if (del_timer(&transport->proto_unreach_timer))
1233     - sctp_association_put(transport->asoc);
1234     + sctp_transport_put(transport);
1235    
1236     sctp_transport_put(transport);
1237     }
1238     diff --git a/net/x25/af_x25.c b/net/x25/af_x25.c
1239     index 3bec5c59169b5..7bee5ca336fac 100644
1240     --- a/net/x25/af_x25.c
1241     +++ b/net/x25/af_x25.c
1242     @@ -1047,6 +1047,7 @@ int x25_rx_call_request(struct sk_buff *skb, struct x25_neigh *nb,
1243     makex25->lci = lci;
1244     makex25->dest_addr = dest_addr;
1245     makex25->source_addr = source_addr;
1246     + x25_neigh_hold(nb);
1247     makex25->neighbour = nb;
1248     makex25->facilities = facilities;
1249     makex25->dte_facilities= dte_facilities;
1250     diff --git a/sound/core/control.c b/sound/core/control.c
1251     index 511368fe974ef..abda2c3fcd8ac 100644
1252     --- a/sound/core/control.c
1253     +++ b/sound/core/control.c
1254     @@ -1381,7 +1381,7 @@ static int snd_ctl_elem_add(struct snd_ctl_file *file,
1255    
1256     unlock:
1257     up_write(&card->controls_rwsem);
1258     - return 0;
1259     + return err;
1260     }
1261    
1262     static int snd_ctl_elem_add_user(struct snd_ctl_file *file,
1263     diff --git a/sound/pci/mixart/mixart_core.c b/sound/pci/mixart/mixart_core.c
1264     index dccf3db48fe06..1381f4fa08565 100644
1265     --- a/sound/pci/mixart/mixart_core.c
1266     +++ b/sound/pci/mixart/mixart_core.c
1267     @@ -83,7 +83,6 @@ static int get_msg(struct mixart_mgr *mgr, struct mixart_msg *resp,
1268     unsigned int i;
1269     #endif
1270    
1271     - mutex_lock(&mgr->msg_lock);
1272     err = 0;
1273    
1274     /* copy message descriptor from miXart to driver */
1275     @@ -132,8 +131,6 @@ static int get_msg(struct mixart_mgr *mgr, struct mixart_msg *resp,
1276     writel_be(headptr, MIXART_MEM(mgr, MSG_OUTBOUND_FREE_HEAD));
1277    
1278     _clean_exit:
1279     - mutex_unlock(&mgr->msg_lock);
1280     -
1281     return err;
1282     }
1283    
1284     @@ -271,7 +268,9 @@ int snd_mixart_send_msg(struct mixart_mgr *mgr, struct mixart_msg *request, int
1285     resp.data = resp_data;
1286     resp.size = max_resp_size;
1287    
1288     + mutex_lock(&mgr->msg_lock);
1289     err = get_msg(mgr, &resp, msg_frame);
1290     + mutex_unlock(&mgr->msg_lock);
1291    
1292     if( request->message_id != resp.message_id )
1293     dev_err(&mgr->pci->dev, "RESPONSE ERROR!\n");
1294     diff --git a/tools/perf/builtin-lock.c b/tools/perf/builtin-lock.c
1295     index ce3bfb48b26f0..956b0aa916cfe 100644
1296     --- a/tools/perf/builtin-lock.c
1297     +++ b/tools/perf/builtin-lock.c
1298     @@ -616,7 +616,7 @@ static int report_lock_release_event(struct perf_evsel *evsel,
1299     case SEQ_STATE_READ_ACQUIRED:
1300     seq->read_count--;
1301     BUG_ON(seq->read_count < 0);
1302     - if (!seq->read_count) {
1303     + if (seq->read_count) {
1304     ls->nr_release++;
1305     goto end;
1306     }