Gentoo Archives: gentoo-commits

From: Mike Pagano <mpagano@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/linux-patches:5.15 commit in: /
Date: Fri, 03 Mar 2023 12:29:50
Message-Id: 1677846571.607424ee814a1c81bb346485da384cc5afc875f4.mpagano@gentoo
1 commit: 607424ee814a1c81bb346485da384cc5afc875f4
2 Author: Mike Pagano <mpagano <AT> gentoo <DOT> org>
3 AuthorDate: Fri Mar 3 12:29:31 2023 +0000
4 Commit: Mike Pagano <mpagano <AT> gentoo <DOT> org>
5 CommitDate: Fri Mar 3 12:29:31 2023 +0000
6 URL: https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=607424ee
7
8 Linux patch 5.15.97
9
10 Signed-off-by: Mike Pagano <mpagano <AT> gentoo.org>
11
12 0000_README | 4 +
13 1096_linux-5.15.97.patch | 776 +++++++++++++++++++++++++++++++++++++++++++++++
14 2 files changed, 780 insertions(+)
15
16 diff --git a/0000_README b/0000_README
17 index 60fe6f95..bb0c0362 100644
18 --- a/0000_README
19 +++ b/0000_README
20 @@ -427,6 +427,10 @@ Patch: 1095_linux-5.15.96.patch
21 From: https://www.kernel.org
22 Desc: Linux 5.15.96
23
24 +Patch: 1096_linux-5.15.97.patch
25 +From: https://www.kernel.org
26 +Desc: Linux 5.15.97
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/1096_linux-5.15.97.patch b/1096_linux-5.15.97.patch
33 new file mode 100644
34 index 00000000..e664def0
35 --- /dev/null
36 +++ b/1096_linux-5.15.97.patch
37 @@ -0,0 +1,776 @@
38 +diff --git a/Makefile b/Makefile
39 +index ca432d4fdc7a5..89e039ab5968e 100644
40 +--- a/Makefile
41 ++++ b/Makefile
42 +@@ -1,7 +1,7 @@
43 + # SPDX-License-Identifier: GPL-2.0
44 + VERSION = 5
45 + PATCHLEVEL = 15
46 +-SUBLEVEL = 96
47 ++SUBLEVEL = 97
48 + EXTRAVERSION =
49 + NAME = Trick or Treat
50 +
51 +diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
52 +index 66ff5db53c5a9..8670c948ca8da 100644
53 +--- a/arch/arm/boot/dts/rk3288.dtsi
54 ++++ b/arch/arm/boot/dts/rk3288.dtsi
55 +@@ -1180,6 +1180,7 @@
56 + clock-names = "dp", "pclk";
57 + phys = <&edp_phy>;
58 + phy-names = "dp";
59 ++ power-domains = <&power RK3288_PD_VIO>;
60 + resets = <&cru SRST_EDP>;
61 + reset-names = "dp";
62 + rockchip,grf = <&grf>;
63 +diff --git a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
64 +index aa22a0c222655..5d5d9574088ca 100644
65 +--- a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
66 ++++ b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
67 +@@ -96,7 +96,6 @@
68 + linux,default-trigger = "heartbeat";
69 + gpios = <&rk805 1 GPIO_ACTIVE_LOW>;
70 + default-state = "on";
71 +- mode = <0x23>;
72 + };
73 +
74 + user_led: led-1 {
75 +@@ -104,7 +103,6 @@
76 + linux,default-trigger = "mmc1";
77 + gpios = <&rk805 0 GPIO_ACTIVE_LOW>;
78 + default-state = "off";
79 +- mode = <0x05>;
80 + };
81 + };
82 + };
83 +diff --git a/arch/x86/include/asm/intel-family.h b/arch/x86/include/asm/intel-family.h
84 +index 13922963431a0..b8e7ea9e71e20 100644
85 +--- a/arch/x86/include/asm/intel-family.h
86 ++++ b/arch/x86/include/asm/intel-family.h
87 +@@ -113,6 +113,8 @@
88 + #define INTEL_FAM6_ALDERLAKE 0x97 /* Golden Cove / Gracemont */
89 + #define INTEL_FAM6_ALDERLAKE_L 0x9A /* Golden Cove / Gracemont */
90 +
91 ++#define INTEL_FAM6_LUNARLAKE_M 0xBD
92 ++
93 + /* "Small Core" Processors (Atom/E-Core) */
94 +
95 + #define INTEL_FAM6_ATOM_BONNELL 0x1C /* Diamondville, Pineview */
96 +diff --git a/drivers/acpi/nfit/core.c b/drivers/acpi/nfit/core.c
97 +index 7dd80acf92c78..2575d6c51f898 100644
98 +--- a/drivers/acpi/nfit/core.c
99 ++++ b/drivers/acpi/nfit/core.c
100 +@@ -3676,8 +3676,8 @@ void acpi_nfit_shutdown(void *data)
101 +
102 + mutex_lock(&acpi_desc->init_mutex);
103 + set_bit(ARS_CANCEL, &acpi_desc->scrub_flags);
104 +- cancel_delayed_work_sync(&acpi_desc->dwork);
105 + mutex_unlock(&acpi_desc->init_mutex);
106 ++ cancel_delayed_work_sync(&acpi_desc->dwork);
107 +
108 + /*
109 + * Bounce the nvdimm bus lock to make sure any in-flight
110 +diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
111 +index 2e475bd426b84..f1ea883db5de1 100644
112 +--- a/drivers/hid/hid-core.c
113 ++++ b/drivers/hid/hid-core.c
114 +@@ -1197,6 +1197,7 @@ int hid_open_report(struct hid_device *device)
115 + __u8 *end;
116 + __u8 *next;
117 + int ret;
118 ++ int i;
119 + static int (*dispatch_type[])(struct hid_parser *parser,
120 + struct hid_item *item) = {
121 + hid_parser_main,
122 +@@ -1247,6 +1248,8 @@ int hid_open_report(struct hid_device *device)
123 + goto err;
124 + }
125 + device->collection_size = HID_DEFAULT_NUM_COLLECTIONS;
126 ++ for (i = 0; i < HID_DEFAULT_NUM_COLLECTIONS; i++)
127 ++ device->collection[i].parent_idx = -1;
128 +
129 + ret = -EINVAL;
130 + while ((next = fetch_item(start, end, &item)) != NULL) {
131 +diff --git a/drivers/hid/hid-elecom.c b/drivers/hid/hid-elecom.c
132 +index e59e9911fc370..4fa45ee77503b 100644
133 +--- a/drivers/hid/hid-elecom.c
134 ++++ b/drivers/hid/hid-elecom.c
135 +@@ -12,6 +12,7 @@
136 + * Copyright (c) 2017 Alex Manoussakis <amanou@×××.org>
137 + * Copyright (c) 2017 Tomasz Kramkowski <tk@××××××.com>
138 + * Copyright (c) 2020 YOSHIOKA Takuma <lo48576@×××××××.red>
139 ++ * Copyright (c) 2022 Takahiro Fujii <fujii@×××××.net>
140 + */
141 +
142 + /*
143 +@@ -89,7 +90,7 @@ static __u8 *elecom_report_fixup(struct hid_device *hdev, __u8 *rdesc,
144 + case USB_DEVICE_ID_ELECOM_M_DT1URBK:
145 + case USB_DEVICE_ID_ELECOM_M_DT1DRBK:
146 + case USB_DEVICE_ID_ELECOM_M_HT1URBK:
147 +- case USB_DEVICE_ID_ELECOM_M_HT1DRBK:
148 ++ case USB_DEVICE_ID_ELECOM_M_HT1DRBK_010D:
149 + /*
150 + * Report descriptor format:
151 + * 12: button bit count
152 +@@ -99,6 +100,16 @@ static __u8 *elecom_report_fixup(struct hid_device *hdev, __u8 *rdesc,
153 + */
154 + mouse_button_fixup(hdev, rdesc, *rsize, 12, 30, 14, 20, 8);
155 + break;
156 ++ case USB_DEVICE_ID_ELECOM_M_HT1DRBK_011C:
157 ++ /*
158 ++ * Report descriptor format:
159 ++ * 22: button bit count
160 ++ * 30: padding bit count
161 ++ * 24: button report size
162 ++ * 16: button usage maximum
163 ++ */
164 ++ mouse_button_fixup(hdev, rdesc, *rsize, 22, 30, 24, 16, 8);
165 ++ break;
166 + }
167 + return rdesc;
168 + }
169 +@@ -112,7 +123,8 @@ static const struct hid_device_id elecom_devices[] = {
170 + { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_DT1URBK) },
171 + { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_DT1DRBK) },
172 + { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1URBK) },
173 +- { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1DRBK) },
174 ++ { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1DRBK_010D) },
175 ++ { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1DRBK_011C) },
176 + { }
177 + };
178 + MODULE_DEVICE_TABLE(hid, elecom_devices);
179 +diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
180 +index fa1aa22547ea7..b153ddc3319e8 100644
181 +--- a/drivers/hid/hid-ids.h
182 ++++ b/drivers/hid/hid-ids.h
183 +@@ -410,7 +410,8 @@
184 + #define USB_DEVICE_ID_ELECOM_M_DT1URBK 0x00fe
185 + #define USB_DEVICE_ID_ELECOM_M_DT1DRBK 0x00ff
186 + #define USB_DEVICE_ID_ELECOM_M_HT1URBK 0x010c
187 +-#define USB_DEVICE_ID_ELECOM_M_HT1DRBK 0x010d
188 ++#define USB_DEVICE_ID_ELECOM_M_HT1DRBK_010D 0x010d
189 ++#define USB_DEVICE_ID_ELECOM_M_HT1DRBK_011C 0x011c
190 +
191 + #define USB_VENDOR_ID_DREAM_CHEEKY 0x1d34
192 + #define USB_DEVICE_ID_DREAM_CHEEKY_WN 0x0004
193 +diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
194 +index 184029cad014f..4a8c32148e58f 100644
195 +--- a/drivers/hid/hid-quirks.c
196 ++++ b/drivers/hid/hid-quirks.c
197 +@@ -381,7 +381,8 @@ static const struct hid_device_id hid_have_special_driver[] = {
198 + { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_DT1URBK) },
199 + { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_DT1DRBK) },
200 + { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1URBK) },
201 +- { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1DRBK) },
202 ++ { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1DRBK_010D) },
203 ++ { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1DRBK_011C) },
204 + #endif
205 + #if IS_ENABLED(CONFIG_HID_ELO)
206 + { HID_USB_DEVICE(USB_VENDOR_ID_ELO, 0x0009) },
207 +diff --git a/drivers/infiniband/hw/hfi1/user_exp_rcv.c b/drivers/infiniband/hw/hfi1/user_exp_rcv.c
208 +index ba930112c1624..1d2020c30ef3b 100644
209 +--- a/drivers/infiniband/hw/hfi1/user_exp_rcv.c
210 ++++ b/drivers/infiniband/hw/hfi1/user_exp_rcv.c
211 +@@ -160,16 +160,11 @@ static void unpin_rcv_pages(struct hfi1_filedata *fd,
212 + static int pin_rcv_pages(struct hfi1_filedata *fd, struct tid_user_buf *tidbuf)
213 + {
214 + int pinned;
215 +- unsigned int npages;
216 ++ unsigned int npages = tidbuf->npages;
217 + unsigned long vaddr = tidbuf->vaddr;
218 + struct page **pages = NULL;
219 + struct hfi1_devdata *dd = fd->uctxt->dd;
220 +
221 +- /* Get the number of pages the user buffer spans */
222 +- npages = num_user_pages(vaddr, tidbuf->length);
223 +- if (!npages)
224 +- return -EINVAL;
225 +-
226 + if (npages > fd->uctxt->expected_count) {
227 + dd_dev_err(dd, "Expected buffer too big\n");
228 + return -EINVAL;
229 +@@ -196,7 +191,6 @@ static int pin_rcv_pages(struct hfi1_filedata *fd, struct tid_user_buf *tidbuf)
230 + return pinned;
231 + }
232 + tidbuf->pages = pages;
233 +- tidbuf->npages = npages;
234 + fd->tid_n_pinned += pinned;
235 + return pinned;
236 + }
237 +@@ -274,6 +268,7 @@ int hfi1_user_exp_rcv_setup(struct hfi1_filedata *fd,
238 + mutex_init(&tidbuf->cover_mutex);
239 + tidbuf->vaddr = tinfo->vaddr;
240 + tidbuf->length = tinfo->length;
241 ++ tidbuf->npages = num_user_pages(tidbuf->vaddr, tidbuf->length);
242 + tidbuf->psets = kcalloc(uctxt->expected_count, sizeof(*tidbuf->psets),
243 + GFP_KERNEL);
244 + if (!tidbuf->psets) {
245 +diff --git a/drivers/net/ethernet/pensando/ionic/ionic_txrx.c b/drivers/net/ethernet/pensando/ionic/ionic_txrx.c
246 +index 37c39581b6599..376f97b4008bb 100644
247 +--- a/drivers/net/ethernet/pensando/ionic/ionic_txrx.c
248 ++++ b/drivers/net/ethernet/pensando/ionic/ionic_txrx.c
249 +@@ -353,16 +353,25 @@ void ionic_rx_fill(struct ionic_queue *q)
250 + struct ionic_rxq_sg_desc *sg_desc;
251 + struct ionic_rxq_sg_elem *sg_elem;
252 + struct ionic_buf_info *buf_info;
253 ++ unsigned int fill_threshold;
254 + struct ionic_rxq_desc *desc;
255 + unsigned int remain_len;
256 + unsigned int frag_len;
257 + unsigned int nfrags;
258 ++ unsigned int n_fill;
259 + unsigned int i, j;
260 + unsigned int len;
261 +
262 ++ n_fill = ionic_q_space_avail(q);
263 ++
264 ++ fill_threshold = min_t(unsigned int, IONIC_RX_FILL_THRESHOLD,
265 ++ q->num_descs / IONIC_RX_FILL_DIV);
266 ++ if (n_fill < fill_threshold)
267 ++ return;
268 ++
269 + len = netdev->mtu + ETH_HLEN + VLAN_HLEN;
270 +
271 +- for (i = ionic_q_space_avail(q); i; i--) {
272 ++ for (i = n_fill; i; i--) {
273 + nfrags = 0;
274 + remain_len = len;
275 + desc_info = &q->info[q->head_idx];
276 +@@ -518,7 +527,6 @@ int ionic_rx_napi(struct napi_struct *napi, int budget)
277 + struct ionic_cq *cq = napi_to_cq(napi);
278 + struct ionic_dev *idev;
279 + struct ionic_lif *lif;
280 +- u16 rx_fill_threshold;
281 + u32 work_done = 0;
282 + u32 flags = 0;
283 +
284 +@@ -528,10 +536,7 @@ int ionic_rx_napi(struct napi_struct *napi, int budget)
285 + work_done = ionic_cq_service(cq, budget,
286 + ionic_rx_service, NULL, NULL);
287 +
288 +- rx_fill_threshold = min_t(u16, IONIC_RX_FILL_THRESHOLD,
289 +- cq->num_descs / IONIC_RX_FILL_DIV);
290 +- if (work_done && ionic_q_space_avail(cq->bound_q) >= rx_fill_threshold)
291 +- ionic_rx_fill(cq->bound_q);
292 ++ ionic_rx_fill(cq->bound_q);
293 +
294 + if (work_done < budget && napi_complete_done(napi, work_done)) {
295 + ionic_dim_update(qcq, IONIC_LIF_F_RX_DIM_INTR);
296 +@@ -559,7 +564,6 @@ int ionic_txrx_napi(struct napi_struct *napi, int budget)
297 + struct ionic_dev *idev;
298 + struct ionic_lif *lif;
299 + struct ionic_cq *txcq;
300 +- u16 rx_fill_threshold;
301 + u32 rx_work_done = 0;
302 + u32 tx_work_done = 0;
303 + u32 flags = 0;
304 +@@ -574,10 +578,7 @@ int ionic_txrx_napi(struct napi_struct *napi, int budget)
305 + rx_work_done = ionic_cq_service(rxcq, budget,
306 + ionic_rx_service, NULL, NULL);
307 +
308 +- rx_fill_threshold = min_t(u16, IONIC_RX_FILL_THRESHOLD,
309 +- rxcq->num_descs / IONIC_RX_FILL_DIV);
310 +- if (rx_work_done && ionic_q_space_avail(rxcq->bound_q) >= rx_fill_threshold)
311 +- ionic_rx_fill(rxcq->bound_q);
312 ++ ionic_rx_fill(rxcq->bound_q);
313 +
314 + if (rx_work_done < budget && napi_complete_done(napi, rx_work_done)) {
315 + ionic_dim_update(qcq, 0);
316 +diff --git a/drivers/staging/mt7621-dts/gbpc1.dts b/drivers/staging/mt7621-dts/gbpc1.dts
317 +index 02fd9be5e1734..cf5d6e9a9b548 100644
318 +--- a/drivers/staging/mt7621-dts/gbpc1.dts
319 ++++ b/drivers/staging/mt7621-dts/gbpc1.dts
320 +@@ -19,7 +19,7 @@
321 + bootargs = "console=ttyS0,57600";
322 + };
323 +
324 +- palmbus: palmbus@1E000000 {
325 ++ palmbus: palmbus@1e000000 {
326 + i2c@900 {
327 + status = "okay";
328 + };
329 +diff --git a/drivers/tty/vt/vc_screen.c b/drivers/tty/vt/vc_screen.c
330 +index f566eb1839dc5..71e091f879f0e 100644
331 +--- a/drivers/tty/vt/vc_screen.c
332 ++++ b/drivers/tty/vt/vc_screen.c
333 +@@ -403,10 +403,11 @@ vcs_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)
334 + unsigned int this_round, skip = 0;
335 + int size;
336 +
337 +- ret = -ENXIO;
338 + vc = vcs_vc(inode, &viewed);
339 +- if (!vc)
340 +- goto unlock_out;
341 ++ if (!vc) {
342 ++ ret = -ENXIO;
343 ++ break;
344 ++ }
345 +
346 + /* Check whether we are above size each round,
347 + * as copy_to_user at the end of this loop
348 +diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
349 +index d23ccace5ca25..2295d69b4cd2d 100644
350 +--- a/drivers/usb/core/hub.c
351 ++++ b/drivers/usb/core/hub.c
352 +@@ -2382,9 +2382,8 @@ static int usb_enumerate_device_otg(struct usb_device *udev)
353 + * usb_enumerate_device - Read device configs/intfs/otg (usbcore-internal)
354 + * @udev: newly addressed device (in ADDRESS state)
355 + *
356 +- * This is only called by usb_new_device() and usb_authorize_device()
357 +- * and FIXME -- all comments that apply to them apply here wrt to
358 +- * environment.
359 ++ * This is only called by usb_new_device() -- all comments that apply there
360 ++ * apply here wrt to environment.
361 + *
362 + * If the device is WUSB and not authorized, we don't attempt to read
363 + * the string descriptors, as they will be errored out by the device
364 +diff --git a/drivers/usb/core/sysfs.c b/drivers/usb/core/sysfs.c
365 +index fa2e49d432ff6..60ee0469d86e7 100644
366 +--- a/drivers/usb/core/sysfs.c
367 ++++ b/drivers/usb/core/sysfs.c
368 +@@ -868,11 +868,7 @@ read_descriptors(struct file *filp, struct kobject *kobj,
369 + size_t srclen, n;
370 + int cfgno;
371 + void *src;
372 +- int retval;
373 +
374 +- retval = usb_lock_device_interruptible(udev);
375 +- if (retval < 0)
376 +- return -EINTR;
377 + /* The binary attribute begins with the device descriptor.
378 + * Following that are the raw descriptor entries for all the
379 + * configurations (config plus subsidiary descriptors).
380 +@@ -897,7 +893,6 @@ read_descriptors(struct file *filp, struct kobject *kobj,
381 + off -= srclen;
382 + }
383 + }
384 +- usb_unlock_device(udev);
385 + return count - nleft;
386 + }
387 +
388 +diff --git a/drivers/usb/dwc3/dwc3-pci.c b/drivers/usb/dwc3/dwc3-pci.c
389 +index e55d0c7db6b5d..46ef3ae9c0dd6 100644
390 +--- a/drivers/usb/dwc3/dwc3-pci.c
391 ++++ b/drivers/usb/dwc3/dwc3-pci.c
392 +@@ -45,6 +45,7 @@
393 + #define PCI_DEVICE_ID_INTEL_ADLS 0x7ae1
394 + #define PCI_DEVICE_ID_INTEL_RPL 0xa70e
395 + #define PCI_DEVICE_ID_INTEL_RPLS 0x7a61
396 ++#define PCI_DEVICE_ID_INTEL_MTLM 0x7eb1
397 + #define PCI_DEVICE_ID_INTEL_MTLP 0x7ec1
398 + #define PCI_DEVICE_ID_INTEL_MTL 0x7e7e
399 + #define PCI_DEVICE_ID_INTEL_TGL 0x9a15
400 +@@ -427,6 +428,9 @@ static const struct pci_device_id dwc3_pci_id_table[] = {
401 + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_RPLS),
402 + (kernel_ulong_t) &dwc3_pci_intel_swnode, },
403 +
404 ++ { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_MTLM),
405 ++ (kernel_ulong_t) &dwc3_pci_intel_swnode, },
406 ++
407 + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_MTLP),
408 + (kernel_ulong_t) &dwc3_pci_intel_swnode, },
409 +
410 +diff --git a/drivers/usb/gadget/function/u_serial.c b/drivers/usb/gadget/function/u_serial.c
411 +index 6f68cbeeee7c0..116d2e15e9b22 100644
412 +--- a/drivers/usb/gadget/function/u_serial.c
413 ++++ b/drivers/usb/gadget/function/u_serial.c
414 +@@ -81,6 +81,9 @@
415 + #define WRITE_BUF_SIZE 8192 /* TX only */
416 + #define GS_CONSOLE_BUF_SIZE 8192
417 +
418 ++/* Prevents race conditions while accessing gser->ioport */
419 ++static DEFINE_SPINLOCK(serial_port_lock);
420 ++
421 + /* console info */
422 + struct gs_console {
423 + struct console console;
424 +@@ -1374,8 +1377,10 @@ void gserial_disconnect(struct gserial *gser)
425 + if (!port)
426 + return;
427 +
428 ++ spin_lock_irqsave(&serial_port_lock, flags);
429 ++
430 + /* tell the TTY glue not to do I/O here any more */
431 +- spin_lock_irqsave(&port->port_lock, flags);
432 ++ spin_lock(&port->port_lock);
433 +
434 + gs_console_disconnect(port);
435 +
436 +@@ -1390,7 +1395,8 @@ void gserial_disconnect(struct gserial *gser)
437 + tty_hangup(port->port.tty);
438 + }
439 + port->suspended = false;
440 +- spin_unlock_irqrestore(&port->port_lock, flags);
441 ++ spin_unlock(&port->port_lock);
442 ++ spin_unlock_irqrestore(&serial_port_lock, flags);
443 +
444 + /* disable endpoints, aborting down any active I/O */
445 + usb_ep_disable(gser->out);
446 +@@ -1424,10 +1430,19 @@ EXPORT_SYMBOL_GPL(gserial_suspend);
447 +
448 + void gserial_resume(struct gserial *gser)
449 + {
450 +- struct gs_port *port = gser->ioport;
451 ++ struct gs_port *port;
452 + unsigned long flags;
453 +
454 +- spin_lock_irqsave(&port->port_lock, flags);
455 ++ spin_lock_irqsave(&serial_port_lock, flags);
456 ++ port = gser->ioport;
457 ++
458 ++ if (!port) {
459 ++ spin_unlock_irqrestore(&serial_port_lock, flags);
460 ++ return;
461 ++ }
462 ++
463 ++ spin_lock(&port->port_lock);
464 ++ spin_unlock(&serial_port_lock);
465 + port->suspended = false;
466 + if (!port->start_delayed) {
467 + spin_unlock_irqrestore(&port->port_lock, flags);
468 +diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
469 +index 6b69d05e2fb06..a8534065e0d6d 100644
470 +--- a/drivers/usb/serial/option.c
471 ++++ b/drivers/usb/serial/option.c
472 +@@ -402,6 +402,8 @@ static void option_instat_callback(struct urb *urb);
473 + #define LONGCHEER_VENDOR_ID 0x1c9e
474 +
475 + /* 4G Systems products */
476 ++/* This one was sold as the VW and Skoda "Carstick LTE" */
477 ++#define FOUR_G_SYSTEMS_PRODUCT_CARSTICK_LTE 0x7605
478 + /* This is the 4G XS Stick W14 a.k.a. Mobilcom Debitel Surf-Stick *
479 + * It seems to contain a Qualcomm QSC6240/6290 chipset */
480 + #define FOUR_G_SYSTEMS_PRODUCT_W14 0x9603
481 +@@ -1976,6 +1978,8 @@ static const struct usb_device_id option_ids[] = {
482 + .driver_info = RSVD(2) },
483 + { USB_DEVICE(AIRPLUS_VENDOR_ID, AIRPLUS_PRODUCT_MCD650) },
484 + { USB_DEVICE(TLAYTECH_VENDOR_ID, TLAYTECH_PRODUCT_TEU800) },
485 ++ { USB_DEVICE(LONGCHEER_VENDOR_ID, FOUR_G_SYSTEMS_PRODUCT_CARSTICK_LTE),
486 ++ .driver_info = RSVD(0) },
487 + { USB_DEVICE(LONGCHEER_VENDOR_ID, FOUR_G_SYSTEMS_PRODUCT_W14),
488 + .driver_info = NCTRL(0) | NCTRL(1) },
489 + { USB_DEVICE(LONGCHEER_VENDOR_ID, FOUR_G_SYSTEMS_PRODUCT_W100),
490 +diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c
491 +index 9250a17731bdb..692ae2e2f8cc5 100644
492 +--- a/fs/btrfs/send.c
493 ++++ b/fs/btrfs/send.c
494 +@@ -7549,10 +7549,10 @@ long btrfs_ioctl_send(struct file *mnt_file, struct btrfs_ioctl_send_args *arg)
495 + /*
496 + * Check that we don't overflow at later allocations, we request
497 + * clone_sources_count + 1 items, and compare to unsigned long inside
498 +- * access_ok.
499 ++ * access_ok. Also set an upper limit for allocation size so this can't
500 ++ * easily exhaust memory. Max number of clone sources is about 200K.
501 + */
502 +- if (arg->clone_sources_count >
503 +- ULONG_MAX / sizeof(struct clone_root) - 1) {
504 ++ if (arg->clone_sources_count > SZ_8M / sizeof(struct clone_root)) {
505 + ret = -EINVAL;
506 + goto out;
507 + }
508 +diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c
509 +index cae78f37d7093..7857b3d9d6a76 100644
510 +--- a/io_uring/io_uring.c
511 ++++ b/io_uring/io_uring.c
512 +@@ -1095,7 +1095,8 @@ static int __io_register_rsrc_update(struct io_ring_ctx *ctx, unsigned type,
513 + unsigned nr_args);
514 + static void io_clean_op(struct io_kiocb *req);
515 + static struct file *io_file_get(struct io_ring_ctx *ctx,
516 +- struct io_kiocb *req, int fd, bool fixed);
517 ++ struct io_kiocb *req, int fd, bool fixed,
518 ++ unsigned int issue_flags);
519 + static void __io_queue_sqe(struct io_kiocb *req);
520 + static void io_rsrc_put_work(struct work_struct *work);
521 +
522 +@@ -4121,7 +4122,7 @@ static int io_tee(struct io_kiocb *req, unsigned int issue_flags)
523 + return -EAGAIN;
524 +
525 + in = io_file_get(req->ctx, req, sp->splice_fd_in,
526 +- (sp->flags & SPLICE_F_FD_IN_FIXED));
527 ++ (sp->flags & SPLICE_F_FD_IN_FIXED), issue_flags);
528 + if (!in) {
529 + ret = -EBADF;
530 + goto done;
531 +@@ -4161,7 +4162,7 @@ static int io_splice(struct io_kiocb *req, unsigned int issue_flags)
532 + return -EAGAIN;
533 +
534 + in = io_file_get(req->ctx, req, sp->splice_fd_in,
535 +- (sp->flags & SPLICE_F_FD_IN_FIXED));
536 ++ (sp->flags & SPLICE_F_FD_IN_FIXED), issue_flags);
537 + if (!in) {
538 + ret = -EBADF;
539 + goto done;
540 +@@ -7047,13 +7048,16 @@ static void io_fixed_file_set(struct io_fixed_file *file_slot, struct file *file
541 + }
542 +
543 + static inline struct file *io_file_get_fixed(struct io_ring_ctx *ctx,
544 +- struct io_kiocb *req, int fd)
545 ++ struct io_kiocb *req, int fd,
546 ++ unsigned int issue_flags)
547 + {
548 +- struct file *file;
549 ++ struct file *file = NULL;
550 + unsigned long file_ptr;
551 +
552 ++ io_ring_submit_lock(ctx, !(issue_flags & IO_URING_F_NONBLOCK));
553 ++
554 + if (unlikely((unsigned int)fd >= ctx->nr_user_files))
555 +- return NULL;
556 ++ goto out;
557 + fd = array_index_nospec(fd, ctx->nr_user_files);
558 + file_ptr = io_fixed_file_slot(&ctx->file_table, fd)->file_ptr;
559 + file = (struct file *) (file_ptr & FFS_MASK);
560 +@@ -7061,6 +7065,8 @@ static inline struct file *io_file_get_fixed(struct io_ring_ctx *ctx,
561 + /* mask in overlapping REQ_F and FFS bits */
562 + req->flags |= (file_ptr << REQ_F_NOWAIT_READ_BIT);
563 + io_req_set_rsrc_node(req);
564 ++out:
565 ++ io_ring_submit_unlock(ctx, !(issue_flags & IO_URING_F_NONBLOCK));
566 + return file;
567 + }
568 +
569 +@@ -7078,10 +7084,11 @@ static struct file *io_file_get_normal(struct io_ring_ctx *ctx,
570 + }
571 +
572 + static inline struct file *io_file_get(struct io_ring_ctx *ctx,
573 +- struct io_kiocb *req, int fd, bool fixed)
574 ++ struct io_kiocb *req, int fd, bool fixed,
575 ++ unsigned int issue_flags)
576 + {
577 + if (fixed)
578 +- return io_file_get_fixed(ctx, req, fd);
579 ++ return io_file_get_fixed(ctx, req, fd, issue_flags);
580 + else
581 + return io_file_get_normal(ctx, req, fd);
582 + }
583 +@@ -7303,7 +7310,7 @@ static int io_init_req(struct io_ring_ctx *ctx, struct io_kiocb *req,
584 +
585 + if (io_op_defs[req->opcode].needs_file) {
586 + req->file = io_file_get(ctx, req, READ_ONCE(sqe->fd),
587 +- (sqe_flags & IOSQE_FIXED_FILE));
588 ++ (sqe_flags & IOSQE_FIXED_FILE), 0);
589 + if (unlikely(!req->file))
590 + ret = -EBADF;
591 + }
592 +diff --git a/net/caif/caif_socket.c b/net/caif/caif_socket.c
593 +index e12fd3cad6194..997c4ebdce6f6 100644
594 +--- a/net/caif/caif_socket.c
595 ++++ b/net/caif/caif_socket.c
596 +@@ -1020,6 +1020,7 @@ static void caif_sock_destructor(struct sock *sk)
597 + return;
598 + }
599 + sk_stream_kill_queues(&cf_sk->sk);
600 ++ WARN_ON(sk->sk_forward_alloc);
601 + caif_free_client(&cf_sk->layer);
602 + }
603 +
604 +diff --git a/net/core/filter.c b/net/core/filter.c
605 +index b2031148dd8b4..519315a1acf3a 100644
606 +--- a/net/core/filter.c
607 ++++ b/net/core/filter.c
608 +@@ -5506,7 +5506,7 @@ static int bpf_ipv4_fib_lookup(struct net *net, struct bpf_fib_lookup *params,
609 + neigh = __ipv6_neigh_lookup_noref_stub(dev, dst);
610 + }
611 +
612 +- if (!neigh)
613 ++ if (!neigh || !(neigh->nud_state & NUD_VALID))
614 + return BPF_FIB_LKUP_RET_NO_NEIGH;
615 +
616 + return bpf_fib_set_fwd_params(params, neigh, dev, mtu);
617 +@@ -5621,7 +5621,7 @@ static int bpf_ipv6_fib_lookup(struct net *net, struct bpf_fib_lookup *params,
618 + * not needed here.
619 + */
620 + neigh = __ipv6_neigh_lookup_noref_stub(dev, dst);
621 +- if (!neigh)
622 ++ if (!neigh || !(neigh->nud_state & NUD_VALID))
623 + return BPF_FIB_LKUP_RET_NO_NEIGH;
624 +
625 + return bpf_fib_set_fwd_params(params, neigh, dev, mtu);
626 +diff --git a/net/core/neighbour.c b/net/core/neighbour.c
627 +index 0e22ecb469771..95f588b2fd159 100644
628 +--- a/net/core/neighbour.c
629 ++++ b/net/core/neighbour.c
630 +@@ -241,7 +241,7 @@ static int neigh_forced_gc(struct neigh_table *tbl)
631 + (n->nud_state == NUD_NOARP) ||
632 + (tbl->is_multicast &&
633 + tbl->is_multicast(n->primary_key)) ||
634 +- time_after(tref, n->updated))
635 ++ !time_in_range(n->updated, tref, jiffies))
636 + remove = true;
637 + write_unlock(&n->lock);
638 +
639 +@@ -261,7 +261,17 @@ static int neigh_forced_gc(struct neigh_table *tbl)
640 +
641 + static void neigh_add_timer(struct neighbour *n, unsigned long when)
642 + {
643 ++ /* Use safe distance from the jiffies - LONG_MAX point while timer
644 ++ * is running in DELAY/PROBE state but still show to user space
645 ++ * large times in the past.
646 ++ */
647 ++ unsigned long mint = jiffies - (LONG_MAX - 86400 * HZ);
648 ++
649 + neigh_hold(n);
650 ++ if (!time_in_range(n->confirmed, mint, jiffies))
651 ++ n->confirmed = mint;
652 ++ if (time_before(n->used, n->confirmed))
653 ++ n->used = n->confirmed;
654 + if (unlikely(mod_timer(&n->timer, when))) {
655 + printk("NEIGH: BUG, double timer add, state is %x\n",
656 + n->nud_state);
657 +@@ -943,12 +953,14 @@ static void neigh_periodic_work(struct work_struct *work)
658 + goto next_elt;
659 + }
660 +
661 +- if (time_before(n->used, n->confirmed))
662 ++ if (time_before(n->used, n->confirmed) &&
663 ++ time_is_before_eq_jiffies(n->confirmed))
664 + n->used = n->confirmed;
665 +
666 + if (refcount_read(&n->refcnt) == 1 &&
667 + (state == NUD_FAILED ||
668 +- time_after(jiffies, n->used + NEIGH_VAR(n->parms, GC_STALETIME)))) {
669 ++ !time_in_range_open(jiffies, n->used,
670 ++ n->used + NEIGH_VAR(n->parms, GC_STALETIME)))) {
671 + *np = n->next;
672 + neigh_mark_dead(n);
673 + write_unlock(&n->lock);
674 +diff --git a/net/core/stream.c b/net/core/stream.c
675 +index d7c5413d16d57..cd60746877b1e 100644
676 +--- a/net/core/stream.c
677 ++++ b/net/core/stream.c
678 +@@ -209,7 +209,6 @@ void sk_stream_kill_queues(struct sock *sk)
679 + sk_mem_reclaim(sk);
680 +
681 + WARN_ON(sk->sk_wmem_queued);
682 +- WARN_ON(sk->sk_forward_alloc);
683 +
684 + /* It is _impossible_ for the backlog to contain anything
685 + * when we get here. All user references to this socket
686 +diff --git a/net/xfrm/xfrm_interface.c b/net/xfrm/xfrm_interface.c
687 +index 1e8b26eecb3f8..694eec6ca147e 100644
688 +--- a/net/xfrm/xfrm_interface.c
689 ++++ b/net/xfrm/xfrm_interface.c
690 +@@ -207,6 +207,52 @@ static void xfrmi_scrub_packet(struct sk_buff *skb, bool xnet)
691 + skb->mark = 0;
692 + }
693 +
694 ++static int xfrmi_input(struct sk_buff *skb, int nexthdr, __be32 spi,
695 ++ int encap_type, unsigned short family)
696 ++{
697 ++ struct sec_path *sp;
698 ++
699 ++ sp = skb_sec_path(skb);
700 ++ if (sp && (sp->len || sp->olen) &&
701 ++ !xfrm_policy_check(NULL, XFRM_POLICY_IN, skb, family))
702 ++ goto discard;
703 ++
704 ++ XFRM_SPI_SKB_CB(skb)->family = family;
705 ++ if (family == AF_INET) {
706 ++ XFRM_SPI_SKB_CB(skb)->daddroff = offsetof(struct iphdr, daddr);
707 ++ XFRM_TUNNEL_SKB_CB(skb)->tunnel.ip4 = NULL;
708 ++ } else {
709 ++ XFRM_SPI_SKB_CB(skb)->daddroff = offsetof(struct ipv6hdr, daddr);
710 ++ XFRM_TUNNEL_SKB_CB(skb)->tunnel.ip6 = NULL;
711 ++ }
712 ++
713 ++ return xfrm_input(skb, nexthdr, spi, encap_type);
714 ++discard:
715 ++ kfree_skb(skb);
716 ++ return 0;
717 ++}
718 ++
719 ++static int xfrmi4_rcv(struct sk_buff *skb)
720 ++{
721 ++ return xfrmi_input(skb, ip_hdr(skb)->protocol, 0, 0, AF_INET);
722 ++}
723 ++
724 ++static int xfrmi6_rcv(struct sk_buff *skb)
725 ++{
726 ++ return xfrmi_input(skb, skb_network_header(skb)[IP6CB(skb)->nhoff],
727 ++ 0, 0, AF_INET6);
728 ++}
729 ++
730 ++static int xfrmi4_input(struct sk_buff *skb, int nexthdr, __be32 spi, int encap_type)
731 ++{
732 ++ return xfrmi_input(skb, nexthdr, spi, encap_type, AF_INET);
733 ++}
734 ++
735 ++static int xfrmi6_input(struct sk_buff *skb, int nexthdr, __be32 spi, int encap_type)
736 ++{
737 ++ return xfrmi_input(skb, nexthdr, spi, encap_type, AF_INET6);
738 ++}
739 ++
740 + static int xfrmi_rcv_cb(struct sk_buff *skb, int err)
741 + {
742 + const struct xfrm_mode *inner_mode;
743 +@@ -774,8 +820,8 @@ static struct pernet_operations xfrmi_net_ops = {
744 + };
745 +
746 + static struct xfrm6_protocol xfrmi_esp6_protocol __read_mostly = {
747 +- .handler = xfrm6_rcv,
748 +- .input_handler = xfrm_input,
749 ++ .handler = xfrmi6_rcv,
750 ++ .input_handler = xfrmi6_input,
751 + .cb_handler = xfrmi_rcv_cb,
752 + .err_handler = xfrmi6_err,
753 + .priority = 10,
754 +@@ -825,8 +871,8 @@ static struct xfrm6_tunnel xfrmi_ip6ip_handler __read_mostly = {
755 + #endif
756 +
757 + static struct xfrm4_protocol xfrmi_esp4_protocol __read_mostly = {
758 +- .handler = xfrm4_rcv,
759 +- .input_handler = xfrm_input,
760 ++ .handler = xfrmi4_rcv,
761 ++ .input_handler = xfrmi4_input,
762 + .cb_handler = xfrmi_rcv_cb,
763 + .err_handler = xfrmi4_err,
764 + .priority = 10,
765 +diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
766 +index ba58b963f4827..0540e9f72b2fe 100644
767 +--- a/net/xfrm/xfrm_policy.c
768 ++++ b/net/xfrm/xfrm_policy.c
769 +@@ -3669,6 +3669,9 @@ int __xfrm_policy_check(struct sock *sk, int dir, struct sk_buff *skb,
770 + goto reject;
771 + }
772 +
773 ++ if (if_id)
774 ++ secpath_reset(skb);
775 ++
776 + xfrm_pols_put(pols, npols);
777 + return 1;
778 + }
779 +diff --git a/scripts/tags.sh b/scripts/tags.sh
780 +index db8ba411860a5..91413d45f0fa1 100755
781 +--- a/scripts/tags.sh
782 ++++ b/scripts/tags.sh
783 +@@ -95,10 +95,13 @@ all_sources()
784 +
785 + all_compiled_sources()
786 + {
787 +- realpath -es $([ -z "$KBUILD_ABS_SRCTREE" ] && echo --relative-to=.) \
788 +- include/generated/autoconf.h $(find $ignore -name "*.cmd" -exec \
789 +- grep -Poh '(?(?=^source_.* \K).*|(?=^ \K\S).*(?= \\))' {} \+ |
790 +- awk '!a[$0]++') | sort -u
791 ++ {
792 ++ echo include/generated/autoconf.h
793 ++ find $ignore -name "*.cmd" -exec \
794 ++ sed -n -E 's/^source_.* (.*)/\1/p; s/^ (\S.*) \\/\1/p' {} \+ |
795 ++ awk '!a[$0]++'
796 ++ } | xargs realpath -es $([ -z "$KBUILD_ABS_SRCTREE" ] && echo --relative-to=.) |
797 ++ sort -u
798 + }
799 +
800 + all_target_sources()
801 +diff --git a/sound/soc/codecs/rt715-sdca-sdw.c b/sound/soc/codecs/rt715-sdca-sdw.c
802 +index 0f4354eafef25..85abf8073c278 100644
803 +--- a/sound/soc/codecs/rt715-sdca-sdw.c
804 ++++ b/sound/soc/codecs/rt715-sdca-sdw.c
805 +@@ -167,7 +167,7 @@ static int rt715_sdca_read_prop(struct sdw_slave *slave)
806 + }
807 +
808 + /* set the timeout values */
809 +- prop->clk_stop_timeout = 20;
810 ++ prop->clk_stop_timeout = 200;
811 +
812 + return 0;
813 + }