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: Fri, 03 Sep 2021 11:26:28
Message-Id: 1630668317.06d98eb7040ae38698eb088405971c6ad8b19c5c.mpagano@gentoo
1 commit: 06d98eb7040ae38698eb088405971c6ad8b19c5c
2 Author: Mike Pagano <mpagano <AT> gentoo <DOT> org>
3 AuthorDate: Fri Sep 3 11:25:17 2021 +0000
4 Commit: Mike Pagano <mpagano <AT> gentoo <DOT> org>
5 CommitDate: Fri Sep 3 11:25:17 2021 +0000
6 URL: https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=06d98eb7
7
8 Linux patch 4.4.283
9
10 Signed-off-by: Mike Pagano <mpagano <AT> gentoo.org>
11
12 0000_README | 4 +
13 1282_linux-4.4.283.patch | 233 +++++++++++++++++++++++++++++++++++++++++++++++
14 2 files changed, 237 insertions(+)
15
16 diff --git a/0000_README b/0000_README
17 index ffd0e18..66d01d4 100644
18 --- a/0000_README
19 +++ b/0000_README
20 @@ -1171,6 +1171,10 @@ Patch: 1281_linux-4.4.282.patch
21 From: http://www.kernel.org
22 Desc: Linux 4.4.282
23
24 +Patch: 1282_linux-4.4.283.patch
25 +From: http://www.kernel.org
26 +Desc: Linux 4.4.283
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/1282_linux-4.4.283.patch b/1282_linux-4.4.283.patch
33 new file mode 100644
34 index 0000000..0f6c067
35 --- /dev/null
36 +++ b/1282_linux-4.4.283.patch
37 @@ -0,0 +1,233 @@
38 +diff --git a/Makefile b/Makefile
39 +index 9ddec5e8fca3d..2ec9a780cfe73 100644
40 +--- a/Makefile
41 ++++ b/Makefile
42 +@@ -1,6 +1,6 @@
43 + VERSION = 4
44 + PATCHLEVEL = 4
45 +-SUBLEVEL = 282
46 ++SUBLEVEL = 283
47 + EXTRAVERSION =
48 + NAME = Blurry Fish Butt
49 +
50 +diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c
51 +index ae6b798b76bb2..40c251ef175db 100644
52 +--- a/drivers/block/floppy.c
53 ++++ b/drivers/block/floppy.c
54 +@@ -4066,22 +4066,21 @@ static int floppy_open(struct block_device *bdev, fmode_t mode)
55 + if (UFDCS->rawcmd == 1)
56 + UFDCS->rawcmd = 2;
57 +
58 +- if (mode & (FMODE_READ|FMODE_WRITE)) {
59 +- UDRS->last_checked = 0;
60 +- clear_bit(FD_OPEN_SHOULD_FAIL_BIT, &UDRS->flags);
61 +- check_disk_change(bdev);
62 +- if (test_bit(FD_DISK_CHANGED_BIT, &UDRS->flags))
63 +- goto out;
64 +- if (test_bit(FD_OPEN_SHOULD_FAIL_BIT, &UDRS->flags))
65 ++ if (!(mode & FMODE_NDELAY)) {
66 ++ if (mode & (FMODE_READ|FMODE_WRITE)) {
67 ++ UDRS->last_checked = 0;
68 ++ clear_bit(FD_OPEN_SHOULD_FAIL_BIT, &UDRS->flags);
69 ++ check_disk_change(bdev);
70 ++ if (test_bit(FD_DISK_CHANGED_BIT, &UDRS->flags))
71 ++ goto out;
72 ++ if (test_bit(FD_OPEN_SHOULD_FAIL_BIT, &UDRS->flags))
73 ++ goto out;
74 ++ }
75 ++ res = -EROFS;
76 ++ if ((mode & FMODE_WRITE) &&
77 ++ !test_bit(FD_DISK_WRITABLE_BIT, &UDRS->flags))
78 + goto out;
79 + }
80 +-
81 +- res = -EROFS;
82 +-
83 +- if ((mode & FMODE_WRITE) &&
84 +- !test_bit(FD_DISK_WRITABLE_BIT, &UDRS->flags))
85 +- goto out;
86 +-
87 + mutex_unlock(&open_lock);
88 + mutex_unlock(&floppy_mutex);
89 + return 0;
90 +diff --git a/drivers/net/can/usb/esd_usb2.c b/drivers/net/can/usb/esd_usb2.c
91 +index a8ebdcbc89356..c1b1062bbc378 100644
92 +--- a/drivers/net/can/usb/esd_usb2.c
93 ++++ b/drivers/net/can/usb/esd_usb2.c
94 +@@ -236,8 +236,8 @@ static void esd_usb2_rx_event(struct esd_usb2_net_priv *priv,
95 + if (id == ESD_EV_CAN_ERROR_EXT) {
96 + u8 state = msg->msg.rx.data[0];
97 + u8 ecc = msg->msg.rx.data[1];
98 +- u8 txerr = msg->msg.rx.data[2];
99 +- u8 rxerr = msg->msg.rx.data[3];
100 ++ u8 rxerr = msg->msg.rx.data[2];
101 ++ u8 txerr = msg->msg.rx.data[3];
102 +
103 + skb = alloc_can_err_skb(priv->netdev, &cf);
104 + if (skb == NULL) {
105 +diff --git a/drivers/net/ethernet/intel/e1000e/ich8lan.c b/drivers/net/ethernet/intel/e1000e/ich8lan.c
106 +index 485b9cc53f8b0..cd7403d09c3d4 100644
107 +--- a/drivers/net/ethernet/intel/e1000e/ich8lan.c
108 ++++ b/drivers/net/ethernet/intel/e1000e/ich8lan.c
109 +@@ -1010,6 +1010,8 @@ static s32 e1000_platform_pm_pch_lpt(struct e1000_hw *hw, bool link)
110 + {
111 + u32 reg = link << (E1000_LTRV_REQ_SHIFT + E1000_LTRV_NOSNOOP_SHIFT) |
112 + link << E1000_LTRV_REQ_SHIFT | E1000_LTRV_SEND;
113 ++ u16 max_ltr_enc_d = 0; /* maximum LTR decoded by platform */
114 ++ u16 lat_enc_d = 0; /* latency decoded */
115 + u16 lat_enc = 0; /* latency encoded */
116 +
117 + if (link) {
118 +@@ -1063,7 +1065,17 @@ static s32 e1000_platform_pm_pch_lpt(struct e1000_hw *hw, bool link)
119 + E1000_PCI_LTR_CAP_LPT + 2, &max_nosnoop);
120 + max_ltr_enc = max_t(u16, max_snoop, max_nosnoop);
121 +
122 +- if (lat_enc > max_ltr_enc)
123 ++ lat_enc_d = (lat_enc & E1000_LTRV_VALUE_MASK) *
124 ++ (1U << (E1000_LTRV_SCALE_FACTOR *
125 ++ ((lat_enc & E1000_LTRV_SCALE_MASK)
126 ++ >> E1000_LTRV_SCALE_SHIFT)));
127 ++
128 ++ max_ltr_enc_d = (max_ltr_enc & E1000_LTRV_VALUE_MASK) *
129 ++ (1U << (E1000_LTRV_SCALE_FACTOR *
130 ++ ((max_ltr_enc & E1000_LTRV_SCALE_MASK)
131 ++ >> E1000_LTRV_SCALE_SHIFT)));
132 ++
133 ++ if (lat_enc_d > max_ltr_enc_d)
134 + lat_enc = max_ltr_enc;
135 + }
136 +
137 +diff --git a/drivers/net/ethernet/intel/e1000e/ich8lan.h b/drivers/net/ethernet/intel/e1000e/ich8lan.h
138 +index 34c551e322ebd..3a16c457c8dd2 100644
139 +--- a/drivers/net/ethernet/intel/e1000e/ich8lan.h
140 ++++ b/drivers/net/ethernet/intel/e1000e/ich8lan.h
141 +@@ -284,8 +284,11 @@
142 +
143 + /* Latency Tolerance Reporting */
144 + #define E1000_LTRV 0x000F8
145 ++#define E1000_LTRV_VALUE_MASK 0x000003FF
146 + #define E1000_LTRV_SCALE_MAX 5
147 + #define E1000_LTRV_SCALE_FACTOR 5
148 ++#define E1000_LTRV_SCALE_SHIFT 10
149 ++#define E1000_LTRV_SCALE_MASK 0x00001C00
150 + #define E1000_LTRV_REQ_SHIFT 15
151 + #define E1000_LTRV_NOSNOOP_SHIFT 16
152 + #define E1000_LTRV_SEND (1 << 30)
153 +diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
154 +index 575da945f151d..d6b25aba40045 100644
155 +--- a/drivers/net/ethernet/marvell/mvneta.c
156 ++++ b/drivers/net/ethernet/marvell/mvneta.c
157 +@@ -90,7 +90,7 @@
158 + #define MVNETA_DESC_SWAP BIT(6)
159 + #define MVNETA_TX_BRST_SZ_MASK(burst) ((burst) << 22)
160 + #define MVNETA_PORT_STATUS 0x2444
161 +-#define MVNETA_TX_IN_PRGRS BIT(1)
162 ++#define MVNETA_TX_IN_PRGRS BIT(0)
163 + #define MVNETA_TX_FIFO_EMPTY BIT(8)
164 + #define MVNETA_RX_MIN_FRAME_SIZE 0x247c
165 + #define MVNETA_SERDES_CFG 0x24A0
166 +diff --git a/drivers/tty/vt/vt_ioctl.c b/drivers/tty/vt/vt_ioctl.c
167 +index e1a8f41212063..97475bb46f84c 100644
168 +--- a/drivers/tty/vt/vt_ioctl.c
169 ++++ b/drivers/tty/vt/vt_ioctl.c
170 +@@ -487,16 +487,19 @@ int vt_ioctl(struct tty_struct *tty,
171 + ret = -EINVAL;
172 + goto out;
173 + }
174 +- /* FIXME: this needs the console lock extending */
175 +- if (vc->vc_mode == (unsigned char) arg)
176 ++ console_lock();
177 ++ if (vc->vc_mode == (unsigned char) arg) {
178 ++ console_unlock();
179 + break;
180 ++ }
181 + vc->vc_mode = (unsigned char) arg;
182 +- if (console != fg_console)
183 ++ if (console != fg_console) {
184 ++ console_unlock();
185 + break;
186 ++ }
187 + /*
188 + * explicitly blank/unblank the screen if switching modes
189 + */
190 +- console_lock();
191 + if (arg == KD_TEXT)
192 + do_unblank_screen(1);
193 + else
194 +diff --git a/drivers/usb/serial/ch341.c b/drivers/usb/serial/ch341.c
195 +index 3f3535d3c99ee..2cff9c40f28aa 100644
196 +--- a/drivers/usb/serial/ch341.c
197 ++++ b/drivers/usb/serial/ch341.c
198 +@@ -585,7 +585,6 @@ static struct usb_serial_driver ch341_device = {
199 + .owner = THIS_MODULE,
200 + .name = "ch341-uart",
201 + },
202 +- .bulk_in_size = 512,
203 + .id_table = id_table,
204 + .num_ports = 1,
205 + .open = ch341_open,
206 +diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
207 +index b3336a7c09e0b..02ded56bcbc6b 100644
208 +--- a/drivers/usb/serial/option.c
209 ++++ b/drivers/usb/serial/option.c
210 +@@ -2058,6 +2058,8 @@ static const struct usb_device_id option_ids[] = {
211 + .driver_info = RSVD(4) | RSVD(5) },
212 + { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0105, 0xff), /* Fibocom NL678 series */
213 + .driver_info = RSVD(6) },
214 ++ { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x010b, 0xff, 0xff, 0x30) }, /* Fibocom FG150 Diag */
215 ++ { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x010b, 0xff, 0, 0) }, /* Fibocom FG150 AT */
216 + { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a0, 0xff) }, /* Fibocom NL668-AM/NL652-EU (laptop MBIM) */
217 + { USB_DEVICE_INTERFACE_CLASS(0x2df3, 0x9d03, 0xff) }, /* LongSung M5710 */
218 + { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1404, 0xff) }, /* GosunCn GM500 RNDIS */
219 +diff --git a/drivers/vhost/vringh.c b/drivers/vhost/vringh.c
220 +index d56736655dec4..da47542496cc3 100644
221 +--- a/drivers/vhost/vringh.c
222 ++++ b/drivers/vhost/vringh.c
223 +@@ -329,7 +329,7 @@ __vringh_iov(struct vringh *vrh, u16 i,
224 + iov = wiov;
225 + else {
226 + iov = riov;
227 +- if (unlikely(wiov && wiov->i)) {
228 ++ if (unlikely(wiov && wiov->used)) {
229 + vringh_bad("Readable desc %p after writable",
230 + &descs[i]);
231 + err = -EINVAL;
232 +diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c
233 +index 348be7368f490..afb84c27110d8 100644
234 +--- a/drivers/video/fbdev/core/fbmem.c
235 ++++ b/drivers/video/fbdev/core/fbmem.c
236 +@@ -1001,6 +1001,10 @@ fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var)
237 + goto done;
238 + }
239 +
240 ++ /* bitfill_aligned() assumes that it's at least 8x8 */
241 ++ if (var->xres < 8 || var->yres < 8)
242 ++ return -EINVAL;
243 ++
244 + ret = info->fbops->fb_check_var(var, info);
245 +
246 + if (ret)
247 +diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
248 +index 6b3565feddb21..b15c24c4d91fc 100644
249 +--- a/drivers/virtio/virtio_ring.c
250 ++++ b/drivers/virtio/virtio_ring.c
251 +@@ -840,7 +840,7 @@ bool virtqueue_is_broken(struct virtqueue *_vq)
252 + {
253 + struct vring_virtqueue *vq = to_vvq(_vq);
254 +
255 +- return vq->broken;
256 ++ return READ_ONCE(vq->broken);
257 + }
258 + EXPORT_SYMBOL_GPL(virtqueue_is_broken);
259 +
260 +@@ -854,7 +854,9 @@ void virtio_break_device(struct virtio_device *dev)
261 +
262 + list_for_each_entry(_vq, &dev->vqs, list) {
263 + struct vring_virtqueue *vq = to_vvq(_vq);
264 +- vq->broken = true;
265 ++
266 ++ /* Pairs with READ_ONCE() in virtqueue_is_broken(). */
267 ++ WRITE_ONCE(vq->broken, true);
268 + }
269 + }
270 + EXPORT_SYMBOL_GPL(virtio_break_device);