Gentoo Archives: gentoo-commits

From: Mike Pagano <mpagano@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/linux-patches:5.4 commit in: /
Date: Wed, 18 May 2022 09:49:12
Message-Id: 1652867335.4b2ccbd9c668ba462c312a01cabc705857eabce0.mpagano@gentoo
1 commit: 4b2ccbd9c668ba462c312a01cabc705857eabce0
2 Author: Mike Pagano <mpagano <AT> gentoo <DOT> org>
3 AuthorDate: Wed May 18 09:48:55 2022 +0000
4 Commit: Mike Pagano <mpagano <AT> gentoo <DOT> org>
5 CommitDate: Wed May 18 09:48:55 2022 +0000
6 URL: https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=4b2ccbd9
7
8 Linux patch 5.4.195
9
10 Signed-off-by: Mike Pagano <mpagano <AT> gentoo.org>
11
12 0000_README | 4 +
13 1194_linux-5.4.195.patch | 1162 ++++++++++++++++++++++++++++++++++++++++++++++
14 2 files changed, 1166 insertions(+)
15
16 diff --git a/0000_README b/0000_README
17 index 5292ae1a..a943c8a1 100644
18 --- a/0000_README
19 +++ b/0000_README
20 @@ -819,6 +819,10 @@ Patch: 1193_linux-5.4.194.patch
21 From: http://www.kernel.org
22 Desc: Linux 5.4.194
23
24 +Patch: 1194_linux-5.4.195.patch
25 +From: http://www.kernel.org
26 +Desc: Linux 5.4.195
27 +
28 Patch: 1500_XATTR_USER_PREFIX.patch
29 From: https://bugs.gentoo.org/show_bug.cgi?id=470644
30 Desc: Support for namespace user.pax.* on tmpfs.
31
32 diff --git a/1194_linux-5.4.195.patch b/1194_linux-5.4.195.patch
33 new file mode 100644
34 index 00000000..ace0e612
35 --- /dev/null
36 +++ b/1194_linux-5.4.195.patch
37 @@ -0,0 +1,1162 @@
38 +diff --git a/Makefile b/Makefile
39 +index 044a85fea9216..4297d0107bd6c 100644
40 +--- a/Makefile
41 ++++ b/Makefile
42 +@@ -1,7 +1,7 @@
43 + # SPDX-License-Identifier: GPL-2.0
44 + VERSION = 5
45 + PATCHLEVEL = 4
46 +-SUBLEVEL = 194
47 ++SUBLEVEL = 195
48 + EXTRAVERSION =
49 + NAME = Kleptomaniac Octopus
50 +
51 +diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h
52 +index 7a0596fcb2e77..3cc0f6d508836 100644
53 +--- a/arch/arm/include/asm/io.h
54 ++++ b/arch/arm/include/asm/io.h
55 +@@ -457,6 +457,9 @@ extern void pci_iounmap(struct pci_dev *dev, void __iomem *addr);
56 + extern int valid_phys_addr_range(phys_addr_t addr, size_t size);
57 + extern int valid_mmap_phys_addr_range(unsigned long pfn, size_t size);
58 + extern int devmem_is_allowed(unsigned long pfn);
59 ++extern bool arch_memremap_can_ram_remap(resource_size_t offset, size_t size,
60 ++ unsigned long flags);
61 ++#define arch_memremap_can_ram_remap arch_memremap_can_ram_remap
62 + #endif
63 +
64 + /*
65 +diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c
66 +index 513c26b46db35..841b66515b379 100644
67 +--- a/arch/arm/mm/ioremap.c
68 ++++ b/arch/arm/mm/ioremap.c
69 +@@ -500,3 +500,11 @@ void __init early_ioremap_init(void)
70 + {
71 + early_ioremap_setup();
72 + }
73 ++
74 ++bool arch_memremap_can_ram_remap(resource_size_t offset, size_t size,
75 ++ unsigned long flags)
76 ++{
77 ++ unsigned long pfn = PHYS_PFN(offset);
78 ++
79 ++ return memblock_is_map_memory(pfn);
80 ++}
81 +diff --git a/arch/arm64/include/asm/io.h b/arch/arm64/include/asm/io.h
82 +index 323cb306bd288..8ac55ff3094ae 100644
83 +--- a/arch/arm64/include/asm/io.h
84 ++++ b/arch/arm64/include/asm/io.h
85 +@@ -204,4 +204,8 @@ extern int valid_mmap_phys_addr_range(unsigned long pfn, size_t size);
86 +
87 + extern int devmem_is_allowed(unsigned long pfn);
88 +
89 ++extern bool arch_memremap_can_ram_remap(resource_size_t offset, size_t size,
90 ++ unsigned long flags);
91 ++#define arch_memremap_can_ram_remap arch_memremap_can_ram_remap
92 ++
93 + #endif /* __ASM_IO_H */
94 +diff --git a/arch/arm64/mm/ioremap.c b/arch/arm64/mm/ioremap.c
95 +index 9be71bee902ca..8dac7fcfb4bdc 100644
96 +--- a/arch/arm64/mm/ioremap.c
97 ++++ b/arch/arm64/mm/ioremap.c
98 +@@ -13,6 +13,7 @@
99 + #include <linux/mm.h>
100 + #include <linux/vmalloc.h>
101 + #include <linux/io.h>
102 ++#include <linux/memblock.h>
103 +
104 + #include <asm/fixmap.h>
105 + #include <asm/tlbflush.h>
106 +@@ -100,3 +101,11 @@ void __init early_ioremap_init(void)
107 + {
108 + early_ioremap_setup();
109 + }
110 ++
111 ++bool arch_memremap_can_ram_remap(resource_size_t offset, size_t size,
112 ++ unsigned long flags)
113 ++{
114 ++ unsigned long pfn = PHYS_PFN(offset);
115 ++
116 ++ return memblock_is_map_memory(pfn);
117 ++}
118 +diff --git a/arch/mips/jz4740/setup.c b/arch/mips/jz4740/setup.c
119 +index dc8ee21e0948e..45e327960a465 100644
120 +--- a/arch/mips/jz4740/setup.c
121 ++++ b/arch/mips/jz4740/setup.c
122 +@@ -61,7 +61,7 @@ void __init plat_mem_setup(void)
123 +
124 + jz4740_reset_init();
125 +
126 +- if (__dtb_start != __dtb_end)
127 ++ if (&__dtb_start != &__dtb_end)
128 + dtb = __dtb_start;
129 + else
130 + dtb = (void *)fw_passed_dtb;
131 +diff --git a/arch/s390/Makefile b/arch/s390/Makefile
132 +index 2faaf456956a6..71e3d7c0b8709 100644
133 +--- a/arch/s390/Makefile
134 ++++ b/arch/s390/Makefile
135 +@@ -31,6 +31,16 @@ KBUILD_CFLAGS_DECOMPRESSOR += $(call cc-option,-ffreestanding)
136 + KBUILD_CFLAGS_DECOMPRESSOR += $(call cc-disable-warning, address-of-packed-member)
137 + KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO),-g)
138 + KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO_DWARF4), $(call cc-option, -gdwarf-4,))
139 ++
140 ++ifdef CONFIG_CC_IS_GCC
141 ++ ifeq ($(call cc-ifversion, -ge, 1200, y), y)
142 ++ ifeq ($(call cc-ifversion, -lt, 1300, y), y)
143 ++ KBUILD_CFLAGS += $(call cc-disable-warning, array-bounds)
144 ++ KBUILD_CFLAGS_DECOMPRESSOR += $(call cc-disable-warning, array-bounds)
145 ++ endif
146 ++ endif
147 ++endif
148 ++
149 + UTS_MACHINE := s390x
150 + STACK_SIZE := $(if $(CONFIG_KASAN),65536,16384)
151 + CHECKFLAGS += -D__s390__ -D__s390x__
152 +diff --git a/drivers/gpu/drm/nouveau/nouveau_backlight.c b/drivers/gpu/drm/nouveau/nouveau_backlight.c
153 +index c7a94c94dbf37..f2f3280c3a50e 100644
154 +--- a/drivers/gpu/drm/nouveau/nouveau_backlight.c
155 ++++ b/drivers/gpu/drm/nouveau/nouveau_backlight.c
156 +@@ -51,8 +51,9 @@ static bool
157 + nouveau_get_backlight_name(char backlight_name[BL_NAME_SIZE],
158 + struct nouveau_backlight *bl)
159 + {
160 +- const int nb = ida_simple_get(&bl_ida, 0, 0, GFP_KERNEL);
161 +- if (nb < 0 || nb >= 100)
162 ++ const int nb = ida_alloc_max(&bl_ida, 99, GFP_KERNEL);
163 ++
164 ++ if (nb < 0)
165 + return false;
166 + if (nb > 0)
167 + snprintf(backlight_name, BL_NAME_SIZE, "nv_backlight%d", nb);
168 +@@ -280,7 +281,7 @@ nouveau_backlight_init(struct drm_connector *connector)
169 + nv_encoder, ops, &props);
170 + if (IS_ERR(bl->dev)) {
171 + if (bl->id >= 0)
172 +- ida_simple_remove(&bl_ida, bl->id);
173 ++ ida_free(&bl_ida, bl->id);
174 + ret = PTR_ERR(bl->dev);
175 + goto fail_alloc;
176 + }
177 +@@ -306,7 +307,7 @@ nouveau_backlight_fini(struct drm_connector *connector)
178 + return;
179 +
180 + if (bl->id >= 0)
181 +- ida_simple_remove(&bl_ida, bl->id);
182 ++ ida_free(&bl_ida, bl->id);
183 +
184 + backlight_device_unregister(bl->dev);
185 + nv_conn->backlight = NULL;
186 +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c b/drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c
187 +index 0e372a190d3f1..9b6972c953584 100644
188 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c
189 ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c
190 +@@ -123,7 +123,7 @@ nvkm_device_tegra_probe_iommu(struct nvkm_device_tegra *tdev)
191 +
192 + mutex_init(&tdev->iommu.mutex);
193 +
194 +- if (iommu_present(&platform_bus_type)) {
195 ++ if (device_iommu_mapped(dev)) {
196 + tdev->iommu.domain = iommu_domain_alloc(&platform_bus_type);
197 + if (!tdev->iommu.domain)
198 + goto error;
199 +diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c b/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c
200 +index ea29953e0b081..8e7b05484ba85 100644
201 +--- a/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c
202 ++++ b/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c
203 +@@ -498,7 +498,7 @@ static int vmw_fb_kms_detach(struct vmw_fb_par *par,
204 +
205 + static int vmw_fb_kms_framebuffer(struct fb_info *info)
206 + {
207 +- struct drm_mode_fb_cmd2 mode_cmd;
208 ++ struct drm_mode_fb_cmd2 mode_cmd = {0};
209 + struct vmw_fb_par *par = info->par;
210 + struct fb_var_screeninfo *var = &info->var;
211 + struct drm_framebuffer *cur_fb;
212 +diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
213 +index 049563d503b68..4ea742ada36de 100644
214 +--- a/drivers/hwmon/Kconfig
215 ++++ b/drivers/hwmon/Kconfig
216 +@@ -802,7 +802,7 @@ config SENSORS_LTC4261
217 +
218 + config SENSORS_LTQ_CPUTEMP
219 + bool "Lantiq cpu temperature sensor driver"
220 +- depends on LANTIQ
221 ++ depends on SOC_XWAY
222 + help
223 + If you say yes here you get support for the temperature
224 + sensor inside your CPU.
225 +diff --git a/drivers/hwmon/f71882fg.c b/drivers/hwmon/f71882fg.c
226 +index d09deb409de7a..3336ff9e306b2 100644
227 +--- a/drivers/hwmon/f71882fg.c
228 ++++ b/drivers/hwmon/f71882fg.c
229 +@@ -1577,8 +1577,9 @@ static ssize_t show_temp(struct device *dev, struct device_attribute *devattr,
230 + temp *= 125;
231 + if (sign)
232 + temp -= 128000;
233 +- } else
234 +- temp = data->temp[nr] * 1000;
235 ++ } else {
236 ++ temp = ((s8)data->temp[nr]) * 1000;
237 ++ }
238 +
239 + return sprintf(buf, "%d\n", temp);
240 + }
241 +diff --git a/drivers/hwmon/tmp401.c b/drivers/hwmon/tmp401.c
242 +index fa361d9949db7..debcece02dd33 100644
243 +--- a/drivers/hwmon/tmp401.c
244 ++++ b/drivers/hwmon/tmp401.c
245 +@@ -731,10 +731,21 @@ static int tmp401_probe(struct i2c_client *client,
246 + return 0;
247 + }
248 +
249 ++static const struct of_device_id __maybe_unused tmp4xx_of_match[] = {
250 ++ { .compatible = "ti,tmp401", },
251 ++ { .compatible = "ti,tmp411", },
252 ++ { .compatible = "ti,tmp431", },
253 ++ { .compatible = "ti,tmp432", },
254 ++ { .compatible = "ti,tmp435", },
255 ++ { },
256 ++};
257 ++MODULE_DEVICE_TABLE(of, tmp4xx_of_match);
258 ++
259 + static struct i2c_driver tmp401_driver = {
260 + .class = I2C_CLASS_HWMON,
261 + .driver = {
262 + .name = "tmp401",
263 ++ .of_match_table = of_match_ptr(tmp4xx_of_match),
264 + },
265 + .probe = tmp401_probe,
266 + .id_table = tmp401_id,
267 +diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
268 +index a6ae4b7b11afd..7f4aa22397867 100644
269 +--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
270 ++++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
271 +@@ -7120,42 +7120,43 @@ static void i40e_free_macvlan_channels(struct i40e_vsi *vsi)
272 + static int i40e_fwd_ring_up(struct i40e_vsi *vsi, struct net_device *vdev,
273 + struct i40e_fwd_adapter *fwd)
274 + {
275 ++ struct i40e_channel *ch = NULL, *ch_tmp, *iter;
276 + int ret = 0, num_tc = 1, i, aq_err;
277 +- struct i40e_channel *ch, *ch_tmp;
278 + struct i40e_pf *pf = vsi->back;
279 + struct i40e_hw *hw = &pf->hw;
280 +
281 +- if (list_empty(&vsi->macvlan_list))
282 +- return -EINVAL;
283 +-
284 + /* Go through the list and find an available channel */
285 +- list_for_each_entry_safe(ch, ch_tmp, &vsi->macvlan_list, list) {
286 +- if (!i40e_is_channel_macvlan(ch)) {
287 +- ch->fwd = fwd;
288 ++ list_for_each_entry_safe(iter, ch_tmp, &vsi->macvlan_list, list) {
289 ++ if (!i40e_is_channel_macvlan(iter)) {
290 ++ iter->fwd = fwd;
291 + /* record configuration for macvlan interface in vdev */
292 + for (i = 0; i < num_tc; i++)
293 + netdev_bind_sb_channel_queue(vsi->netdev, vdev,
294 + i,
295 +- ch->num_queue_pairs,
296 +- ch->base_queue);
297 +- for (i = 0; i < ch->num_queue_pairs; i++) {
298 ++ iter->num_queue_pairs,
299 ++ iter->base_queue);
300 ++ for (i = 0; i < iter->num_queue_pairs; i++) {
301 + struct i40e_ring *tx_ring, *rx_ring;
302 + u16 pf_q;
303 +
304 +- pf_q = ch->base_queue + i;
305 ++ pf_q = iter->base_queue + i;
306 +
307 + /* Get to TX ring ptr */
308 + tx_ring = vsi->tx_rings[pf_q];
309 +- tx_ring->ch = ch;
310 ++ tx_ring->ch = iter;
311 +
312 + /* Get the RX ring ptr */
313 + rx_ring = vsi->rx_rings[pf_q];
314 +- rx_ring->ch = ch;
315 ++ rx_ring->ch = iter;
316 + }
317 ++ ch = iter;
318 + break;
319 + }
320 + }
321 +
322 ++ if (!ch)
323 ++ return -EINVAL;
324 ++
325 + /* Guarantee all rings are updated before we update the
326 + * MAC address filter.
327 + */
328 +diff --git a/drivers/net/ethernet/sfc/ef10.c b/drivers/net/ethernet/sfc/ef10.c
329 +index 0ec13f520e907..936e64dd81b5f 100644
330 +--- a/drivers/net/ethernet/sfc/ef10.c
331 ++++ b/drivers/net/ethernet/sfc/ef10.c
332 +@@ -6160,6 +6160,11 @@ static int efx_ef10_mtd_probe(struct efx_nic *efx)
333 + n_parts++;
334 + }
335 +
336 ++ if (!n_parts) {
337 ++ kfree(parts);
338 ++ return 0;
339 ++ }
340 ++
341 + rc = efx_mtd_add(efx, &parts[0].common, n_parts, sizeof(*parts));
342 + fail:
343 + if (rc)
344 +diff --git a/drivers/net/ethernet/xilinx/xilinx_emaclite.c b/drivers/net/ethernet/xilinx/xilinx_emaclite.c
345 +index bec09008997de..6e5ea68b6a7e6 100644
346 +--- a/drivers/net/ethernet/xilinx/xilinx_emaclite.c
347 ++++ b/drivers/net/ethernet/xilinx/xilinx_emaclite.c
348 +@@ -932,8 +932,6 @@ static int xemaclite_open(struct net_device *dev)
349 + xemaclite_disable_interrupts(lp);
350 +
351 + if (lp->phy_node) {
352 +- u32 bmcr;
353 +-
354 + lp->phy_dev = of_phy_connect(lp->ndev, lp->phy_node,
355 + xemaclite_adjust_link, 0,
356 + PHY_INTERFACE_MODE_MII);
357 +@@ -944,19 +942,6 @@ static int xemaclite_open(struct net_device *dev)
358 +
359 + /* EmacLite doesn't support giga-bit speeds */
360 + phy_set_max_speed(lp->phy_dev, SPEED_100);
361 +-
362 +- /* Don't advertise 1000BASE-T Full/Half duplex speeds */
363 +- phy_write(lp->phy_dev, MII_CTRL1000, 0);
364 +-
365 +- /* Advertise only 10 and 100mbps full/half duplex speeds */
366 +- phy_write(lp->phy_dev, MII_ADVERTISE, ADVERTISE_ALL |
367 +- ADVERTISE_CSMA);
368 +-
369 +- /* Restart auto negotiation */
370 +- bmcr = phy_read(lp->phy_dev, MII_BMCR);
371 +- bmcr |= (BMCR_ANENABLE | BMCR_ANRESTART);
372 +- phy_write(lp->phy_dev, MII_BMCR, bmcr);
373 +-
374 + phy_start(lp->phy_dev);
375 + }
376 +
377 +diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
378 +index 6c52ff8c0d2eb..9e8cf64f04420 100644
379 +--- a/drivers/net/phy/phy.c
380 ++++ b/drivers/net/phy/phy.c
381 +@@ -116,10 +116,15 @@ EXPORT_SYMBOL(phy_print_status);
382 + */
383 + static int phy_clear_interrupt(struct phy_device *phydev)
384 + {
385 +- if (phydev->drv->ack_interrupt)
386 +- return phydev->drv->ack_interrupt(phydev);
387 ++ int ret = 0;
388 +
389 +- return 0;
390 ++ if (phydev->drv->ack_interrupt) {
391 ++ mutex_lock(&phydev->lock);
392 ++ ret = phydev->drv->ack_interrupt(phydev);
393 ++ mutex_unlock(&phydev->lock);
394 ++ }
395 ++
396 ++ return ret;
397 + }
398 +
399 + /**
400 +@@ -760,6 +765,36 @@ static int phy_disable_interrupts(struct phy_device *phydev)
401 + return phy_clear_interrupt(phydev);
402 + }
403 +
404 ++/**
405 ++ * phy_did_interrupt - Checks if the PHY generated an interrupt
406 ++ * @phydev: target phy_device struct
407 ++ */
408 ++static int phy_did_interrupt(struct phy_device *phydev)
409 ++{
410 ++ int ret;
411 ++
412 ++ mutex_lock(&phydev->lock);
413 ++ ret = phydev->drv->did_interrupt(phydev);
414 ++ mutex_unlock(&phydev->lock);
415 ++
416 ++ return ret;
417 ++}
418 ++
419 ++/**
420 ++ * phy_handle_interrupt - PHY specific interrupt handler
421 ++ * @phydev: target phy_device struct
422 ++ */
423 ++static int phy_handle_interrupt(struct phy_device *phydev)
424 ++{
425 ++ int ret;
426 ++
427 ++ mutex_lock(&phydev->lock);
428 ++ ret = phydev->drv->handle_interrupt(phydev);
429 ++ mutex_unlock(&phydev->lock);
430 ++
431 ++ return ret;
432 ++}
433 ++
434 + /**
435 + * phy_interrupt - PHY interrupt handler
436 + * @irq: interrupt line
437 +@@ -771,11 +806,11 @@ static irqreturn_t phy_interrupt(int irq, void *phy_dat)
438 + {
439 + struct phy_device *phydev = phy_dat;
440 +
441 +- if (phydev->drv->did_interrupt && !phydev->drv->did_interrupt(phydev))
442 ++ if (phydev->drv->did_interrupt && !phy_did_interrupt(phydev))
443 + return IRQ_NONE;
444 +
445 + if (phydev->drv->handle_interrupt) {
446 +- if (phydev->drv->handle_interrupt(phydev))
447 ++ if (phy_handle_interrupt(phydev))
448 + goto phy_err;
449 + } else {
450 + /* reschedule state queue work to run as soon as possible */
451 +diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
452 +index 6e1721d533846..ffe27104f654b 100644
453 +--- a/drivers/net/wireless/mac80211_hwsim.c
454 ++++ b/drivers/net/wireless/mac80211_hwsim.c
455 +@@ -2062,11 +2062,13 @@ static void hw_scan_work(struct work_struct *work)
456 + if (req->ie_len)
457 + skb_put_data(probe, req->ie, req->ie_len);
458 +
459 ++ rcu_read_lock();
460 + if (!ieee80211_tx_prepare_skb(hwsim->hw,
461 + hwsim->hw_scan_vif,
462 + probe,
463 + hwsim->tmp_chan->band,
464 + NULL)) {
465 ++ rcu_read_unlock();
466 + kfree_skb(probe);
467 + continue;
468 + }
469 +@@ -2074,6 +2076,7 @@ static void hw_scan_work(struct work_struct *work)
470 + local_bh_disable();
471 + mac80211_hwsim_tx_frame(hwsim->hw, probe,
472 + hwsim->tmp_chan);
473 ++ rcu_read_unlock();
474 + local_bh_enable();
475 + }
476 + }
477 +diff --git a/drivers/s390/net/ctcm_mpc.c b/drivers/s390/net/ctcm_mpc.c
478 +index ab316baa82843..d766002bc5bee 100644
479 +--- a/drivers/s390/net/ctcm_mpc.c
480 ++++ b/drivers/s390/net/ctcm_mpc.c
481 +@@ -626,8 +626,6 @@ static void mpc_rcvd_sweep_resp(struct mpcg_info *mpcginfo)
482 + ctcm_clear_busy_do(dev);
483 + }
484 +
485 +- kfree(mpcginfo);
486 +-
487 + return;
488 +
489 + }
490 +@@ -1206,10 +1204,10 @@ static void ctcmpc_unpack_skb(struct channel *ch, struct sk_buff *pskb)
491 + CTCM_FUNTAIL, dev->name);
492 + priv->stats.rx_dropped++;
493 + /* mpcginfo only used for non-data transfers */
494 +- kfree(mpcginfo);
495 + if (do_debug_data)
496 + ctcmpc_dump_skb(pskb, -8);
497 + }
498 ++ kfree(mpcginfo);
499 + }
500 + done:
501 +
502 +@@ -1991,7 +1989,6 @@ static void mpc_action_rcvd_xid0(fsm_instance *fsm, int event, void *arg)
503 + }
504 + break;
505 + }
506 +- kfree(mpcginfo);
507 +
508 + CTCM_PR_DEBUG("ctcmpc:%s() %s xid2:%i xid7:%i xidt_p2:%i \n",
509 + __func__, ch->id, grp->outstanding_xid2,
510 +@@ -2052,7 +2049,6 @@ static void mpc_action_rcvd_xid7(fsm_instance *fsm, int event, void *arg)
511 + mpc_validate_xid(mpcginfo);
512 + break;
513 + }
514 +- kfree(mpcginfo);
515 + return;
516 + }
517 +
518 +diff --git a/drivers/s390/net/ctcm_sysfs.c b/drivers/s390/net/ctcm_sysfs.c
519 +index ded1930a00b2d..e3813a7aa5e68 100644
520 +--- a/drivers/s390/net/ctcm_sysfs.c
521 ++++ b/drivers/s390/net/ctcm_sysfs.c
522 +@@ -39,11 +39,12 @@ static ssize_t ctcm_buffer_write(struct device *dev,
523 + struct ctcm_priv *priv = dev_get_drvdata(dev);
524 + int rc;
525 +
526 +- ndev = priv->channel[CTCM_READ]->netdev;
527 +- if (!(priv && priv->channel[CTCM_READ] && ndev)) {
528 ++ if (!(priv && priv->channel[CTCM_READ] &&
529 ++ priv->channel[CTCM_READ]->netdev)) {
530 + CTCM_DBF_TEXT(SETUP, CTC_DBF_ERROR, "bfnondev");
531 + return -ENODEV;
532 + }
533 ++ ndev = priv->channel[CTCM_READ]->netdev;
534 +
535 + rc = kstrtouint(buf, 0, &bs1);
536 + if (rc)
537 +diff --git a/drivers/s390/net/lcs.c b/drivers/s390/net/lcs.c
538 +index 8f08b0a2917c6..4eec7bfb5de93 100644
539 +--- a/drivers/s390/net/lcs.c
540 ++++ b/drivers/s390/net/lcs.c
541 +@@ -1735,10 +1735,11 @@ lcs_get_control(struct lcs_card *card, struct lcs_cmd *cmd)
542 + lcs_schedule_recovery(card);
543 + break;
544 + case LCS_CMD_STOPLAN:
545 +- pr_warn("Stoplan for %s initiated by LGW\n",
546 +- card->dev->name);
547 +- if (card->dev)
548 ++ if (card->dev) {
549 ++ pr_warn("Stoplan for %s initiated by LGW\n",
550 ++ card->dev->name);
551 + netif_carrier_off(card->dev);
552 ++ }
553 + break;
554 + default:
555 + LCS_DBF_TEXT(5, trace, "noLGWcmd");
556 +diff --git a/drivers/slimbus/qcom-ctrl.c b/drivers/slimbus/qcom-ctrl.c
557 +index a444badd8df5a..0a6f7eeb7755b 100644
558 +--- a/drivers/slimbus/qcom-ctrl.c
559 ++++ b/drivers/slimbus/qcom-ctrl.c
560 +@@ -515,9 +515,9 @@ static int qcom_slim_probe(struct platform_device *pdev)
561 + }
562 +
563 + ctrl->irq = platform_get_irq(pdev, 0);
564 +- if (!ctrl->irq) {
565 ++ if (ctrl->irq < 0) {
566 + dev_err(&pdev->dev, "no slimbus IRQ\n");
567 +- return -ENODEV;
568 ++ return ctrl->irq;
569 + }
570 +
571 + sctrl = &ctrl->ctrl;
572 +diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c
573 +index c38f06139ccfa..907a4d0784ac0 100644
574 +--- a/drivers/tty/n_gsm.c
575 ++++ b/drivers/tty/n_gsm.c
576 +@@ -2259,6 +2259,7 @@ static void gsm_copy_config_values(struct gsm_mux *gsm,
577 +
578 + static int gsm_config(struct gsm_mux *gsm, struct gsm_config *c)
579 + {
580 ++ int ret = 0;
581 + int need_close = 0;
582 + int need_restart = 0;
583 +
584 +@@ -2334,10 +2335,13 @@ static int gsm_config(struct gsm_mux *gsm, struct gsm_config *c)
585 + * FIXME: We need to separate activation/deactivation from adding
586 + * and removing from the mux array
587 + */
588 +- if (need_restart)
589 +- gsm_activate_mux(gsm);
590 +- if (gsm->initiator && need_close)
591 +- gsm_dlci_begin_open(gsm->dlci[0]);
592 ++ if (gsm->dead) {
593 ++ ret = gsm_activate_mux(gsm);
594 ++ if (ret)
595 ++ return ret;
596 ++ if (gsm->initiator)
597 ++ gsm_dlci_begin_open(gsm->dlci[0]);
598 ++ }
599 + return 0;
600 + }
601 +
602 +diff --git a/drivers/tty/serial/8250/8250_mtk.c b/drivers/tty/serial/8250/8250_mtk.c
603 +index 98e68f25a5f34..a79ab53f8e87d 100644
604 +--- a/drivers/tty/serial/8250/8250_mtk.c
605 ++++ b/drivers/tty/serial/8250/8250_mtk.c
606 +@@ -36,6 +36,7 @@
607 + #define MTK_UART_IER_RTSI 0x40 /* Enable RTS Modem status interrupt */
608 + #define MTK_UART_IER_CTSI 0x80 /* Enable CTS Modem status interrupt */
609 +
610 ++#define MTK_UART_EFR 38 /* I/O: Extended Features Register */
611 + #define MTK_UART_EFR_EN 0x10 /* Enable enhancement feature */
612 + #define MTK_UART_EFR_RTS 0x40 /* Enable hardware rx flow control */
613 + #define MTK_UART_EFR_CTS 0x80 /* Enable hardware tx flow control */
614 +@@ -52,6 +53,9 @@
615 + #define MTK_UART_TX_TRIGGER 1
616 + #define MTK_UART_RX_TRIGGER MTK_UART_RX_SIZE
617 +
618 ++#define MTK_UART_XON1 40 /* I/O: Xon character 1 */
619 ++#define MTK_UART_XOFF1 42 /* I/O: Xoff character 1 */
620 ++
621 + #ifdef CONFIG_SERIAL_8250_DMA
622 + enum dma_rx_status {
623 + DMA_RX_START = 0,
624 +@@ -168,7 +172,7 @@ static void mtk8250_dma_enable(struct uart_8250_port *up)
625 + MTK_UART_DMA_EN_RX | MTK_UART_DMA_EN_TX);
626 +
627 + serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
628 +- serial_out(up, UART_EFR, UART_EFR_ECB);
629 ++ serial_out(up, MTK_UART_EFR, UART_EFR_ECB);
630 + serial_out(up, UART_LCR, lcr);
631 +
632 + if (dmaengine_slave_config(dma->rxchan, &dma->rxconf) != 0)
633 +@@ -231,7 +235,7 @@ static void mtk8250_set_flow_ctrl(struct uart_8250_port *up, int mode)
634 + int lcr = serial_in(up, UART_LCR);
635 +
636 + serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
637 +- serial_out(up, UART_EFR, UART_EFR_ECB);
638 ++ serial_out(up, MTK_UART_EFR, UART_EFR_ECB);
639 + serial_out(up, UART_LCR, lcr);
640 + lcr = serial_in(up, UART_LCR);
641 +
642 +@@ -240,7 +244,7 @@ static void mtk8250_set_flow_ctrl(struct uart_8250_port *up, int mode)
643 + serial_out(up, MTK_UART_ESCAPE_DAT, MTK_UART_ESCAPE_CHAR);
644 + serial_out(up, MTK_UART_ESCAPE_EN, 0x00);
645 + serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
646 +- serial_out(up, UART_EFR, serial_in(up, UART_EFR) &
647 ++ serial_out(up, MTK_UART_EFR, serial_in(up, MTK_UART_EFR) &
648 + (~(MTK_UART_EFR_HW_FC | MTK_UART_EFR_SW_FC_MASK)));
649 + serial_out(up, UART_LCR, lcr);
650 + mtk8250_disable_intrs(up, MTK_UART_IER_XOFFI |
651 +@@ -254,8 +258,8 @@ static void mtk8250_set_flow_ctrl(struct uart_8250_port *up, int mode)
652 + serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
653 +
654 + /*enable hw flow control*/
655 +- serial_out(up, UART_EFR, MTK_UART_EFR_HW_FC |
656 +- (serial_in(up, UART_EFR) &
657 ++ serial_out(up, MTK_UART_EFR, MTK_UART_EFR_HW_FC |
658 ++ (serial_in(up, MTK_UART_EFR) &
659 + (~(MTK_UART_EFR_HW_FC | MTK_UART_EFR_SW_FC_MASK))));
660 +
661 + serial_out(up, UART_LCR, lcr);
662 +@@ -269,12 +273,12 @@ static void mtk8250_set_flow_ctrl(struct uart_8250_port *up, int mode)
663 + serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
664 +
665 + /*enable sw flow control */
666 +- serial_out(up, UART_EFR, MTK_UART_EFR_XON1_XOFF1 |
667 +- (serial_in(up, UART_EFR) &
668 ++ serial_out(up, MTK_UART_EFR, MTK_UART_EFR_XON1_XOFF1 |
669 ++ (serial_in(up, MTK_UART_EFR) &
670 + (~(MTK_UART_EFR_HW_FC | MTK_UART_EFR_SW_FC_MASK))));
671 +
672 +- serial_out(up, UART_XON1, START_CHAR(port->state->port.tty));
673 +- serial_out(up, UART_XOFF1, STOP_CHAR(port->state->port.tty));
674 ++ serial_out(up, MTK_UART_XON1, START_CHAR(port->state->port.tty));
675 ++ serial_out(up, MTK_UART_XOFF1, STOP_CHAR(port->state->port.tty));
676 + serial_out(up, UART_LCR, lcr);
677 + mtk8250_disable_intrs(up, MTK_UART_IER_CTSI|MTK_UART_IER_RTSI);
678 + mtk8250_enable_intrs(up, MTK_UART_IER_XOFFI);
679 +diff --git a/drivers/tty/serial/digicolor-usart.c b/drivers/tty/serial/digicolor-usart.c
680 +index 13ac36e2da4f0..4446c13629b1c 100644
681 +--- a/drivers/tty/serial/digicolor-usart.c
682 ++++ b/drivers/tty/serial/digicolor-usart.c
683 +@@ -472,10 +472,10 @@ static int digicolor_uart_probe(struct platform_device *pdev)
684 + return PTR_ERR(uart_clk);
685 +
686 + res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
687 +- dp->port.mapbase = res->start;
688 + dp->port.membase = devm_ioremap_resource(&pdev->dev, res);
689 + if (IS_ERR(dp->port.membase))
690 + return PTR_ERR(dp->port.membase);
691 ++ dp->port.mapbase = res->start;
692 +
693 + irq = platform_get_irq(pdev, 0);
694 + if (irq < 0)
695 +diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
696 +index de7bb8e6a1efc..98022584f7092 100644
697 +--- a/drivers/usb/class/cdc-wdm.c
698 ++++ b/drivers/usb/class/cdc-wdm.c
699 +@@ -755,6 +755,7 @@ static int wdm_release(struct inode *inode, struct file *file)
700 + poison_urbs(desc);
701 + spin_lock_irq(&desc->iuspin);
702 + desc->resp_count = 0;
703 ++ clear_bit(WDM_RESPONDING, &desc->flags);
704 + spin_unlock_irq(&desc->iuspin);
705 + desc->manage_power(desc->intf, 0);
706 + unpoison_urbs(desc);
707 +diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
708 +index fa978412601aa..1ba4a72047dcb 100644
709 +--- a/drivers/usb/serial/option.c
710 ++++ b/drivers/usb/serial/option.c
711 +@@ -2123,10 +2123,14 @@ static const struct usb_device_id option_ids[] = {
712 + .driver_info = RSVD(3) },
713 + { USB_DEVICE(0x1508, 0x1001), /* Fibocom NL668 (IOT version) */
714 + .driver_info = RSVD(4) | RSVD(5) | RSVD(6) },
715 ++ { USB_DEVICE(0x1782, 0x4d10) }, /* Fibocom L610 (AT mode) */
716 ++ { USB_DEVICE_INTERFACE_CLASS(0x1782, 0x4d11, 0xff) }, /* Fibocom L610 (ECM/RNDIS mode) */
717 + { USB_DEVICE(0x2cb7, 0x0104), /* Fibocom NL678 series */
718 + .driver_info = RSVD(4) | RSVD(5) },
719 + { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0105, 0xff), /* Fibocom NL678 series */
720 + .driver_info = RSVD(6) },
721 ++ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0106, 0xff) }, /* Fibocom MA510 (ECM mode w/ diag intf.) */
722 ++ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x010a, 0xff) }, /* Fibocom MA510 (ECM mode) */
723 + { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x010b, 0xff, 0xff, 0x30) }, /* Fibocom FG150 Diag */
724 + { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x010b, 0xff, 0, 0) }, /* Fibocom FG150 AT */
725 + { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a0, 0xff) }, /* Fibocom NL668-AM/NL652-EU (laptop MBIM) */
726 +diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
727 +index 2a91219dee7e6..386894fe59eef 100644
728 +--- a/drivers/usb/serial/pl2303.c
729 ++++ b/drivers/usb/serial/pl2303.c
730 +@@ -100,6 +100,7 @@ static const struct usb_device_id id_table[] = {
731 + { USB_DEVICE(HP_VENDOR_ID, HP_LCM220_PRODUCT_ID) },
732 + { USB_DEVICE(HP_VENDOR_ID, HP_LCM960_PRODUCT_ID) },
733 + { USB_DEVICE(HP_VENDOR_ID, HP_LM920_PRODUCT_ID) },
734 ++ { USB_DEVICE(HP_VENDOR_ID, HP_LM930_PRODUCT_ID) },
735 + { USB_DEVICE(HP_VENDOR_ID, HP_LM940_PRODUCT_ID) },
736 + { USB_DEVICE(HP_VENDOR_ID, HP_TD620_PRODUCT_ID) },
737 + { USB_DEVICE(CRESSI_VENDOR_ID, CRESSI_EDY_PRODUCT_ID) },
738 +diff --git a/drivers/usb/serial/pl2303.h b/drivers/usb/serial/pl2303.h
739 +index 15f746e977a71..873e50088a36e 100644
740 +--- a/drivers/usb/serial/pl2303.h
741 ++++ b/drivers/usb/serial/pl2303.h
742 +@@ -129,6 +129,7 @@
743 + #define HP_TD620_PRODUCT_ID 0x0956
744 + #define HP_LD960_PRODUCT_ID 0x0b39
745 + #define HP_LD381_PRODUCT_ID 0x0f7f
746 ++#define HP_LM930_PRODUCT_ID 0x0f9b
747 + #define HP_LCM220_PRODUCT_ID 0x3139
748 + #define HP_LCM960_PRODUCT_ID 0x3239
749 + #define HP_LD220_PRODUCT_ID 0x3524
750 +diff --git a/drivers/usb/serial/qcserial.c b/drivers/usb/serial/qcserial.c
751 +index b1b9923162a04..3f437f07356b4 100644
752 +--- a/drivers/usb/serial/qcserial.c
753 ++++ b/drivers/usb/serial/qcserial.c
754 +@@ -166,6 +166,8 @@ static const struct usb_device_id id_table[] = {
755 + {DEVICE_SWI(0x1199, 0x9090)}, /* Sierra Wireless EM7565 QDL */
756 + {DEVICE_SWI(0x1199, 0x9091)}, /* Sierra Wireless EM7565 */
757 + {DEVICE_SWI(0x1199, 0x90d2)}, /* Sierra Wireless EM9191 QDL */
758 ++ {DEVICE_SWI(0x1199, 0xc080)}, /* Sierra Wireless EM7590 QDL */
759 ++ {DEVICE_SWI(0x1199, 0xc081)}, /* Sierra Wireless EM7590 */
760 + {DEVICE_SWI(0x413c, 0x81a2)}, /* Dell Wireless 5806 Gobi(TM) 4G LTE Mobile Broadband Card */
761 + {DEVICE_SWI(0x413c, 0x81a3)}, /* Dell Wireless 5570 HSPA+ (42Mbps) Mobile Broadband Card */
762 + {DEVICE_SWI(0x413c, 0x81a4)}, /* Dell Wireless 5570e HSPA+ (42Mbps) Mobile Broadband Card */
763 +diff --git a/drivers/usb/typec/tcpm/tcpci.c b/drivers/usb/typec/tcpm/tcpci.c
764 +index 59e304a341f8a..6caed68ce1be7 100644
765 +--- a/drivers/usb/typec/tcpm/tcpci.c
766 ++++ b/drivers/usb/typec/tcpm/tcpci.c
767 +@@ -611,7 +611,7 @@ static int tcpci_remove(struct i2c_client *client)
768 + /* Disable chip interrupts before unregistering port */
769 + err = tcpci_write16(chip->tcpci, TCPC_ALERT_MASK, 0);
770 + if (err < 0)
771 +- return err;
772 ++ dev_warn(&client->dev, "Failed to disable irqs (%pe)\n", ERR_PTR(err));
773 +
774 + tcpci_unregister_port(chip->tcpci);
775 +
776 +diff --git a/fs/gfs2/bmap.c b/fs/gfs2/bmap.c
777 +index dec5285a02e9d..77a497a4b2368 100644
778 +--- a/fs/gfs2/bmap.c
779 ++++ b/fs/gfs2/bmap.c
780 +@@ -1233,13 +1233,12 @@ static int gfs2_iomap_end(struct inode *inode, loff_t pos, loff_t length,
781 +
782 + if (length != written && (iomap->flags & IOMAP_F_NEW)) {
783 + /* Deallocate blocks that were just allocated. */
784 +- loff_t blockmask = i_blocksize(inode) - 1;
785 +- loff_t end = (pos + length) & ~blockmask;
786 ++ loff_t hstart = round_up(pos + written, i_blocksize(inode));
787 ++ loff_t hend = iomap->offset + iomap->length;
788 +
789 +- pos = (pos + written + blockmask) & ~blockmask;
790 +- if (pos < end) {
791 +- truncate_pagecache_range(inode, pos, end - 1);
792 +- punch_hole(ip, pos, end - pos);
793 ++ if (hstart < hend) {
794 ++ truncate_pagecache_range(inode, hstart, hend - 1);
795 ++ punch_hole(ip, hstart, hend - hstart);
796 + }
797 + }
798 +
799 +diff --git a/include/linux/netdev_features.h b/include/linux/netdev_features.h
800 +index 640e7279f1617..75be8886783e1 100644
801 +--- a/include/linux/netdev_features.h
802 ++++ b/include/linux/netdev_features.h
803 +@@ -151,7 +151,7 @@ enum {
804 + #define NETIF_F_HW_TLS_TX __NETIF_F(HW_TLS_TX)
805 + #define NETIF_F_HW_TLS_RX __NETIF_F(HW_TLS_RX)
806 +
807 +-/* Finds the next feature with the highest number of the range of start till 0.
808 ++/* Finds the next feature with the highest number of the range of start-1 till 0.
809 + */
810 + static inline int find_next_netdev_feature(u64 feature, unsigned long start)
811 + {
812 +@@ -170,7 +170,7 @@ static inline int find_next_netdev_feature(u64 feature, unsigned long start)
813 + for ((bit) = find_next_netdev_feature((mask_addr), \
814 + NETDEV_FEATURE_COUNT); \
815 + (bit) >= 0; \
816 +- (bit) = find_next_netdev_feature((mask_addr), (bit) - 1))
817 ++ (bit) = find_next_netdev_feature((mask_addr), (bit)))
818 +
819 + /* Features valid for ethtool to change */
820 + /* = all defined minus driver/device-class-related */
821 +diff --git a/include/net/tc_act/tc_pedit.h b/include/net/tc_act/tc_pedit.h
822 +index 748cf87a4d7ea..3e02709a1df65 100644
823 +--- a/include/net/tc_act/tc_pedit.h
824 ++++ b/include/net/tc_act/tc_pedit.h
825 +@@ -14,6 +14,7 @@ struct tcf_pedit {
826 + struct tc_action common;
827 + unsigned char tcfp_nkeys;
828 + unsigned char tcfp_flags;
829 ++ u32 tcfp_off_max_hint;
830 + struct tc_pedit_key *tcfp_keys;
831 + struct tcf_pedit_key_ex *tcfp_keys_ex;
832 + };
833 +diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c
834 +index 3674798ade1fc..b02eca235ba3f 100644
835 +--- a/kernel/cgroup/cpuset.c
836 ++++ b/kernel/cgroup/cpuset.c
837 +@@ -3289,8 +3289,11 @@ static struct notifier_block cpuset_track_online_nodes_nb = {
838 + */
839 + void __init cpuset_init_smp(void)
840 + {
841 +- cpumask_copy(top_cpuset.cpus_allowed, cpu_active_mask);
842 +- top_cpuset.mems_allowed = node_states[N_MEMORY];
843 ++ /*
844 ++ * cpus_allowd/mems_allowed set to v2 values in the initial
845 ++ * cpuset_bind() call will be reset to v1 values in another
846 ++ * cpuset_bind() call when v1 cpuset is mounted.
847 ++ */
848 + top_cpuset.old_mems_allowed = top_cpuset.mems_allowed;
849 +
850 + cpumask_copy(top_cpuset.effective_cpus, cpu_active_mask);
851 +diff --git a/lib/dim/net_dim.c b/lib/dim/net_dim.c
852 +index a4db51c212663..dae3b51ac3d9b 100644
853 +--- a/lib/dim/net_dim.c
854 ++++ b/lib/dim/net_dim.c
855 +@@ -12,41 +12,41 @@
856 + * Each profile size must be of NET_DIM_PARAMS_NUM_PROFILES
857 + */
858 + #define NET_DIM_PARAMS_NUM_PROFILES 5
859 +-#define NET_DIM_DEFAULT_RX_CQ_MODERATION_PKTS_FROM_EQE 256
860 +-#define NET_DIM_DEFAULT_TX_CQ_MODERATION_PKTS_FROM_EQE 128
861 ++#define NET_DIM_DEFAULT_RX_CQ_PKTS_FROM_EQE 256
862 ++#define NET_DIM_DEFAULT_TX_CQ_PKTS_FROM_EQE 128
863 + #define NET_DIM_DEF_PROFILE_CQE 1
864 + #define NET_DIM_DEF_PROFILE_EQE 1
865 +
866 + #define NET_DIM_RX_EQE_PROFILES { \
867 +- {1, NET_DIM_DEFAULT_RX_CQ_MODERATION_PKTS_FROM_EQE}, \
868 +- {8, NET_DIM_DEFAULT_RX_CQ_MODERATION_PKTS_FROM_EQE}, \
869 +- {64, NET_DIM_DEFAULT_RX_CQ_MODERATION_PKTS_FROM_EQE}, \
870 +- {128, NET_DIM_DEFAULT_RX_CQ_MODERATION_PKTS_FROM_EQE}, \
871 +- {256, NET_DIM_DEFAULT_RX_CQ_MODERATION_PKTS_FROM_EQE}, \
872 ++ {.usec = 1, .pkts = NET_DIM_DEFAULT_RX_CQ_PKTS_FROM_EQE,}, \
873 ++ {.usec = 8, .pkts = NET_DIM_DEFAULT_RX_CQ_PKTS_FROM_EQE,}, \
874 ++ {.usec = 64, .pkts = NET_DIM_DEFAULT_RX_CQ_PKTS_FROM_EQE,}, \
875 ++ {.usec = 128, .pkts = NET_DIM_DEFAULT_RX_CQ_PKTS_FROM_EQE,}, \
876 ++ {.usec = 256, .pkts = NET_DIM_DEFAULT_RX_CQ_PKTS_FROM_EQE,} \
877 + }
878 +
879 + #define NET_DIM_RX_CQE_PROFILES { \
880 +- {2, 256}, \
881 +- {8, 128}, \
882 +- {16, 64}, \
883 +- {32, 64}, \
884 +- {64, 64} \
885 ++ {.usec = 2, .pkts = 256,}, \
886 ++ {.usec = 8, .pkts = 128,}, \
887 ++ {.usec = 16, .pkts = 64,}, \
888 ++ {.usec = 32, .pkts = 64,}, \
889 ++ {.usec = 64, .pkts = 64,} \
890 + }
891 +
892 + #define NET_DIM_TX_EQE_PROFILES { \
893 +- {1, NET_DIM_DEFAULT_TX_CQ_MODERATION_PKTS_FROM_EQE}, \
894 +- {8, NET_DIM_DEFAULT_TX_CQ_MODERATION_PKTS_FROM_EQE}, \
895 +- {32, NET_DIM_DEFAULT_TX_CQ_MODERATION_PKTS_FROM_EQE}, \
896 +- {64, NET_DIM_DEFAULT_TX_CQ_MODERATION_PKTS_FROM_EQE}, \
897 +- {128, NET_DIM_DEFAULT_TX_CQ_MODERATION_PKTS_FROM_EQE} \
898 ++ {.usec = 1, .pkts = NET_DIM_DEFAULT_TX_CQ_PKTS_FROM_EQE,}, \
899 ++ {.usec = 8, .pkts = NET_DIM_DEFAULT_TX_CQ_PKTS_FROM_EQE,}, \
900 ++ {.usec = 32, .pkts = NET_DIM_DEFAULT_TX_CQ_PKTS_FROM_EQE,}, \
901 ++ {.usec = 64, .pkts = NET_DIM_DEFAULT_TX_CQ_PKTS_FROM_EQE,}, \
902 ++ {.usec = 128, .pkts = NET_DIM_DEFAULT_TX_CQ_PKTS_FROM_EQE,} \
903 + }
904 +
905 + #define NET_DIM_TX_CQE_PROFILES { \
906 +- {5, 128}, \
907 +- {8, 64}, \
908 +- {16, 32}, \
909 +- {32, 32}, \
910 +- {64, 32} \
911 ++ {.usec = 5, .pkts = 128,}, \
912 ++ {.usec = 8, .pkts = 64,}, \
913 ++ {.usec = 16, .pkts = 32,}, \
914 ++ {.usec = 32, .pkts = 32,}, \
915 ++ {.usec = 64, .pkts = 32,} \
916 + }
917 +
918 + static const struct dim_cq_moder
919 +diff --git a/net/batman-adv/fragmentation.c b/net/batman-adv/fragmentation.c
920 +index 0da90e73c79bf..f33a7f7a1249a 100644
921 +--- a/net/batman-adv/fragmentation.c
922 ++++ b/net/batman-adv/fragmentation.c
923 +@@ -478,6 +478,17 @@ int batadv_frag_send_packet(struct sk_buff *skb,
924 + goto free_skb;
925 + }
926 +
927 ++ /* GRO might have added fragments to the fragment list instead of
928 ++ * frags[]. But this is not handled by skb_split and must be
929 ++ * linearized to avoid incorrect length information after all
930 ++ * batman-adv fragments were created and submitted to the
931 ++ * hard-interface
932 ++ */
933 ++ if (skb_has_frag_list(skb) && __skb_linearize(skb)) {
934 ++ ret = -ENOMEM;
935 ++ goto free_skb;
936 ++ }
937 ++
938 + /* Create one header to be copied to all fragments */
939 + frag_header.packet_type = BATADV_UNICAST_FRAG;
940 + frag_header.version = BATADV_COMPAT_VERSION;
941 +diff --git a/net/core/secure_seq.c b/net/core/secure_seq.c
942 +index 7b6b1d2c3d109..2f9796a1a63ff 100644
943 +--- a/net/core/secure_seq.c
944 ++++ b/net/core/secure_seq.c
945 +@@ -23,6 +23,8 @@
946 + static siphash_key_t net_secret __read_mostly;
947 + static siphash_key_t ts_secret __read_mostly;
948 +
949 ++#define EPHEMERAL_PORT_SHUFFLE_PERIOD (10 * HZ)
950 ++
951 + static __always_inline void net_secret_init(void)
952 + {
953 + net_get_random_once(&net_secret, sizeof(net_secret));
954 +@@ -101,11 +103,13 @@ u32 secure_ipv6_port_ephemeral(const __be32 *saddr, const __be32 *daddr,
955 + const struct {
956 + struct in6_addr saddr;
957 + struct in6_addr daddr;
958 ++ unsigned int timeseed;
959 + __be16 dport;
960 + } __aligned(SIPHASH_ALIGNMENT) combined = {
961 + .saddr = *(struct in6_addr *)saddr,
962 + .daddr = *(struct in6_addr *)daddr,
963 +- .dport = dport
964 ++ .timeseed = jiffies / EPHEMERAL_PORT_SHUFFLE_PERIOD,
965 ++ .dport = dport,
966 + };
967 + net_secret_init();
968 + return siphash(&combined, offsetofend(typeof(combined), dport),
969 +@@ -146,8 +150,10 @@ EXPORT_SYMBOL_GPL(secure_tcp_seq);
970 + u32 secure_ipv4_port_ephemeral(__be32 saddr, __be32 daddr, __be16 dport)
971 + {
972 + net_secret_init();
973 +- return siphash_3u32((__force u32)saddr, (__force u32)daddr,
974 +- (__force u16)dport, &net_secret);
975 ++ return siphash_4u32((__force u32)saddr, (__force u32)daddr,
976 ++ (__force u16)dport,
977 ++ jiffies / EPHEMERAL_PORT_SHUFFLE_PERIOD,
978 ++ &net_secret);
979 + }
980 + EXPORT_SYMBOL_GPL(secure_ipv4_port_ephemeral);
981 + #endif
982 +diff --git a/net/ipv4/ping.c b/net/ipv4/ping.c
983 +index 33e6392e8b820..3ff65c9ab8ee6 100644
984 +--- a/net/ipv4/ping.c
985 ++++ b/net/ipv4/ping.c
986 +@@ -304,6 +304,7 @@ static int ping_check_bind_addr(struct sock *sk, struct inet_sock *isk,
987 + struct net *net = sock_net(sk);
988 + if (sk->sk_family == AF_INET) {
989 + struct sockaddr_in *addr = (struct sockaddr_in *) uaddr;
990 ++ u32 tb_id = RT_TABLE_LOCAL;
991 + int chk_addr_ret;
992 +
993 + if (addr_len < sizeof(*addr))
994 +@@ -317,7 +318,8 @@ static int ping_check_bind_addr(struct sock *sk, struct inet_sock *isk,
995 + pr_debug("ping_check_bind_addr(sk=%p,addr=%pI4,port=%d)\n",
996 + sk, &addr->sin_addr.s_addr, ntohs(addr->sin_port));
997 +
998 +- chk_addr_ret = inet_addr_type(net, addr->sin_addr.s_addr);
999 ++ tb_id = l3mdev_fib_table_by_index(net, sk->sk_bound_dev_if) ? : tb_id;
1000 ++ chk_addr_ret = inet_addr_type_table(net, addr->sin_addr.s_addr, tb_id);
1001 +
1002 + if (addr->sin_addr.s_addr == htonl(INADDR_ANY))
1003 + chk_addr_ret = RTN_LOCAL;
1004 +@@ -358,6 +360,14 @@ static int ping_check_bind_addr(struct sock *sk, struct inet_sock *isk,
1005 + return -ENODEV;
1006 + }
1007 + }
1008 ++
1009 ++ if (!dev && sk->sk_bound_dev_if) {
1010 ++ dev = dev_get_by_index_rcu(net, sk->sk_bound_dev_if);
1011 ++ if (!dev) {
1012 ++ rcu_read_unlock();
1013 ++ return -ENODEV;
1014 ++ }
1015 ++ }
1016 + has_addr = pingv6_ops.ipv6_chk_addr(net, &addr->sin6_addr, dev,
1017 + scoped);
1018 + rcu_read_unlock();
1019 +diff --git a/net/ipv4/route.c b/net/ipv4/route.c
1020 +index d1feec97fa062..9280e50871596 100644
1021 +--- a/net/ipv4/route.c
1022 ++++ b/net/ipv4/route.c
1023 +@@ -1775,6 +1775,7 @@ static int ip_route_input_mc(struct sk_buff *skb, __be32 daddr, __be32 saddr,
1024 + #endif
1025 + RT_CACHE_STAT_INC(in_slow_mc);
1026 +
1027 ++ skb_dst_drop(skb);
1028 + skb_dst_set(skb, &rth->dst);
1029 + return 0;
1030 + }
1031 +diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
1032 +index ad00f31e20023..5415e566e09d8 100644
1033 +--- a/net/mac80211/mlme.c
1034 ++++ b/net/mac80211/mlme.c
1035 +@@ -3406,6 +3406,12 @@ static bool ieee80211_assoc_success(struct ieee80211_sub_if_data *sdata,
1036 + cbss->transmitted_bss->bssid);
1037 + bss_conf->bssid_indicator = cbss->max_bssid_indicator;
1038 + bss_conf->bssid_index = cbss->bssid_index;
1039 ++ } else {
1040 ++ bss_conf->nontransmitted = false;
1041 ++ memset(bss_conf->transmitter_bssid, 0,
1042 ++ sizeof(bss_conf->transmitter_bssid));
1043 ++ bss_conf->bssid_indicator = 0;
1044 ++ bss_conf->bssid_index = 0;
1045 + }
1046 +
1047 + /*
1048 +diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
1049 +index 8aefc52542a00..86b70385dce3b 100644
1050 +--- a/net/netlink/af_netlink.c
1051 ++++ b/net/netlink/af_netlink.c
1052 +@@ -1987,7 +1987,6 @@ static int netlink_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
1053 + copied = len;
1054 + }
1055 +
1056 +- skb_reset_transport_header(data_skb);
1057 + err = skb_copy_datagram_msg(data_skb, 0, msg, copied);
1058 +
1059 + if (msg->msg_name) {
1060 +diff --git a/net/sched/act_pedit.c b/net/sched/act_pedit.c
1061 +index ff4f2437b5925..305cb190e9979 100644
1062 +--- a/net/sched/act_pedit.c
1063 ++++ b/net/sched/act_pedit.c
1064 +@@ -148,7 +148,7 @@ static int tcf_pedit_init(struct net *net, struct nlattr *nla,
1065 + struct nlattr *pattr;
1066 + struct tcf_pedit *p;
1067 + int ret = 0, err;
1068 +- int ksize;
1069 ++ int i, ksize;
1070 + u32 index;
1071 +
1072 + if (!nla) {
1073 +@@ -227,6 +227,18 @@ static int tcf_pedit_init(struct net *net, struct nlattr *nla,
1074 + p->tcfp_nkeys = parm->nkeys;
1075 + }
1076 + memcpy(p->tcfp_keys, parm->keys, ksize);
1077 ++ p->tcfp_off_max_hint = 0;
1078 ++ for (i = 0; i < p->tcfp_nkeys; ++i) {
1079 ++ u32 cur = p->tcfp_keys[i].off;
1080 ++
1081 ++ /* The AT option can read a single byte, we can bound the actual
1082 ++ * value with uchar max.
1083 ++ */
1084 ++ cur += (0xff & p->tcfp_keys[i].offmask) >> p->tcfp_keys[i].shift;
1085 ++
1086 ++ /* Each key touches 4 bytes starting from the computed offset */
1087 ++ p->tcfp_off_max_hint = max(p->tcfp_off_max_hint, cur + 4);
1088 ++ }
1089 +
1090 + p->tcfp_flags = parm->flags;
1091 + goto_ch = tcf_action_set_ctrlact(*a, parm->action, goto_ch);
1092 +@@ -307,13 +319,18 @@ static int tcf_pedit_act(struct sk_buff *skb, const struct tc_action *a,
1093 + struct tcf_result *res)
1094 + {
1095 + struct tcf_pedit *p = to_pedit(a);
1096 ++ u32 max_offset;
1097 + int i;
1098 +
1099 +- if (skb_unclone(skb, GFP_ATOMIC))
1100 +- return p->tcf_action;
1101 +-
1102 + spin_lock(&p->tcf_lock);
1103 +
1104 ++ max_offset = (skb_transport_header_was_set(skb) ?
1105 ++ skb_transport_offset(skb) :
1106 ++ skb_network_offset(skb)) +
1107 ++ p->tcfp_off_max_hint;
1108 ++ if (skb_ensure_writable(skb, min(skb->len, max_offset)))
1109 ++ goto unlock;
1110 ++
1111 + tcf_lastuse_update(&p->tcf_tm);
1112 +
1113 + if (p->tcfp_nkeys > 0) {
1114 +@@ -402,6 +419,7 @@ bad:
1115 + p->tcf_qstats.overlimits++;
1116 + done:
1117 + bstats_update(&p->tcf_bstats, skb);
1118 ++unlock:
1119 + spin_unlock(&p->tcf_lock);
1120 + return p->tcf_action;
1121 + }
1122 +diff --git a/net/smc/smc_rx.c b/net/smc/smc_rx.c
1123 +index 97e8369002d71..9e89bd1f706b5 100644
1124 +--- a/net/smc/smc_rx.c
1125 ++++ b/net/smc/smc_rx.c
1126 +@@ -348,12 +348,12 @@ int smc_rx_recvmsg(struct smc_sock *smc, struct msghdr *msg,
1127 + }
1128 + break;
1129 + }
1130 ++ if (!timeo)
1131 ++ return -EAGAIN;
1132 + if (signal_pending(current)) {
1133 + read_done = sock_intr_errno(timeo);
1134 + break;
1135 + }
1136 +- if (!timeo)
1137 +- return -EAGAIN;
1138 + }
1139 +
1140 + if (!smc_rx_data_available(conn)) {
1141 +diff --git a/sound/soc/codecs/max98090.c b/sound/soc/codecs/max98090.c
1142 +index 6b9d326e11b07..ce9f99dd3e87d 100644
1143 +--- a/sound/soc/codecs/max98090.c
1144 ++++ b/sound/soc/codecs/max98090.c
1145 +@@ -413,6 +413,9 @@ static int max98090_put_enab_tlv(struct snd_kcontrol *kcontrol,
1146 +
1147 + val = (val >> mc->shift) & mask;
1148 +
1149 ++ if (sel < 0 || sel > mc->max)
1150 ++ return -EINVAL;
1151 ++
1152 + *select = sel;
1153 +
1154 + /* Setting a volume is only valid if it is already On */
1155 +@@ -427,7 +430,7 @@ static int max98090_put_enab_tlv(struct snd_kcontrol *kcontrol,
1156 + mask << mc->shift,
1157 + sel << mc->shift);
1158 +
1159 +- return 0;
1160 ++ return *select != val;
1161 + }
1162 +
1163 + static const char *max98090_perf_pwr_text[] =
1164 +diff --git a/sound/soc/soc-ops.c b/sound/soc/soc-ops.c
1165 +index c88bc6bb41cfe..7a37312c8e0c2 100644
1166 +--- a/sound/soc/soc-ops.c
1167 ++++ b/sound/soc/soc-ops.c
1168 +@@ -523,7 +523,15 @@ int snd_soc_put_volsw_range(struct snd_kcontrol *kcontrol,
1169 + unsigned int mask = (1 << fls(max)) - 1;
1170 + unsigned int invert = mc->invert;
1171 + unsigned int val, val_mask;
1172 +- int err, ret;
1173 ++ int err, ret, tmp;
1174 ++
1175 ++ tmp = ucontrol->value.integer.value[0];
1176 ++ if (tmp < 0)
1177 ++ return -EINVAL;
1178 ++ if (mc->platform_max && tmp > mc->platform_max)
1179 ++ return -EINVAL;
1180 ++ if (tmp > mc->max - mc->min + 1)
1181 ++ return -EINVAL;
1182 +
1183 + if (invert)
1184 + val = (max - ucontrol->value.integer.value[0]) & mask;
1185 +@@ -538,6 +546,14 @@ int snd_soc_put_volsw_range(struct snd_kcontrol *kcontrol,
1186 + ret = err;
1187 +
1188 + if (snd_soc_volsw_is_stereo(mc)) {
1189 ++ tmp = ucontrol->value.integer.value[1];
1190 ++ if (tmp < 0)
1191 ++ return -EINVAL;
1192 ++ if (mc->platform_max && tmp > mc->platform_max)
1193 ++ return -EINVAL;
1194 ++ if (tmp > mc->max - mc->min + 1)
1195 ++ return -EINVAL;
1196 ++
1197 + if (invert)
1198 + val = (max - ucontrol->value.integer.value[1]) & mask;
1199 + else