Gentoo Archives: gentoo-commits

From: Mike Pagano <mpagano@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/linux-patches:4.19 commit in: /
Date: Tue, 20 Sep 2022 12:03:32
Message-Id: 1663675395.50884cd0bee3e7a80b7899fa36abcaaa0bb85c43.mpagano@gentoo
1 commit: 50884cd0bee3e7a80b7899fa36abcaaa0bb85c43
2 Author: Mike Pagano <mpagano <AT> gentoo <DOT> org>
3 AuthorDate: Tue Sep 20 12:03:15 2022 +0000
4 Commit: Mike Pagano <mpagano <AT> gentoo <DOT> org>
5 CommitDate: Tue Sep 20 12:03:15 2022 +0000
6 URL: https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=50884cd0
7
8 Linux patch 4.19.259
9
10 Signed-off-by: Mike Pagano <mpagano <AT> gentoo.org>
11
12 0000_README | 4 +
13 1258_linux-4.19.259.patch | 284 ++++++++++++++++++++++++++++++++++++++++++++++
14 2 files changed, 288 insertions(+)
15
16 diff --git a/0000_README b/0000_README
17 index f372055b..e00dbd74 100644
18 --- a/0000_README
19 +++ b/0000_README
20 @@ -1075,6 +1075,10 @@ Patch: 1257_linux-4.19.258.patch
21 From: https://www.kernel.org
22 Desc: Linux 4.19.258
23
24 +Patch: 1258_linux-4.19.259.patch
25 +From: https://www.kernel.org
26 +Desc: Linux 4.19.259
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/1258_linux-4.19.259.patch b/1258_linux-4.19.259.patch
33 new file mode 100644
34 index 00000000..bc8a1105
35 --- /dev/null
36 +++ b/1258_linux-4.19.259.patch
37 @@ -0,0 +1,284 @@
38 +diff --git a/Documentation/input/joydev/joystick.rst b/Documentation/input/joydev/joystick.rst
39 +index 9746fd76cc581..f38c330c028e5 100644
40 +--- a/Documentation/input/joydev/joystick.rst
41 ++++ b/Documentation/input/joydev/joystick.rst
42 +@@ -517,6 +517,7 @@ All I-Force devices are supported by the iforce module. This includes:
43 + * AVB Mag Turbo Force
44 + * AVB Top Shot Pegasus
45 + * AVB Top Shot Force Feedback Racing Wheel
46 ++* Boeder Force Feedback Wheel
47 + * Logitech WingMan Force
48 + * Logitech WingMan Force Wheel
49 + * Guillemot Race Leader Force Feedback
50 +diff --git a/Makefile b/Makefile
51 +index e35356f7a1e66..133683dfc7b89 100644
52 +--- a/Makefile
53 ++++ b/Makefile
54 +@@ -1,7 +1,7 @@
55 + # SPDX-License-Identifier: GPL-2.0
56 + VERSION = 4
57 + PATCHLEVEL = 19
58 +-SUBLEVEL = 258
59 ++SUBLEVEL = 259
60 + EXTRAVERSION =
61 + NAME = "People's Front"
62 +
63 +diff --git a/drivers/gpu/drm/msm/msm_rd.c b/drivers/gpu/drm/msm/msm_rd.c
64 +index d4cc5ceb22d01..bb65aab49c214 100644
65 +--- a/drivers/gpu/drm/msm/msm_rd.c
66 ++++ b/drivers/gpu/drm/msm/msm_rd.c
67 +@@ -199,6 +199,9 @@ static int rd_open(struct inode *inode, struct file *file)
68 + file->private_data = rd;
69 + rd->open = true;
70 +
71 ++ /* Reset fifo to clear any previously unread data: */
72 ++ rd->fifo.head = rd->fifo.tail = 0;
73 ++
74 + /* the parsing tools need to know gpu-id to know which
75 + * register database to load.
76 + */
77 +diff --git a/drivers/hid/intel-ish-hid/ishtp-hid.h b/drivers/hid/intel-ish-hid/ishtp-hid.h
78 +index f5c7eb79b7b53..fa16983007f60 100644
79 +--- a/drivers/hid/intel-ish-hid/ishtp-hid.h
80 ++++ b/drivers/hid/intel-ish-hid/ishtp-hid.h
81 +@@ -118,7 +118,7 @@ struct report_list {
82 + * @multi_packet_cnt: Count of fragmented packet count
83 + *
84 + * This structure is used to store completion flags and per client data like
85 +- * like report description, number of HID devices etc.
86 ++ * report description, number of HID devices etc.
87 + */
88 + struct ishtp_cl_data {
89 + /* completion flags */
90 +diff --git a/drivers/input/joystick/iforce/iforce-main.c b/drivers/input/joystick/iforce/iforce-main.c
91 +index 58d5cfe465263..12d96937c83f0 100644
92 +--- a/drivers/input/joystick/iforce/iforce-main.c
93 ++++ b/drivers/input/joystick/iforce/iforce-main.c
94 +@@ -64,6 +64,7 @@ static struct iforce_device iforce_device[] = {
95 + { 0x046d, 0xc291, "Logitech WingMan Formula Force", btn_wheel, abs_wheel, ff_iforce },
96 + { 0x05ef, 0x020a, "AVB Top Shot Pegasus", btn_joystick_avb, abs_avb_pegasus, ff_iforce },
97 + { 0x05ef, 0x8884, "AVB Mag Turbo Force", btn_wheel, abs_wheel, ff_iforce },
98 ++ { 0x05ef, 0x8886, "Boeder Force Feedback Wheel", btn_wheel, abs_wheel, ff_iforce },
99 + { 0x05ef, 0x8888, "AVB Top Shot Force Feedback Racing Wheel", btn_wheel, abs_wheel, ff_iforce }, //?
100 + { 0x061c, 0xc0a4, "ACT LABS Force RS", btn_wheel, abs_wheel, ff_iforce }, //?
101 + { 0x061c, 0xc084, "ACT LABS Force RS", btn_wheel, abs_wheel, ff_iforce },
102 +diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
103 +index 6fcf9646d141b..d1ca3d3f51a7a 100644
104 +--- a/drivers/net/ethernet/broadcom/tg3.c
105 ++++ b/drivers/net/ethernet/broadcom/tg3.c
106 +@@ -18207,16 +18207,20 @@ static void tg3_shutdown(struct pci_dev *pdev)
107 + struct net_device *dev = pci_get_drvdata(pdev);
108 + struct tg3 *tp = netdev_priv(dev);
109 +
110 ++ tg3_reset_task_cancel(tp);
111 ++
112 + rtnl_lock();
113 ++
114 + netif_device_detach(dev);
115 +
116 + if (netif_running(dev))
117 + dev_close(dev);
118 +
119 +- if (system_state == SYSTEM_POWER_OFF)
120 +- tg3_power_down(tp);
121 ++ tg3_power_down(tp);
122 +
123 + rtnl_unlock();
124 ++
125 ++ pci_disable_device(pdev);
126 + }
127 +
128 + /**
129 +diff --git a/drivers/net/ieee802154/cc2520.c b/drivers/net/ieee802154/cc2520.c
130 +index 0c89d3edf901c..fa3a4db517d69 100644
131 +--- a/drivers/net/ieee802154/cc2520.c
132 ++++ b/drivers/net/ieee802154/cc2520.c
133 +@@ -512,6 +512,7 @@ cc2520_tx(struct ieee802154_hw *hw, struct sk_buff *skb)
134 + goto err_tx;
135 +
136 + if (status & CC2520_STATUS_TX_UNDERFLOW) {
137 ++ rc = -EINVAL;
138 + dev_err(&priv->spi->dev, "cc2520 tx underflow exception\n");
139 + goto err_tx;
140 + }
141 +diff --git a/drivers/net/phy/dp83822.c b/drivers/net/phy/dp83822.c
142 +index cffa0cb517204..3738beb0fb40b 100644
143 +--- a/drivers/net/phy/dp83822.c
144 ++++ b/drivers/net/phy/dp83822.c
145 +@@ -203,8 +203,7 @@ static int dp83822_config_intr(struct phy_device *phydev)
146 + if (misr_status < 0)
147 + return misr_status;
148 +
149 +- misr_status |= (DP83822_RX_ERR_HF_INT_EN |
150 +- DP83822_ANEG_COMPLETE_INT_EN |
151 ++ misr_status |= (DP83822_ANEG_COMPLETE_INT_EN |
152 + DP83822_DUP_MODE_CHANGE_INT_EN |
153 + DP83822_SPEED_CHANGED_INT_EN |
154 + DP83822_LINK_STAT_INT_EN |
155 +diff --git a/drivers/perf/arm_pmu_platform.c b/drivers/perf/arm_pmu_platform.c
156 +index 199293450acfc..0ffa4f45a8391 100644
157 +--- a/drivers/perf/arm_pmu_platform.c
158 ++++ b/drivers/perf/arm_pmu_platform.c
159 +@@ -118,7 +118,7 @@ static int pmu_parse_irqs(struct arm_pmu *pmu)
160 +
161 + if (num_irqs == 1) {
162 + int irq = platform_get_irq(pdev, 0);
163 +- if (irq && irq_is_percpu_devid(irq))
164 ++ if ((irq > 0) && irq_is_percpu_devid(irq))
165 + return pmu_parse_percpu_irq(pmu, irq);
166 + }
167 +
168 +diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c
169 +index bd25c8a156d24..c73ce07b66c9a 100644
170 +--- a/drivers/platform/x86/acer-wmi.c
171 ++++ b/drivers/platform/x86/acer-wmi.c
172 +@@ -106,6 +106,7 @@ static const struct key_entry acer_wmi_keymap[] __initconst = {
173 + {KE_KEY, 0x22, {KEY_PROG2} }, /* Arcade */
174 + {KE_KEY, 0x23, {KEY_PROG3} }, /* P_Key */
175 + {KE_KEY, 0x24, {KEY_PROG4} }, /* Social networking_Key */
176 ++ {KE_KEY, 0x27, {KEY_HELP} },
177 + {KE_KEY, 0x29, {KEY_PROG3} }, /* P_Key for TM8372 */
178 + {KE_IGNORE, 0x41, {KEY_MUTE} },
179 + {KE_IGNORE, 0x42, {KEY_PREVIOUSSONG} },
180 +@@ -119,7 +120,13 @@ static const struct key_entry acer_wmi_keymap[] __initconst = {
181 + {KE_IGNORE, 0x48, {KEY_VOLUMEUP} },
182 + {KE_IGNORE, 0x49, {KEY_VOLUMEDOWN} },
183 + {KE_IGNORE, 0x4a, {KEY_VOLUMEDOWN} },
184 +- {KE_IGNORE, 0x61, {KEY_SWITCHVIDEOMODE} },
185 ++ /*
186 ++ * 0x61 is KEY_SWITCHVIDEOMODE. Usually this is a duplicate input event
187 ++ * with the "Video Bus" input device events. But sometimes it is not
188 ++ * a dup. Map it to KEY_UNKNOWN instead of using KE_IGNORE so that
189 ++ * udev/hwdb can override it on systems where it is not a dup.
190 ++ */
191 ++ {KE_KEY, 0x61, {KEY_UNKNOWN} },
192 + {KE_IGNORE, 0x62, {KEY_BRIGHTNESSUP} },
193 + {KE_IGNORE, 0x63, {KEY_BRIGHTNESSDOWN} },
194 + {KE_KEY, 0x64, {KEY_SWITCHVIDEOMODE} }, /* Display Switch */
195 +diff --git a/drivers/usb/storage/unusual_uas.h b/drivers/usb/storage/unusual_uas.h
196 +index 2f72753c3e225..0b37c8e550e7d 100644
197 +--- a/drivers/usb/storage/unusual_uas.h
198 ++++ b/drivers/usb/storage/unusual_uas.h
199 +@@ -62,6 +62,13 @@ UNUSUAL_DEV(0x0984, 0x0301, 0x0128, 0x0128,
200 + USB_SC_DEVICE, USB_PR_DEVICE, NULL,
201 + US_FL_IGNORE_UAS),
202 +
203 ++/* Reported-by: Tom Hu <huxiaoying@×××××××.cn> */
204 ++UNUSUAL_DEV(0x0b05, 0x1932, 0x0000, 0x9999,
205 ++ "ASUS",
206 ++ "External HDD",
207 ++ USB_SC_DEVICE, USB_PR_DEVICE, NULL,
208 ++ US_FL_IGNORE_UAS),
209 ++
210 + /* Reported-by: David Webb <djw@××××××.uk> */
211 + UNUSUAL_DEV(0x0bc2, 0x331a, 0x0000, 0x9999,
212 + "Seagate",
213 +diff --git a/fs/tracefs/inode.c b/fs/tracefs/inode.c
214 +index 01b0eec4140d4..4ad24d0371c8c 100644
215 +--- a/fs/tracefs/inode.c
216 ++++ b/fs/tracefs/inode.c
217 +@@ -142,6 +142,8 @@ struct tracefs_mount_opts {
218 + kuid_t uid;
219 + kgid_t gid;
220 + umode_t mode;
221 ++ /* Opt_* bitfield. */
222 ++ unsigned int opts;
223 + };
224 +
225 + enum {
226 +@@ -242,6 +244,7 @@ static int tracefs_parse_options(char *data, struct tracefs_mount_opts *opts)
227 + kgid_t gid;
228 + char *p;
229 +
230 ++ opts->opts = 0;
231 + opts->mode = TRACEFS_DEFAULT_MODE;
232 +
233 + while ((p = strsep(&data, ",")) != NULL) {
234 +@@ -276,24 +279,36 @@ static int tracefs_parse_options(char *data, struct tracefs_mount_opts *opts)
235 + * but traditionally tracefs has ignored all mount options
236 + */
237 + }
238 ++
239 ++ opts->opts |= BIT(token);
240 + }
241 +
242 + return 0;
243 + }
244 +
245 +-static int tracefs_apply_options(struct super_block *sb)
246 ++static int tracefs_apply_options(struct super_block *sb, bool remount)
247 + {
248 + struct tracefs_fs_info *fsi = sb->s_fs_info;
249 + struct inode *inode = sb->s_root->d_inode;
250 + struct tracefs_mount_opts *opts = &fsi->mount_opts;
251 +
252 +- inode->i_mode &= ~S_IALLUGO;
253 +- inode->i_mode |= opts->mode;
254 ++ /*
255 ++ * On remount, only reset mode/uid/gid if they were provided as mount
256 ++ * options.
257 ++ */
258 ++
259 ++ if (!remount || opts->opts & BIT(Opt_mode)) {
260 ++ inode->i_mode &= ~S_IALLUGO;
261 ++ inode->i_mode |= opts->mode;
262 ++ }
263 +
264 +- inode->i_uid = opts->uid;
265 ++ if (!remount || opts->opts & BIT(Opt_uid))
266 ++ inode->i_uid = opts->uid;
267 +
268 +- /* Set all the group ids to the mount option */
269 +- set_gid(sb->s_root, opts->gid);
270 ++ if (!remount || opts->opts & BIT(Opt_gid)) {
271 ++ /* Set all the group ids to the mount option */
272 ++ set_gid(sb->s_root, opts->gid);
273 ++ }
274 +
275 + return 0;
276 + }
277 +@@ -308,7 +323,7 @@ static int tracefs_remount(struct super_block *sb, int *flags, char *data)
278 + if (err)
279 + goto fail;
280 +
281 +- tracefs_apply_options(sb);
282 ++ tracefs_apply_options(sb, true);
283 +
284 + fail:
285 + return err;
286 +@@ -360,7 +375,7 @@ static int trace_fill_super(struct super_block *sb, void *data, int silent)
287 +
288 + sb->s_op = &tracefs_super_operations;
289 +
290 +- tracefs_apply_options(sb);
291 ++ tracefs_apply_options(sb, false);
292 +
293 + return 0;
294 +
295 +diff --git a/mm/mmap.c b/mm/mmap.c
296 +index 5ee3c91450de1..38541885ea450 100644
297 +--- a/mm/mmap.c
298 ++++ b/mm/mmap.c
299 +@@ -2567,6 +2567,7 @@ static void unmap_region(struct mm_struct *mm,
300 + {
301 + struct vm_area_struct *next = prev ? prev->vm_next : mm->mmap;
302 + struct mmu_gather tlb;
303 ++ struct vm_area_struct *cur_vma;
304 +
305 + lru_add_drain();
306 + tlb_gather_mmu(&tlb, mm, start, end);
307 +@@ -2581,8 +2582,12 @@ static void unmap_region(struct mm_struct *mm,
308 + * concurrent flush in this region has to be coming through the rmap,
309 + * and we synchronize against that using the rmap lock.
310 + */
311 +- if ((vma->vm_flags & (VM_PFNMAP|VM_MIXEDMAP)) != 0)
312 +- tlb_flush_mmu(&tlb);
313 ++ for (cur_vma = vma; cur_vma; cur_vma = cur_vma->vm_next) {
314 ++ if ((cur_vma->vm_flags & (VM_PFNMAP|VM_MIXEDMAP)) != 0) {
315 ++ tlb_flush_mmu(&tlb);
316 ++ break;
317 ++ }
318 ++ }
319 +
320 + free_pgtables(&tlb, vma, prev ? prev->vm_end : FIRST_USER_ADDRESS,
321 + next ? next->vm_start : USER_PGTABLES_CEILING);