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 |
+ } |