Gentoo Archives: gentoo-commits

From: Alice Ferrazzi <alicef@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/linux-patches:5.13 commit in: /
Date: Wed, 08 Sep 2021 13:55:31
Message-Id: 1631105142.341ed21bc7db1ba6cbb8b33a1fdd07671c378a9c.alicef@gentoo
1 commit: 341ed21bc7db1ba6cbb8b33a1fdd07671c378a9c
2 Author: Alice Ferrazzi <alicef <AT> gentoo <DOT> org>
3 AuthorDate: Wed Sep 8 12:45:28 2021 +0000
4 Commit: Alice Ferrazzi <alicef <AT> gentoo <DOT> org>
5 CommitDate: Wed Sep 8 12:45:42 2021 +0000
6 URL: https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=341ed21b
7
8 Linux patch 5.13.15
9
10 Signed-off-by: Alice Ferrazzi <alicef <AT> gentoo.org>
11
12 0000_README | 4 +
13 1014_linux-5.13.15.patch | 516 +++++++++++++++++++++++++++++++++++++++++++++++
14 2 files changed, 520 insertions(+)
15
16 diff --git a/0000_README b/0000_README
17 index 2397f15..19f95ee 100644
18 --- a/0000_README
19 +++ b/0000_README
20 @@ -99,6 +99,10 @@ Patch: 1013_linux-5.13.14.patch
21 From: http://www.kernel.org
22 Desc: Linux 5.13.14
23
24 +Patch: 1014_linux-5.13.15.patch
25 +From: http://www.kernel.org
26 +Desc: Linux 5.13.15
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/1014_linux-5.13.15.patch b/1014_linux-5.13.15.patch
33 new file mode 100644
34 index 0000000..6b9ad3c
35 --- /dev/null
36 +++ b/1014_linux-5.13.15.patch
37 @@ -0,0 +1,516 @@
38 +diff --git a/Makefile b/Makefile
39 +index de1f9c79e27ab..d0ea05957da61 100644
40 +--- a/Makefile
41 ++++ b/Makefile
42 +@@ -1,7 +1,7 @@
43 + # SPDX-License-Identifier: GPL-2.0
44 + VERSION = 5
45 + PATCHLEVEL = 13
46 +-SUBLEVEL = 14
47 ++SUBLEVEL = 15
48 + EXTRAVERSION =
49 + NAME = Opossums on Parade
50 +
51 +diff --git a/arch/riscv/boot/dts/microchip/microchip-mpfs-icicle-kit.dts b/arch/riscv/boot/dts/microchip/microchip-mpfs-icicle-kit.dts
52 +index ec79944065c98..baea7d204639a 100644
53 +--- a/arch/riscv/boot/dts/microchip/microchip-mpfs-icicle-kit.dts
54 ++++ b/arch/riscv/boot/dts/microchip/microchip-mpfs-icicle-kit.dts
55 +@@ -14,6 +14,10 @@
56 + model = "Microchip PolarFire-SoC Icicle Kit";
57 + compatible = "microchip,mpfs-icicle-kit";
58 +
59 ++ aliases {
60 ++ ethernet0 = &emac1;
61 ++ };
62 ++
63 + chosen {
64 + stdout-path = &serial0;
65 + };
66 +diff --git a/arch/riscv/boot/dts/microchip/microchip-mpfs.dtsi b/arch/riscv/boot/dts/microchip/microchip-mpfs.dtsi
67 +index b9819570a7d17..9d2fbbc1f7778 100644
68 +--- a/arch/riscv/boot/dts/microchip/microchip-mpfs.dtsi
69 ++++ b/arch/riscv/boot/dts/microchip/microchip-mpfs.dtsi
70 +@@ -317,7 +317,7 @@
71 + reg = <0x0 0x20112000 0x0 0x2000>;
72 + interrupt-parent = <&plic>;
73 + interrupts = <70 71 72 73>;
74 +- mac-address = [00 00 00 00 00 00];
75 ++ local-mac-address = [00 00 00 00 00 00];
76 + clocks = <&clkcfg 5>, <&clkcfg 2>;
77 + status = "disabled";
78 + clock-names = "pclk", "hclk";
79 +diff --git a/arch/x86/events/amd/ibs.c b/arch/x86/events/amd/ibs.c
80 +index 40669eac9d6db..921f47b9bb247 100644
81 +--- a/arch/x86/events/amd/ibs.c
82 ++++ b/arch/x86/events/amd/ibs.c
83 +@@ -90,6 +90,7 @@ struct perf_ibs {
84 + unsigned long offset_mask[1];
85 + int offset_max;
86 + unsigned int fetch_count_reset_broken : 1;
87 ++ unsigned int fetch_ignore_if_zero_rip : 1;
88 + struct cpu_perf_ibs __percpu *pcpu;
89 +
90 + struct attribute **format_attrs;
91 +@@ -672,6 +673,10 @@ fail:
92 + if (check_rip && (ibs_data.regs[2] & IBS_RIP_INVALID)) {
93 + regs.flags &= ~PERF_EFLAGS_EXACT;
94 + } else {
95 ++ /* Workaround for erratum #1197 */
96 ++ if (perf_ibs->fetch_ignore_if_zero_rip && !(ibs_data.regs[1]))
97 ++ goto out;
98 ++
99 + set_linear_ip(&regs, ibs_data.regs[1]);
100 + regs.flags |= PERF_EFLAGS_EXACT;
101 + }
102 +@@ -769,6 +774,9 @@ static __init void perf_event_ibs_init(void)
103 + if (boot_cpu_data.x86 >= 0x16 && boot_cpu_data.x86 <= 0x18)
104 + perf_ibs_fetch.fetch_count_reset_broken = 1;
105 +
106 ++ if (boot_cpu_data.x86 == 0x19 && boot_cpu_data.x86_model < 0x10)
107 ++ perf_ibs_fetch.fetch_ignore_if_zero_rip = 1;
108 ++
109 + perf_ibs_pmu_init(&perf_ibs_fetch, "ibs_fetch");
110 +
111 + if (ibs_caps & IBS_CAPS_OPCNT) {
112 +diff --git a/arch/x86/events/amd/power.c b/arch/x86/events/amd/power.c
113 +index 16a2369c586e8..37d5b380516ec 100644
114 +--- a/arch/x86/events/amd/power.c
115 ++++ b/arch/x86/events/amd/power.c
116 +@@ -213,6 +213,7 @@ static struct pmu pmu_class = {
117 + .stop = pmu_event_stop,
118 + .read = pmu_event_read,
119 + .capabilities = PERF_PMU_CAP_NO_EXCLUDE,
120 ++ .module = THIS_MODULE,
121 + };
122 +
123 + static int power_cpu_exit(unsigned int cpu)
124 +diff --git a/arch/x86/events/intel/pt.c b/arch/x86/events/intel/pt.c
125 +index 915847655c065..b044577785bbb 100644
126 +--- a/arch/x86/events/intel/pt.c
127 ++++ b/arch/x86/events/intel/pt.c
128 +@@ -62,7 +62,7 @@ static struct pt_cap_desc {
129 + PT_CAP(single_range_output, 0, CPUID_ECX, BIT(2)),
130 + PT_CAP(output_subsys, 0, CPUID_ECX, BIT(3)),
131 + PT_CAP(payloads_lip, 0, CPUID_ECX, BIT(31)),
132 +- PT_CAP(num_address_ranges, 1, CPUID_EAX, 0x3),
133 ++ PT_CAP(num_address_ranges, 1, CPUID_EAX, 0x7),
134 + PT_CAP(mtc_periods, 1, CPUID_EAX, 0xffff0000),
135 + PT_CAP(cycle_thresholds, 1, CPUID_EBX, 0xffff),
136 + PT_CAP(psb_periods, 1, CPUID_EBX, 0xffff0000),
137 +diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig
138 +index 2332b21569938..1bdb55c2d0c14 100644
139 +--- a/arch/xtensa/Kconfig
140 ++++ b/arch/xtensa/Kconfig
141 +@@ -30,7 +30,7 @@ config XTENSA
142 + select HAVE_DMA_CONTIGUOUS
143 + select HAVE_EXIT_THREAD
144 + select HAVE_FUNCTION_TRACER
145 +- select HAVE_FUTEX_CMPXCHG if !MMU
146 ++ select HAVE_FUTEX_CMPXCHG if !MMU && FUTEX
147 + select HAVE_HW_BREAKPOINT if PERF_EVENTS
148 + select HAVE_IRQ_TIME_ACCOUNTING
149 + select HAVE_PCI
150 +diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig
151 +index 63056cfd4b62c..fbb3a558139fc 100644
152 +--- a/drivers/block/Kconfig
153 ++++ b/drivers/block/Kconfig
154 +@@ -213,7 +213,7 @@ config BLK_DEV_LOOP_MIN_COUNT
155 + dynamically allocated with the /dev/loop-control interface.
156 +
157 + config BLK_DEV_CRYPTOLOOP
158 +- tristate "Cryptoloop Support"
159 ++ tristate "Cryptoloop Support (DEPRECATED)"
160 + select CRYPTO
161 + select CRYPTO_CBC
162 + depends on BLK_DEV_LOOP
163 +@@ -225,7 +225,7 @@ config BLK_DEV_CRYPTOLOOP
164 + WARNING: This device is not safe for journaled file systems like
165 + ext3 or Reiserfs. Please use the Device Mapper crypto module
166 + instead, which can be configured to be on-disk compatible with the
167 +- cryptoloop device.
168 ++ cryptoloop device. cryptoloop support will be removed in Linux 5.16.
169 +
170 + source "drivers/block/drbd/Kconfig"
171 +
172 +diff --git a/drivers/block/cryptoloop.c b/drivers/block/cryptoloop.c
173 +index 3cabc335ae744..f0a91faa43a89 100644
174 +--- a/drivers/block/cryptoloop.c
175 ++++ b/drivers/block/cryptoloop.c
176 +@@ -189,6 +189,8 @@ init_cryptoloop(void)
177 +
178 + if (rc)
179 + printk(KERN_ERR "cryptoloop: loop_register_transfer failed\n");
180 ++ else
181 ++ pr_warn("the cryptoloop driver has been deprecated and will be removed in in Linux 5.16\n");
182 + return rc;
183 + }
184 +
185 +diff --git a/drivers/gpu/ipu-v3/ipu-cpmem.c b/drivers/gpu/ipu-v3/ipu-cpmem.c
186 +index a1c85d1521f5c..82b244cb313e6 100644
187 +--- a/drivers/gpu/ipu-v3/ipu-cpmem.c
188 ++++ b/drivers/gpu/ipu-v3/ipu-cpmem.c
189 +@@ -585,21 +585,21 @@ static const struct ipu_rgb def_bgra_16 = {
190 + .bits_per_pixel = 16,
191 + };
192 +
193 +-#define Y_OFFSET(pix, x, y) ((x) + pix->width * (y))
194 +-#define U_OFFSET(pix, x, y) ((pix->width * pix->height) + \
195 +- (pix->width * ((y) / 2) / 2) + (x) / 2)
196 +-#define V_OFFSET(pix, x, y) ((pix->width * pix->height) + \
197 +- (pix->width * pix->height / 4) + \
198 +- (pix->width * ((y) / 2) / 2) + (x) / 2)
199 +-#define U2_OFFSET(pix, x, y) ((pix->width * pix->height) + \
200 +- (pix->width * (y) / 2) + (x) / 2)
201 +-#define V2_OFFSET(pix, x, y) ((pix->width * pix->height) + \
202 +- (pix->width * pix->height / 2) + \
203 +- (pix->width * (y) / 2) + (x) / 2)
204 +-#define UV_OFFSET(pix, x, y) ((pix->width * pix->height) + \
205 +- (pix->width * ((y) / 2)) + (x))
206 +-#define UV2_OFFSET(pix, x, y) ((pix->width * pix->height) + \
207 +- (pix->width * y) + (x))
208 ++#define Y_OFFSET(pix, x, y) ((x) + pix->bytesperline * (y))
209 ++#define U_OFFSET(pix, x, y) ((pix->bytesperline * pix->height) + \
210 ++ (pix->bytesperline * ((y) / 2) / 2) + (x) / 2)
211 ++#define V_OFFSET(pix, x, y) ((pix->bytesperline * pix->height) + \
212 ++ (pix->bytesperline * pix->height / 4) + \
213 ++ (pix->bytesperline * ((y) / 2) / 2) + (x) / 2)
214 ++#define U2_OFFSET(pix, x, y) ((pix->bytesperline * pix->height) + \
215 ++ (pix->bytesperline * (y) / 2) + (x) / 2)
216 ++#define V2_OFFSET(pix, x, y) ((pix->bytesperline * pix->height) + \
217 ++ (pix->bytesperline * pix->height / 2) + \
218 ++ (pix->bytesperline * (y) / 2) + (x) / 2)
219 ++#define UV_OFFSET(pix, x, y) ((pix->bytesperline * pix->height) + \
220 ++ (pix->bytesperline * ((y) / 2)) + (x))
221 ++#define UV2_OFFSET(pix, x, y) ((pix->bytesperline * pix->height) + \
222 ++ (pix->bytesperline * y) + (x))
223 +
224 + #define NUM_ALPHA_CHANNELS 7
225 +
226 +diff --git a/drivers/media/usb/stkwebcam/stk-webcam.c b/drivers/media/usb/stkwebcam/stk-webcam.c
227 +index a45d464427c4c..0e231e576dc3d 100644
228 +--- a/drivers/media/usb/stkwebcam/stk-webcam.c
229 ++++ b/drivers/media/usb/stkwebcam/stk-webcam.c
230 +@@ -1346,7 +1346,7 @@ static int stk_camera_probe(struct usb_interface *interface,
231 + if (!dev->isoc_ep) {
232 + pr_err("Could not find isoc-in endpoint\n");
233 + err = -ENODEV;
234 +- goto error;
235 ++ goto error_put;
236 + }
237 + dev->vsettings.palette = V4L2_PIX_FMT_RGB565;
238 + dev->vsettings.mode = MODE_VGA;
239 +@@ -1359,10 +1359,12 @@ static int stk_camera_probe(struct usb_interface *interface,
240 +
241 + err = stk_register_video_device(dev);
242 + if (err)
243 +- goto error;
244 ++ goto error_put;
245 +
246 + return 0;
247 +
248 ++error_put:
249 ++ usb_put_intf(interface);
250 + error:
251 + v4l2_ctrl_handler_free(hdl);
252 + v4l2_device_unregister(&dev->v4l2_dev);
253 +diff --git a/drivers/net/dsa/mv88e6xxx/serdes.c b/drivers/net/dsa/mv88e6xxx/serdes.c
254 +index b1d46dd8eaabc..6ea0036787986 100644
255 +--- a/drivers/net/dsa/mv88e6xxx/serdes.c
256 ++++ b/drivers/net/dsa/mv88e6xxx/serdes.c
257 +@@ -1277,15 +1277,16 @@ static int mv88e6393x_serdes_port_errata(struct mv88e6xxx_chip *chip, int lane)
258 + int err;
259 +
260 + /* mv88e6393x family errata 4.6:
261 +- * Cannot clear PwrDn bit on SERDES on port 0 if device is configured
262 +- * CPU_MGD mode or P0_mode is configured for [x]MII.
263 +- * Workaround: Set Port0 SERDES register 4.F002 bit 5=0 and bit 15=1.
264 ++ * Cannot clear PwrDn bit on SERDES if device is configured CPU_MGD
265 ++ * mode or P0_mode is configured for [x]MII.
266 ++ * Workaround: Set SERDES register 4.F002 bit 5=0 and bit 15=1.
267 + *
268 + * It seems that after this workaround the SERDES is automatically
269 + * powered up (the bit is cleared), so power it down.
270 + */
271 +- if (lane == MV88E6393X_PORT0_LANE) {
272 +- err = mv88e6390_serdes_read(chip, MV88E6393X_PORT0_LANE,
273 ++ if (lane == MV88E6393X_PORT0_LANE || lane == MV88E6393X_PORT9_LANE ||
274 ++ lane == MV88E6393X_PORT10_LANE) {
275 ++ err = mv88e6390_serdes_read(chip, lane,
276 + MDIO_MMD_PHYXS,
277 + MV88E6393X_SERDES_POC, &reg);
278 + if (err)
279 +diff --git a/drivers/net/ethernet/cadence/macb_ptp.c b/drivers/net/ethernet/cadence/macb_ptp.c
280 +index 283918aeb741d..09d64a29f56e3 100644
281 +--- a/drivers/net/ethernet/cadence/macb_ptp.c
282 ++++ b/drivers/net/ethernet/cadence/macb_ptp.c
283 +@@ -275,6 +275,12 @@ void gem_ptp_rxstamp(struct macb *bp, struct sk_buff *skb,
284 +
285 + if (GEM_BFEXT(DMA_RXVALID, desc->addr)) {
286 + desc_ptp = macb_ptp_desc(bp, desc);
287 ++ /* Unlikely but check */
288 ++ if (!desc_ptp) {
289 ++ dev_warn_ratelimited(&bp->pdev->dev,
290 ++ "Timestamp not supported in BD\n");
291 ++ return;
292 ++ }
293 + gem_hw_timestamp(bp, desc_ptp->ts_1, desc_ptp->ts_2, &ts);
294 + memset(shhwtstamps, 0, sizeof(struct skb_shared_hwtstamps));
295 + shhwtstamps->hwtstamp = ktime_set(ts.tv_sec, ts.tv_nsec);
296 +@@ -307,8 +313,11 @@ int gem_ptp_txstamp(struct macb_queue *queue, struct sk_buff *skb,
297 + if (CIRC_SPACE(head, tail, PTP_TS_BUFFER_SIZE) == 0)
298 + return -ENOMEM;
299 +
300 +- skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;
301 + desc_ptp = macb_ptp_desc(queue->bp, desc);
302 ++ /* Unlikely but check */
303 ++ if (!desc_ptp)
304 ++ return -EINVAL;
305 ++ skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;
306 + tx_timestamp = &queue->tx_timestamps[head];
307 + tx_timestamp->skb = skb;
308 + /* ensure ts_1/ts_2 is loaded after ctrl (TX_USED check) */
309 +diff --git a/drivers/net/ethernet/qlogic/qed/qed_main.c b/drivers/net/ethernet/qlogic/qed/qed_main.c
310 +index 5bd58c65e1631..6bb9ec98a12b5 100644
311 +--- a/drivers/net/ethernet/qlogic/qed/qed_main.c
312 ++++ b/drivers/net/ethernet/qlogic/qed/qed_main.c
313 +@@ -616,7 +616,12 @@ static int qed_enable_msix(struct qed_dev *cdev,
314 + rc = cnt;
315 + }
316 +
317 +- if (rc > 0) {
318 ++ /* For VFs, we should return with an error in case we didn't get the
319 ++ * exact number of msix vectors as we requested.
320 ++ * Not doing that will lead to a crash when starting queues for
321 ++ * this VF.
322 ++ */
323 ++ if ((IS_PF(cdev) && rc > 0) || (IS_VF(cdev) && rc == cnt)) {
324 + /* MSI-x configuration was achieved */
325 + int_params->out.int_mode = QED_INT_MODE_MSIX;
326 + int_params->out.num_vectors = rc;
327 +diff --git a/drivers/net/ethernet/qlogic/qede/qede_main.c b/drivers/net/ethernet/qlogic/qede/qede_main.c
328 +index 7c6064baeba28..1c7f9ed6f1c19 100644
329 +--- a/drivers/net/ethernet/qlogic/qede/qede_main.c
330 ++++ b/drivers/net/ethernet/qlogic/qede/qede_main.c
331 +@@ -1874,6 +1874,7 @@ static void qede_sync_free_irqs(struct qede_dev *edev)
332 + }
333 +
334 + edev->int_info.used_cnt = 0;
335 ++ edev->int_info.msix_cnt = 0;
336 + }
337 +
338 + static int qede_req_msix_irqs(struct qede_dev *edev)
339 +@@ -2427,7 +2428,6 @@ static int qede_load(struct qede_dev *edev, enum qede_load_mode mode,
340 + goto out;
341 + err4:
342 + qede_sync_free_irqs(edev);
343 +- memset(&edev->int_info.msix_cnt, 0, sizeof(struct qed_int_info));
344 + err3:
345 + qede_napi_disable_remove(edev);
346 + err2:
347 +diff --git a/drivers/reset/reset-zynqmp.c b/drivers/reset/reset-zynqmp.c
348 +index ebd433fa09dd7..8c51768e9a720 100644
349 +--- a/drivers/reset/reset-zynqmp.c
350 ++++ b/drivers/reset/reset-zynqmp.c
351 +@@ -53,7 +53,8 @@ static int zynqmp_reset_status(struct reset_controller_dev *rcdev,
352 + unsigned long id)
353 + {
354 + struct zynqmp_reset_data *priv = to_zynqmp_reset_data(rcdev);
355 +- int val, err;
356 ++ int err;
357 ++ u32 val;
358 +
359 + err = zynqmp_pm_reset_get_status(priv->data->reset_id + id, &val);
360 + if (err)
361 +diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
362 +index ea2e2d925a960..737748529482a 100644
363 +--- a/drivers/usb/serial/cp210x.c
364 ++++ b/drivers/usb/serial/cp210x.c
365 +@@ -1110,10 +1110,8 @@ static int cp210x_set_chars(struct usb_serial_port *port,
366 +
367 + kfree(dmabuf);
368 +
369 +- if (result < 0) {
370 +- dev_err(&port->dev, "failed to set special chars: %d\n", result);
371 ++ if (result < 0)
372 + return result;
373 +- }
374 +
375 + return 0;
376 + }
377 +@@ -1138,6 +1136,7 @@ static void cp210x_set_flow_control(struct tty_struct *tty,
378 + struct cp210x_flow_ctl flow_ctl;
379 + u32 flow_repl;
380 + u32 ctl_hs;
381 ++ bool crtscts;
382 + int ret;
383 +
384 + /*
385 +@@ -1165,8 +1164,10 @@ static void cp210x_set_flow_control(struct tty_struct *tty,
386 + chars.bXoffChar = STOP_CHAR(tty);
387 +
388 + ret = cp210x_set_chars(port, &chars);
389 +- if (ret)
390 +- return;
391 ++ if (ret) {
392 ++ dev_err(&port->dev, "failed to set special chars: %d\n",
393 ++ ret);
394 ++ }
395 + }
396 +
397 + mutex_lock(&port_priv->mutex);
398 +@@ -1195,14 +1196,14 @@ static void cp210x_set_flow_control(struct tty_struct *tty,
399 + flow_repl |= CP210X_SERIAL_RTS_FLOW_CTL;
400 + else
401 + flow_repl |= CP210X_SERIAL_RTS_INACTIVE;
402 +- port_priv->crtscts = true;
403 ++ crtscts = true;
404 + } else {
405 + ctl_hs &= ~CP210X_SERIAL_CTS_HANDSHAKE;
406 + if (port_priv->rts)
407 + flow_repl |= CP210X_SERIAL_RTS_ACTIVE;
408 + else
409 + flow_repl |= CP210X_SERIAL_RTS_INACTIVE;
410 +- port_priv->crtscts = false;
411 ++ crtscts = false;
412 + }
413 +
414 + if (I_IXOFF(tty)) {
415 +@@ -1225,8 +1226,12 @@ static void cp210x_set_flow_control(struct tty_struct *tty,
416 + flow_ctl.ulControlHandshake = cpu_to_le32(ctl_hs);
417 + flow_ctl.ulFlowReplace = cpu_to_le32(flow_repl);
418 +
419 +- cp210x_write_reg_block(port, CP210X_SET_FLOW, &flow_ctl,
420 ++ ret = cp210x_write_reg_block(port, CP210X_SET_FLOW, &flow_ctl,
421 + sizeof(flow_ctl));
422 ++ if (ret)
423 ++ goto out_unlock;
424 ++
425 ++ port_priv->crtscts = crtscts;
426 + out_unlock:
427 + mutex_unlock(&port_priv->mutex);
428 + }
429 +diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
430 +index 2ce9cbf49e974..3b579966fe735 100644
431 +--- a/drivers/usb/serial/pl2303.c
432 ++++ b/drivers/usb/serial/pl2303.c
433 +@@ -433,6 +433,7 @@ static int pl2303_detect_type(struct usb_serial *serial)
434 + switch (bcdDevice) {
435 + case 0x100:
436 + case 0x305:
437 ++ case 0x405:
438 + /*
439 + * Assume it's an HXN-type if the device doesn't
440 + * support the old read request value.
441 +diff --git a/fs/ceph/mdsmap.c b/fs/ceph/mdsmap.c
442 +index abd9af7727ad3..3c444b9cb17b8 100644
443 +--- a/fs/ceph/mdsmap.c
444 ++++ b/fs/ceph/mdsmap.c
445 +@@ -394,9 +394,11 @@ void ceph_mdsmap_destroy(struct ceph_mdsmap *m)
446 + {
447 + int i;
448 +
449 +- for (i = 0; i < m->possible_max_rank; i++)
450 +- kfree(m->m_info[i].export_targets);
451 +- kfree(m->m_info);
452 ++ if (m->m_info) {
453 ++ for (i = 0; i < m->possible_max_rank; i++)
454 ++ kfree(m->m_info[i].export_targets);
455 ++ kfree(m->m_info);
456 ++ }
457 + kfree(m->m_data_pg_pools);
458 + kfree(m);
459 + }
460 +diff --git a/fs/ext4/inline.c b/fs/ext4/inline.c
461 +index 3cf01629010d9..0e85447022ae0 100644
462 +--- a/fs/ext4/inline.c
463 ++++ b/fs/ext4/inline.c
464 +@@ -750,6 +750,12 @@ int ext4_write_inline_data_end(struct inode *inode, loff_t pos, unsigned len,
465 + ext4_write_lock_xattr(inode, &no_expand);
466 + BUG_ON(!ext4_has_inline_data(inode));
467 +
468 ++ /*
469 ++ * ei->i_inline_off may have changed since ext4_write_begin()
470 ++ * called ext4_try_to_write_inline_data()
471 ++ */
472 ++ (void) ext4_find_inline_data_nolock(inode);
473 ++
474 + kaddr = kmap_atomic(page);
475 + ext4_write_inline_data(inode, &iloc, kaddr, pos, len);
476 + kunmap_atomic(kaddr);
477 +diff --git a/fs/ext4/super.c b/fs/ext4/super.c
478 +index 6a4e040ea9b3a..079bb0f6b3438 100644
479 +--- a/fs/ext4/super.c
480 ++++ b/fs/ext4/super.c
481 +@@ -5051,6 +5051,14 @@ no_journal:
482 + err = percpu_counter_init(&sbi->s_freeinodes_counter, freei,
483 + GFP_KERNEL);
484 + }
485 ++ /*
486 ++ * Update the checksum after updating free space/inode
487 ++ * counters. Otherwise the superblock can have an incorrect
488 ++ * checksum in the buffer cache until it is written out and
489 ++ * e2fsprogs programs trying to open a file system immediately
490 ++ * after it is mounted can fail.
491 ++ */
492 ++ ext4_superblock_csum_set(sb);
493 + if (!err)
494 + err = percpu_counter_init(&sbi->s_dirs_counter,
495 + ext4_count_dirs(sb), GFP_KERNEL);
496 +diff --git a/sound/core/pcm_lib.c b/sound/core/pcm_lib.c
497 +index b7e3d8f445113..23c58b62a58a5 100644
498 +--- a/sound/core/pcm_lib.c
499 ++++ b/sound/core/pcm_lib.c
500 +@@ -1746,7 +1746,7 @@ static int snd_pcm_lib_ioctl_fifo_size(struct snd_pcm_substream *substream,
501 + channels = params_channels(params);
502 + frame_size = snd_pcm_format_size(format, channels);
503 + if (frame_size > 0)
504 +- params->fifo_size /= (unsigned)frame_size;
505 ++ params->fifo_size /= frame_size;
506 + }
507 + return 0;
508 + }
509 +diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
510 +index 0c6be85098558..82191d8f3d217 100644
511 +--- a/sound/pci/hda/patch_realtek.c
512 ++++ b/sound/pci/hda/patch_realtek.c
513 +@@ -8378,6 +8378,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
514 + SND_PCI_QUIRK(0x103c, 0x87f2, "HP ProBook 640 G8 Notebook PC", ALC236_FIXUP_HP_GPIO_LED),
515 + SND_PCI_QUIRK(0x103c, 0x87f4, "HP", ALC287_FIXUP_HP_GPIO_LED),
516 + SND_PCI_QUIRK(0x103c, 0x87f5, "HP", ALC287_FIXUP_HP_GPIO_LED),
517 ++ SND_PCI_QUIRK(0x103c, 0x87f6, "HP Spectre x360 14", ALC245_FIXUP_HP_X360_AMP),
518 + SND_PCI_QUIRK(0x103c, 0x87f7, "HP Spectre x360 14", ALC245_FIXUP_HP_X360_AMP),
519 + SND_PCI_QUIRK(0x103c, 0x8805, "HP ProBook 650 G8 Notebook PC", ALC236_FIXUP_HP_GPIO_LED),
520 + SND_PCI_QUIRK(0x103c, 0x880d, "HP EliteBook 830 G8 Notebook PC", ALC285_FIXUP_HP_GPIO_LED),
521 +@@ -9456,6 +9457,16 @@ static int patch_alc269(struct hda_codec *codec)
522 +
523 + snd_hda_pick_fixup(codec, alc269_fixup_models,
524 + alc269_fixup_tbl, alc269_fixups);
525 ++ /* FIXME: both TX300 and ROG Strix G17 have the same SSID, and
526 ++ * the quirk breaks the latter (bko#214101).
527 ++ * Clear the wrong entry.
528 ++ */
529 ++ if (codec->fixup_id == ALC282_FIXUP_ASUS_TX300 &&
530 ++ codec->core.vendor_id == 0x10ec0294) {
531 ++ codec_dbg(codec, "Clear wrong fixup for ASUS ROG Strix G17\n");
532 ++ codec->fixup_id = HDA_FIXUP_ID_NOT_SET;
533 ++ }
534 ++
535 + snd_hda_pick_pin_fixup(codec, alc269_pin_fixup_tbl, alc269_fixups, true);
536 + snd_hda_pick_pin_fixup(codec, alc269_fallback_pin_fixup_tbl, alc269_fixups, false);
537 + snd_hda_pick_fixup(codec, NULL, alc269_fixup_vendor_tbl,
538 +diff --git a/sound/usb/endpoint.c b/sound/usb/endpoint.c
539 +index 014c438628262..3cb1a584bf80f 100644
540 +--- a/sound/usb/endpoint.c
541 ++++ b/sound/usb/endpoint.c
542 +@@ -1286,6 +1286,11 @@ int snd_usb_endpoint_configure(struct snd_usb_audio *chip,
543 + * to be set up before parameter setups
544 + */
545 + iface_first = ep->cur_audiofmt->protocol == UAC_VERSION_1;
546 ++ /* Workaround for Sony WALKMAN NW-A45 DAC;
547 ++ * it requires the interface setup at first like UAC1
548 ++ */
549 ++ if (chip->usb_id == USB_ID(0x054c, 0x0b8c))
550 ++ iface_first = true;
551 + if (iface_first) {
552 + err = endpoint_set_interface(chip, ep, true);
553 + if (err < 0)