Gentoo Archives: gentoo-commits

From: Mike Pagano <mpagano@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/linux-patches:4.4 commit in: /
Date: Tue, 11 Jan 2022 12:57:37
Message-Id: 1641905839.f5e513c5242d0ad6f1b5bd5b5cddcd5531c84c04.mpagano@gentoo
1 commit: f5e513c5242d0ad6f1b5bd5b5cddcd5531c84c04
2 Author: Mike Pagano <mpagano <AT> gentoo <DOT> org>
3 AuthorDate: Tue Jan 11 12:57:19 2022 +0000
4 Commit: Mike Pagano <mpagano <AT> gentoo <DOT> org>
5 CommitDate: Tue Jan 11 12:57:19 2022 +0000
6 URL: https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=f5e513c5
7
8 Linux patch 4.4.299
9
10 Signed-off-by: Mike Pagano <mpagano <AT> gentoo.org>
11
12 0000_README | 4 +
13 1298_linux-4.4.299.patch | 415 +++++++++++++++++++++++++++++++++++++++++++++++
14 2 files changed, 419 insertions(+)
15
16 diff --git a/0000_README b/0000_README
17 index 4f49f59c..78fe6059 100644
18 --- a/0000_README
19 +++ b/0000_README
20 @@ -1235,6 +1235,10 @@ Patch: 1297_linux-4.4.298.patch
21 From: http://www.kernel.org
22 Desc: Linux 4.4.298
23
24 +Patch: 1298_linux-4.4.299.patch
25 +From: http://www.kernel.org
26 +Desc: Linux 4.4.299
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/1298_linux-4.4.299.patch b/1298_linux-4.4.299.patch
33 new file mode 100644
34 index 00000000..85e1b6ec
35 --- /dev/null
36 +++ b/1298_linux-4.4.299.patch
37 @@ -0,0 +1,415 @@
38 +diff --git a/Makefile b/Makefile
39 +index f35474e260f1c..ad9236cc29e49 100644
40 +--- a/Makefile
41 ++++ b/Makefile
42 +@@ -1,6 +1,6 @@
43 + VERSION = 4
44 + PATCHLEVEL = 4
45 +-SUBLEVEL = 298
46 ++SUBLEVEL = 299
47 + EXTRAVERSION =
48 + NAME = Blurry Fish Butt
49 +
50 +diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
51 +index 3d62f17111cbf..c3eaaa35185b4 100644
52 +--- a/drivers/bluetooth/btusb.c
53 ++++ b/drivers/bluetooth/btusb.c
54 +@@ -2489,11 +2489,9 @@ static const struct qca_device_info qca_devices_table[] = {
55 + { 0x00000302, 28, 4, 18 }, /* Rome 3.2 */
56 + };
57 +
58 +-static int btusb_qca_send_vendor_req(struct hci_dev *hdev, u8 request,
59 ++static int btusb_qca_send_vendor_req(struct usb_device *udev, u8 request,
60 + void *data, u16 size)
61 + {
62 +- struct btusb_data *btdata = hci_get_drvdata(hdev);
63 +- struct usb_device *udev = btdata->udev;
64 + int pipe, err;
65 + u8 *buf;
66 +
67 +@@ -2508,7 +2506,7 @@ static int btusb_qca_send_vendor_req(struct hci_dev *hdev, u8 request,
68 + err = usb_control_msg(udev, pipe, request, USB_TYPE_VENDOR | USB_DIR_IN,
69 + 0, 0, buf, size, USB_CTRL_SET_TIMEOUT);
70 + if (err < 0) {
71 +- BT_ERR("%s: Failed to access otp area (%d)", hdev->name, err);
72 ++ dev_err(&udev->dev, "Failed to access otp area (%d)", err);
73 + goto done;
74 + }
75 +
76 +@@ -2664,20 +2662,38 @@ static int btusb_setup_qca_load_nvm(struct hci_dev *hdev,
77 + return err;
78 + }
79 +
80 ++/* identify the ROM version and check whether patches are needed */
81 ++static bool btusb_qca_need_patch(struct usb_device *udev)
82 ++{
83 ++ struct qca_version ver;
84 ++
85 ++ if (btusb_qca_send_vendor_req(udev, QCA_GET_TARGET_VERSION, &ver,
86 ++ sizeof(ver)) < 0)
87 ++ return false;
88 ++ /* only low ROM versions need patches */
89 ++ return !(le32_to_cpu(ver.rom_version) & ~0xffffU);
90 ++}
91 ++
92 + static int btusb_setup_qca(struct hci_dev *hdev)
93 + {
94 ++ struct btusb_data *btdata = hci_get_drvdata(hdev);
95 ++ struct usb_device *udev = btdata->udev;
96 + const struct qca_device_info *info = NULL;
97 + struct qca_version ver;
98 + u32 ver_rom;
99 + u8 status;
100 + int i, err;
101 +
102 +- err = btusb_qca_send_vendor_req(hdev, QCA_GET_TARGET_VERSION, &ver,
103 ++ err = btusb_qca_send_vendor_req(udev, QCA_GET_TARGET_VERSION, &ver,
104 + sizeof(ver));
105 + if (err < 0)
106 + return err;
107 +
108 + ver_rom = le32_to_cpu(ver.rom_version);
109 ++ /* Don't care about high ROM versions */
110 ++ if (ver_rom & ~0xffffU)
111 ++ return 0;
112 ++
113 + for (i = 0; i < ARRAY_SIZE(qca_devices_table); i++) {
114 + if (ver_rom == qca_devices_table[i].rom_version)
115 + info = &qca_devices_table[i];
116 +@@ -2688,7 +2704,7 @@ static int btusb_setup_qca(struct hci_dev *hdev)
117 + return -ENODEV;
118 + }
119 +
120 +- err = btusb_qca_send_vendor_req(hdev, QCA_CHECK_STATUS, &status,
121 ++ err = btusb_qca_send_vendor_req(udev, QCA_CHECK_STATUS, &status,
122 + sizeof(status));
123 + if (err < 0)
124 + return err;
125 +@@ -2834,7 +2850,8 @@ static int btusb_probe(struct usb_interface *intf,
126 +
127 + /* Old firmware would otherwise let ath3k driver load
128 + * patch and sysconfig files */
129 +- if (le16_to_cpu(udev->descriptor.bcdDevice) <= 0x0001)
130 ++ if (le16_to_cpu(udev->descriptor.bcdDevice) <= 0x0001 &&
131 ++ !btusb_qca_need_patch(udev))
132 + return -ENODEV;
133 + }
134 +
135 +@@ -2981,6 +2998,7 @@ static int btusb_probe(struct usb_interface *intf,
136 + }
137 +
138 + if (id->driver_info & BTUSB_ATH3012) {
139 ++ data->setup_on_usb = btusb_setup_qca;
140 + hdev->set_bdaddr = btusb_set_bdaddr_ath3012;
141 + set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks);
142 + set_bit(HCI_QUIRK_STRICT_DUPLICATE_FILTER, &hdev->quirks);
143 +diff --git a/drivers/isdn/mISDN/core.c b/drivers/isdn/mISDN/core.c
144 +index faf505462a4f5..f5a06a6fb297f 100644
145 +--- a/drivers/isdn/mISDN/core.c
146 ++++ b/drivers/isdn/mISDN/core.c
147 +@@ -390,7 +390,7 @@ mISDNInit(void)
148 + err = mISDN_inittimer(&debug);
149 + if (err)
150 + goto error2;
151 +- err = l1_init(&debug);
152 ++ err = Isdnl1_Init(&debug);
153 + if (err)
154 + goto error3;
155 + err = Isdnl2_Init(&debug);
156 +@@ -404,7 +404,7 @@ mISDNInit(void)
157 + error5:
158 + Isdnl2_cleanup();
159 + error4:
160 +- l1_cleanup();
161 ++ Isdnl1_cleanup();
162 + error3:
163 + mISDN_timer_cleanup();
164 + error2:
165 +@@ -417,7 +417,7 @@ static void mISDN_cleanup(void)
166 + {
167 + misdn_sock_cleanup();
168 + Isdnl2_cleanup();
169 +- l1_cleanup();
170 ++ Isdnl1_cleanup();
171 + mISDN_timer_cleanup();
172 + class_unregister(&mISDN_class);
173 +
174 +diff --git a/drivers/isdn/mISDN/core.h b/drivers/isdn/mISDN/core.h
175 +index 52695bb81ee7a..3c039b6ade2e1 100644
176 +--- a/drivers/isdn/mISDN/core.h
177 ++++ b/drivers/isdn/mISDN/core.h
178 +@@ -69,8 +69,8 @@ struct Bprotocol *get_Bprotocol4id(u_int);
179 + extern int mISDN_inittimer(u_int *);
180 + extern void mISDN_timer_cleanup(void);
181 +
182 +-extern int l1_init(u_int *);
183 +-extern void l1_cleanup(void);
184 ++extern int Isdnl1_Init(u_int *);
185 ++extern void Isdnl1_cleanup(void);
186 + extern int Isdnl2_Init(u_int *);
187 + extern void Isdnl2_cleanup(void);
188 +
189 +diff --git a/drivers/isdn/mISDN/layer1.c b/drivers/isdn/mISDN/layer1.c
190 +index bebc57b72138e..94d7cc58da648 100644
191 +--- a/drivers/isdn/mISDN/layer1.c
192 ++++ b/drivers/isdn/mISDN/layer1.c
193 +@@ -407,7 +407,7 @@ create_l1(struct dchannel *dch, dchannel_l1callback *dcb) {
194 + EXPORT_SYMBOL(create_l1);
195 +
196 + int
197 +-l1_init(u_int *deb)
198 ++Isdnl1_Init(u_int *deb)
199 + {
200 + debug = deb;
201 + l1fsm_s.state_count = L1S_STATE_COUNT;
202 +@@ -419,7 +419,7 @@ l1_init(u_int *deb)
203 + }
204 +
205 + void
206 +-l1_cleanup(void)
207 ++Isdnl1_cleanup(void)
208 + {
209 + mISDN_FsmFree(&l1fsm_s);
210 + }
211 +diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
212 +index 2137c4e7289e4..e58db67495d72 100644
213 +--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
214 ++++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
215 +@@ -5360,6 +5360,27 @@ int i40e_open(struct net_device *netdev)
216 + return 0;
217 + }
218 +
219 ++/**
220 ++ * i40e_netif_set_realnum_tx_rx_queues - Update number of tx/rx queues
221 ++ * @vsi: vsi structure
222 ++ *
223 ++ * This updates netdev's number of tx/rx queues
224 ++ *
225 ++ * Returns status of setting tx/rx queues
226 ++ **/
227 ++static int i40e_netif_set_realnum_tx_rx_queues(struct i40e_vsi *vsi)
228 ++{
229 ++ int ret;
230 ++
231 ++ ret = netif_set_real_num_rx_queues(vsi->netdev,
232 ++ vsi->num_queue_pairs);
233 ++ if (ret)
234 ++ return ret;
235 ++
236 ++ return netif_set_real_num_tx_queues(vsi->netdev,
237 ++ vsi->num_queue_pairs);
238 ++}
239 ++
240 + /**
241 + * i40e_vsi_open -
242 + * @vsi: the VSI to open
243 +@@ -5394,13 +5415,7 @@ int i40e_vsi_open(struct i40e_vsi *vsi)
244 + goto err_setup_rx;
245 +
246 + /* Notify the stack of the actual queue counts. */
247 +- err = netif_set_real_num_tx_queues(vsi->netdev,
248 +- vsi->num_queue_pairs);
249 +- if (err)
250 +- goto err_set_queues;
251 +-
252 +- err = netif_set_real_num_rx_queues(vsi->netdev,
253 +- vsi->num_queue_pairs);
254 ++ err = i40e_netif_set_realnum_tx_rx_queues(vsi);
255 + if (err)
256 + goto err_set_queues;
257 +
258 +@@ -9413,6 +9428,9 @@ struct i40e_vsi *i40e_vsi_setup(struct i40e_pf *pf, u8 type,
259 + case I40E_VSI_VMDQ2:
260 + case I40E_VSI_FCOE:
261 + ret = i40e_config_netdev(vsi);
262 ++ if (ret)
263 ++ goto err_netdev;
264 ++ ret = i40e_netif_set_realnum_tx_rx_queues(vsi);
265 + if (ret)
266 + goto err_netdev;
267 + ret = register_netdev(vsi->netdev);
268 +diff --git a/drivers/net/ieee802154/atusb.c b/drivers/net/ieee802154/atusb.c
269 +index 9b3ab60c35566..eb68a66538f71 100644
270 +--- a/drivers/net/ieee802154/atusb.c
271 ++++ b/drivers/net/ieee802154/atusb.c
272 +@@ -77,7 +77,9 @@ static int atusb_control_msg(struct atusb *atusb, unsigned int pipe,
273 +
274 + ret = usb_control_msg(usb_dev, pipe, request, requesttype,
275 + value, index, data, size, timeout);
276 +- if (ret < 0) {
277 ++ if (ret < size) {
278 ++ ret = ret < 0 ? ret : -ENODATA;
279 ++
280 + atusb->err = ret;
281 + dev_err(&usb_dev->dev,
282 + "atusb_control_msg: req 0x%02x val 0x%x idx 0x%x, error %d\n",
283 +@@ -567,9 +569,9 @@ static int atusb_get_and_show_build(struct atusb *atusb)
284 + if (!build)
285 + return -ENOMEM;
286 +
287 +- ret = atusb_control_msg(atusb, usb_rcvctrlpipe(usb_dev, 0),
288 +- ATUSB_BUILD, ATUSB_REQ_FROM_DEV, 0, 0,
289 +- build, ATUSB_BUILD_SIZE, 1000);
290 ++ /* We cannot call atusb_control_msg() here, since this request may read various length data */
291 ++ ret = usb_control_msg(atusb->usb_dev, usb_rcvctrlpipe(usb_dev, 0), ATUSB_BUILD,
292 ++ ATUSB_REQ_FROM_DEV, 0, 0, build, ATUSB_BUILD_SIZE, 1000);
293 + if (ret >= 0) {
294 + build[ret] = 0;
295 + dev_info(&usb_dev->dev, "Firmware: build %s\n", build);
296 +diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c
297 +index 2b57bd8f0d720..a53823720fb63 100644
298 +--- a/drivers/net/usb/rndis_host.c
299 ++++ b/drivers/net/usb/rndis_host.c
300 +@@ -615,6 +615,11 @@ static const struct usb_device_id products [] = {
301 + USB_DEVICE_AND_INTERFACE_INFO(0x1630, 0x0042,
302 + USB_CLASS_COMM, 2 /* ACM */, 0x0ff),
303 + .driver_info = (unsigned long) &rndis_poll_status_info,
304 ++}, {
305 ++ /* Hytera Communications DMR radios' "Radio to PC Network" */
306 ++ USB_VENDOR_AND_INTERFACE_INFO(0x238b,
307 ++ USB_CLASS_COMM, 2 /* ACM */, 0x0ff),
308 ++ .driver_info = (unsigned long)&rndis_info,
309 + }, {
310 + /* RNDIS is MSFT's un-official variant of CDC ACM */
311 + USB_INTERFACE_INFO(USB_CLASS_COMM, 2 /* ACM */, 0x0ff),
312 +diff --git a/drivers/power/reset/ltc2952-poweroff.c b/drivers/power/reset/ltc2952-poweroff.c
313 +index 15fed9d8f871a..ec54cff108b3c 100644
314 +--- a/drivers/power/reset/ltc2952-poweroff.c
315 ++++ b/drivers/power/reset/ltc2952-poweroff.c
316 +@@ -169,8 +169,8 @@ static void ltc2952_poweroff_kill(void)
317 +
318 + static void ltc2952_poweroff_default(struct ltc2952_poweroff *data)
319 + {
320 +- data->wde_interval = ktime_set(0, 300L*1E6L);
321 +- data->trigger_delay = ktime_set(2, 500L*1E6L);
322 ++ data->wde_interval = ktime_set(0, 300L * NSEC_PER_MSEC);
323 ++ data->trigger_delay = ktime_set(2, 500L * NSEC_PER_MSEC);
324 +
325 + hrtimer_init(&data->timer_trigger, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
326 + data->timer_trigger.function = ltc2952_poweroff_timer_trigger;
327 +diff --git a/drivers/scsi/libiscsi.c b/drivers/scsi/libiscsi.c
328 +index 0713d02cf1126..b1ef1aa4dd44b 100644
329 +--- a/drivers/scsi/libiscsi.c
330 ++++ b/drivers/scsi/libiscsi.c
331 +@@ -2994,6 +2994,8 @@ void iscsi_conn_teardown(struct iscsi_cls_conn *cls_conn)
332 + {
333 + struct iscsi_conn *conn = cls_conn->dd_data;
334 + struct iscsi_session *session = conn->session;
335 ++ char *tmp_persistent_address = conn->persistent_address;
336 ++ char *tmp_local_ipaddr = conn->local_ipaddr;
337 +
338 + del_timer_sync(&conn->transport_timer);
339 +
340 +@@ -3015,8 +3017,6 @@ void iscsi_conn_teardown(struct iscsi_cls_conn *cls_conn)
341 + spin_lock_bh(&session->frwd_lock);
342 + free_pages((unsigned long) conn->data,
343 + get_order(ISCSI_DEF_MAX_RECV_SEG_LEN));
344 +- kfree(conn->persistent_address);
345 +- kfree(conn->local_ipaddr);
346 + /* regular RX path uses back_lock */
347 + spin_lock_bh(&session->back_lock);
348 + kfifo_in(&session->cmdpool.queue, (void*)&conn->login_task,
349 +@@ -3028,6 +3028,8 @@ void iscsi_conn_teardown(struct iscsi_cls_conn *cls_conn)
350 + mutex_unlock(&session->eh_mutex);
351 +
352 + iscsi_destroy_conn(cls_conn);
353 ++ kfree(tmp_persistent_address);
354 ++ kfree(tmp_local_ipaddr);
355 + }
356 + EXPORT_SYMBOL_GPL(iscsi_conn_teardown);
357 +
358 +diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c
359 +index e4a4f82ea13f9..2e4f78d68b05c 100644
360 +--- a/fs/xfs/xfs_ioctl.c
361 ++++ b/fs/xfs/xfs_ioctl.c
362 +@@ -729,7 +729,8 @@ xfs_ioc_space(
363 + flags |= XFS_PREALLOC_CLEAR;
364 + if (bf->l_start > XFS_ISIZE(ip)) {
365 + error = xfs_alloc_file_space(ip, XFS_ISIZE(ip),
366 +- bf->l_start - XFS_ISIZE(ip), 0);
367 ++ bf->l_start - XFS_ISIZE(ip),
368 ++ XFS_BMAPI_PREALLOC);
369 + if (error)
370 + goto out_unlock;
371 + }
372 +diff --git a/lib/test_bpf.c b/lib/test_bpf.c
373 +index cf2880d2ce3f4..1a0d1e771e6cf 100644
374 +--- a/lib/test_bpf.c
375 ++++ b/lib/test_bpf.c
376 +@@ -4556,7 +4556,7 @@ static struct bpf_test tests[] = {
377 + { },
378 + INTERNAL,
379 + { 0x34 },
380 +- { { 1, 0xbef } },
381 ++ { { ETH_HLEN, 0xbef } },
382 + .fill_helper = bpf_fill_ld_abs_vlan_push_pop,
383 + },
384 + /*
385 +diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
386 +index 0d9f9d6251245..aba49b23e65f2 100644
387 +--- a/net/ipv4/udp.c
388 ++++ b/net/ipv4/udp.c
389 +@@ -2463,7 +2463,7 @@ int udp4_seq_show(struct seq_file *seq, void *v)
390 + {
391 + seq_setwidth(seq, 127);
392 + if (v == SEQ_START_TOKEN)
393 +- seq_puts(seq, " sl local_address rem_address st tx_queue "
394 ++ seq_puts(seq, " sl local_address rem_address st tx_queue "
395 + "rx_queue tr tm->when retrnsmt uid timeout "
396 + "inode ref pointer drops");
397 + else {
398 +diff --git a/net/ipv6/ip6_vti.c b/net/ipv6/ip6_vti.c
399 +index 1ff29eba7df76..13f686253ae43 100644
400 +--- a/net/ipv6/ip6_vti.c
401 ++++ b/net/ipv6/ip6_vti.c
402 +@@ -759,6 +759,8 @@ vti6_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
403 + struct net *net = dev_net(dev);
404 + struct vti6_net *ip6n = net_generic(net, vti6_net_id);
405 +
406 ++ memset(&p1, 0, sizeof(p1));
407 ++
408 + switch (cmd) {
409 + case SIOCGETTUNNEL:
410 + if (dev == ip6n->fb_tnl_dev) {
411 +diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
412 +index 7e2f0cd94e628..f6887a41f85bf 100644
413 +--- a/net/mac80211/mlme.c
414 ++++ b/net/mac80211/mlme.c
415 +@@ -4431,7 +4431,7 @@ static int ieee80211_prep_connection(struct ieee80211_sub_if_data *sdata,
416 +
417 + if (new_sta) {
418 + u32 rates = 0, basic_rates = 0;
419 +- bool have_higher_than_11mbit;
420 ++ bool have_higher_than_11mbit = false;
421 + int min_rate = INT_MAX, min_rate_index = -1;
422 + struct ieee80211_chanctx_conf *chanctx_conf;
423 + const struct cfg80211_bss_ies *ies;
424 +diff --git a/net/phonet/pep.c b/net/phonet/pep.c
425 +index 1e7945df39928..a734d47c5eb19 100644
426 +--- a/net/phonet/pep.c
427 ++++ b/net/phonet/pep.c
428 +@@ -878,6 +878,7 @@ static struct sock *pep_sock_accept(struct sock *sk, int flags, int *errp)
429 +
430 + err = pep_accept_conn(newsk, skb);
431 + if (err) {
432 ++ __sock_put(sk);
433 + sock_put(newsk);
434 + newsk = NULL;
435 + goto drop;
436 +diff --git a/net/sched/sch_qfq.c b/net/sched/sch_qfq.c
437 +index 8dabd8257b492..d466fab842611 100644
438 +--- a/net/sched/sch_qfq.c
439 ++++ b/net/sched/sch_qfq.c
440 +@@ -1479,10 +1479,8 @@ static int qfq_init_qdisc(struct Qdisc *sch, struct nlattr *opt)
441 + if (err < 0)
442 + return err;
443 +
444 +- if (qdisc_dev(sch)->tx_queue_len + 1 > QFQ_MAX_AGG_CLASSES)
445 +- max_classes = QFQ_MAX_AGG_CLASSES;
446 +- else
447 +- max_classes = qdisc_dev(sch)->tx_queue_len + 1;
448 ++ max_classes = min_t(u64, (u64)qdisc_dev(sch)->tx_queue_len + 1,
449 ++ QFQ_MAX_AGG_CLASSES);
450 + /* max_cl_shift = floor(log_2(max_classes)) */
451 + max_cl_shift = __fls(max_classes);
452 + q->max_agg_classes = 1<<max_cl_shift;