Gentoo Archives: gentoo-commits

From: Mike Pagano <mpagano@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/linux-patches:4.9 commit in: /
Date: Wed, 16 Jan 2019 23:29:33
Message-Id: 1547681318.7cce7c035d2ab32c02753cef204c27081bc51a2b.mpagano@gentoo
1 commit: 7cce7c035d2ab32c02753cef204c27081bc51a2b
2 Author: Mike Pagano <mpagano <AT> gentoo <DOT> org>
3 AuthorDate: Wed Jan 16 23:28:38 2019 +0000
4 Commit: Mike Pagano <mpagano <AT> gentoo <DOT> org>
5 CommitDate: Wed Jan 16 23:28:38 2019 +0000
6 URL: https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=7cce7c03
7
8 proj/linux-patches: Linux patch 4.9.151
9
10 Signed-off-by: Mike Pagano <mpagano <AT> gentoo.org>
11
12 0000_README | 4 +
13 1150_linux-4.9.151.patch | 454 +++++++++++++++++++++++++++++++++++++++++++++++
14 2 files changed, 458 insertions(+)
15
16 diff --git a/0000_README b/0000_README
17 index 29c249f..93d0884 100644
18 --- a/0000_README
19 +++ b/0000_README
20 @@ -643,6 +643,10 @@ Patch: 1149_linux-4.9.150.patch
21 From: http://www.kernel.org
22 Desc: Linux 4.9.150
23
24 +Patch: 1150_linux-4.9.151.patch
25 +From: http://www.kernel.org
26 +Desc: Linux 4.9.151
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/1150_linux-4.9.151.patch b/1150_linux-4.9.151.patch
33 new file mode 100644
34 index 0000000..c7195cc
35 --- /dev/null
36 +++ b/1150_linux-4.9.151.patch
37 @@ -0,0 +1,454 @@
38 +diff --git a/Makefile b/Makefile
39 +index 0e7874951ac5..f1aeb98f9ace 100644
40 +--- a/Makefile
41 ++++ b/Makefile
42 +@@ -1,6 +1,6 @@
43 + VERSION = 4
44 + PATCHLEVEL = 9
45 +-SUBLEVEL = 150
46 ++SUBLEVEL = 151
47 + EXTRAVERSION =
48 + NAME = Roaring Lionus
49 +
50 +diff --git a/drivers/acpi/power.c b/drivers/acpi/power.c
51 +index 3a6c9b741b23..4f4c34892086 100644
52 +--- a/drivers/acpi/power.c
53 ++++ b/drivers/acpi/power.c
54 +@@ -131,6 +131,23 @@ void acpi_power_resources_list_free(struct list_head *list)
55 + }
56 + }
57 +
58 ++static bool acpi_power_resource_is_dup(union acpi_object *package,
59 ++ unsigned int start, unsigned int i)
60 ++{
61 ++ acpi_handle rhandle, dup;
62 ++ unsigned int j;
63 ++
64 ++ /* The caller is expected to check the package element types */
65 ++ rhandle = package->package.elements[i].reference.handle;
66 ++ for (j = start; j < i; j++) {
67 ++ dup = package->package.elements[j].reference.handle;
68 ++ if (dup == rhandle)
69 ++ return true;
70 ++ }
71 ++
72 ++ return false;
73 ++}
74 ++
75 + int acpi_extract_power_resources(union acpi_object *package, unsigned int start,
76 + struct list_head *list)
77 + {
78 +@@ -150,6 +167,11 @@ int acpi_extract_power_resources(union acpi_object *package, unsigned int start,
79 + err = -ENODEV;
80 + break;
81 + }
82 ++
83 ++ /* Some ACPI tables contain duplicate power resource references */
84 ++ if (acpi_power_resource_is_dup(package, start, i))
85 ++ continue;
86 ++
87 + err = acpi_add_power_resource(rhandle);
88 + if (err)
89 + break;
90 +diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
91 +index ef3016a467a0..8a93ca4d6840 100644
92 +--- a/drivers/block/rbd.c
93 ++++ b/drivers/block/rbd.c
94 +@@ -6346,7 +6346,6 @@ static ssize_t do_rbd_remove(struct bus_type *bus,
95 + struct list_head *tmp;
96 + int dev_id;
97 + char opt_buf[6];
98 +- bool already = false;
99 + bool force = false;
100 + int ret;
101 +
102 +@@ -6379,13 +6378,13 @@ static ssize_t do_rbd_remove(struct bus_type *bus,
103 + spin_lock_irq(&rbd_dev->lock);
104 + if (rbd_dev->open_count && !force)
105 + ret = -EBUSY;
106 +- else
107 +- already = test_and_set_bit(RBD_DEV_FLAG_REMOVING,
108 +- &rbd_dev->flags);
109 ++ else if (test_and_set_bit(RBD_DEV_FLAG_REMOVING,
110 ++ &rbd_dev->flags))
111 ++ ret = -EINPROGRESS;
112 + spin_unlock_irq(&rbd_dev->lock);
113 + }
114 + spin_unlock(&rbd_dev_list_lock);
115 +- if (ret < 0 || already)
116 ++ if (ret)
117 + return ret;
118 +
119 + if (force) {
120 +diff --git a/drivers/i2c/i2c-dev.c b/drivers/i2c/i2c-dev.c
121 +index 6f638bbc922d..00e8e675cbeb 100644
122 +--- a/drivers/i2c/i2c-dev.c
123 ++++ b/drivers/i2c/i2c-dev.c
124 +@@ -461,9 +461,15 @@ static long i2cdev_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
125 + return i2cdev_ioctl_smbus(client, arg);
126 +
127 + case I2C_RETRIES:
128 ++ if (arg > INT_MAX)
129 ++ return -EINVAL;
130 ++
131 + client->adapter->retries = arg;
132 + break;
133 + case I2C_TIMEOUT:
134 ++ if (arg > INT_MAX)
135 ++ return -EINVAL;
136 ++
137 + /* For historical reasons, user-space sets the timeout
138 + * value in units of 10 ms.
139 + */
140 +diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
141 +index 6c0bb38c4089..8d4d46f3fd16 100644
142 +--- a/drivers/usb/class/cdc-acm.c
143 ++++ b/drivers/usb/class/cdc-acm.c
144 +@@ -1828,6 +1828,13 @@ static const struct usb_device_id acm_ids[] = {
145 + .driver_info = IGNORE_DEVICE,
146 + },
147 +
148 ++ { USB_DEVICE(0x1bc7, 0x0021), /* Telit 3G ACM only composition */
149 ++ .driver_info = SEND_ZERO_PACKET,
150 ++ },
151 ++ { USB_DEVICE(0x1bc7, 0x0023), /* Telit 3G ACM + ECM composition */
152 ++ .driver_info = SEND_ZERO_PACKET,
153 ++ },
154 ++
155 + /* control interfaces without any protocol set */
156 + { USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_ACM,
157 + USB_CDC_PROTO_NONE) },
158 +diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
159 +index cf378b1ed373..733479ddf8a7 100644
160 +--- a/drivers/usb/core/quirks.c
161 ++++ b/drivers/usb/core/quirks.c
162 +@@ -240,7 +240,8 @@ static const struct usb_device_id usb_quirk_list[] = {
163 + USB_QUIRK_LINEAR_UFRAME_INTR_BINTERVAL },
164 +
165 + /* Corsair K70 RGB */
166 +- { USB_DEVICE(0x1b1c, 0x1b13), .driver_info = USB_QUIRK_DELAY_INIT },
167 ++ { USB_DEVICE(0x1b1c, 0x1b13), .driver_info = USB_QUIRK_DELAY_INIT |
168 ++ USB_QUIRK_DELAY_CTRL_MSG },
169 +
170 + /* Corsair Strafe */
171 + { USB_DEVICE(0x1b1c, 0x1b15), .driver_info = USB_QUIRK_DELAY_INIT |
172 +diff --git a/drivers/usb/storage/scsiglue.c b/drivers/usb/storage/scsiglue.c
173 +index 344ec8631481..13f2c051dbf2 100644
174 +--- a/drivers/usb/storage/scsiglue.c
175 ++++ b/drivers/usb/storage/scsiglue.c
176 +@@ -251,8 +251,12 @@ static int slave_configure(struct scsi_device *sdev)
177 + if (!(us->fflags & US_FL_NEEDS_CAP16))
178 + sdev->try_rc_10_first = 1;
179 +
180 +- /* assume SPC3 or latter devices support sense size > 18 */
181 +- if (sdev->scsi_level > SCSI_SPC_2)
182 ++ /*
183 ++ * assume SPC3 or latter devices support sense size > 18
184 ++ * unless US_FL_BAD_SENSE quirk is specified.
185 ++ */
186 ++ if (sdev->scsi_level > SCSI_SPC_2 &&
187 ++ !(us->fflags & US_FL_BAD_SENSE))
188 + us->fflags |= US_FL_SANE_SENSE;
189 +
190 + /*
191 +diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h
192 +index 0a86b3f3638e..c802aabcc58c 100644
193 +--- a/drivers/usb/storage/unusual_devs.h
194 ++++ b/drivers/usb/storage/unusual_devs.h
195 +@@ -1284,6 +1284,18 @@ UNUSUAL_DEV( 0x090c, 0x1132, 0x0000, 0xffff,
196 + USB_SC_DEVICE, USB_PR_DEVICE, NULL,
197 + US_FL_FIX_CAPACITY ),
198 +
199 ++/*
200 ++ * Reported by Icenowy Zheng <icenowy@××××.io>
201 ++ * The SMI SM3350 USB-UFS bridge controller will enter a wrong state
202 ++ * that do not process read/write command if a long sense is requested,
203 ++ * so force to use 18-byte sense.
204 ++ */
205 ++UNUSUAL_DEV( 0x090c, 0x3350, 0x0000, 0xffff,
206 ++ "SMI",
207 ++ "SM3350 UFS-to-USB-Mass-Storage bridge",
208 ++ USB_SC_DEVICE, USB_PR_DEVICE, NULL,
209 ++ US_FL_BAD_SENSE ),
210 ++
211 + /*
212 + * Reported by Paul Hartman <paul.hartman+linux@×××××.com>
213 + * This card reader returns "Illegal Request, Logical Block Address
214 +diff --git a/fs/cifs/file.c b/fs/cifs/file.c
215 +index 49eeed25f200..a3046b6523c8 100644
216 +--- a/fs/cifs/file.c
217 ++++ b/fs/cifs/file.c
218 +@@ -1118,10 +1118,10 @@ cifs_push_mandatory_locks(struct cifsFileInfo *cfile)
219 +
220 + /*
221 + * Accessing maxBuf is racy with cifs_reconnect - need to store value
222 +- * and check it for zero before using.
223 ++ * and check it before using.
224 + */
225 + max_buf = tcon->ses->server->maxBuf;
226 +- if (!max_buf) {
227 ++ if (max_buf < (sizeof(struct smb_hdr) + sizeof(LOCKING_ANDX_RANGE))) {
228 + free_xid(xid);
229 + return -EINVAL;
230 + }
231 +@@ -1456,10 +1456,10 @@ cifs_unlock_range(struct cifsFileInfo *cfile, struct file_lock *flock,
232 +
233 + /*
234 + * Accessing maxBuf is racy with cifs_reconnect - need to store value
235 +- * and check it for zero before using.
236 ++ * and check it before using.
237 + */
238 + max_buf = tcon->ses->server->maxBuf;
239 +- if (!max_buf)
240 ++ if (max_buf < (sizeof(struct smb_hdr) + sizeof(LOCKING_ANDX_RANGE)))
241 + return -EINVAL;
242 +
243 + max_num = (max_buf - sizeof(struct smb_hdr)) /
244 +diff --git a/fs/cifs/smb2file.c b/fs/cifs/smb2file.c
245 +index b2aff0c6f22c..b7885dc0d9bb 100644
246 +--- a/fs/cifs/smb2file.c
247 ++++ b/fs/cifs/smb2file.c
248 +@@ -123,10 +123,10 @@ smb2_unlock_range(struct cifsFileInfo *cfile, struct file_lock *flock,
249 +
250 + /*
251 + * Accessing maxBuf is racy with cifs_reconnect - need to store value
252 +- * and check it for zero before using.
253 ++ * and check it before using.
254 + */
255 + max_buf = tcon->ses->server->maxBuf;
256 +- if (!max_buf)
257 ++ if (max_buf < sizeof(struct smb2_lock_element))
258 + return -EINVAL;
259 +
260 + max_num = max_buf / sizeof(struct smb2_lock_element);
261 +diff --git a/fs/cifs/transport.c b/fs/cifs/transport.c
262 +index cc26d4138d70..de133eeebc8a 100644
263 +--- a/fs/cifs/transport.c
264 ++++ b/fs/cifs/transport.c
265 +@@ -301,7 +301,7 @@ uncork:
266 + if (rc < 0 && rc != -EINTR)
267 + cifs_dbg(VFS, "Error %d sending data on socket to server\n",
268 + rc);
269 +- else
270 ++ else if (rc > 0)
271 + rc = 0;
272 +
273 + return rc;
274 +diff --git a/fs/ext4/inline.c b/fs/ext4/inline.c
275 +index 1008384d5ed5..9a13f86fed62 100644
276 +--- a/fs/ext4/inline.c
277 ++++ b/fs/ext4/inline.c
278 +@@ -1859,12 +1859,12 @@ int ext4_inline_data_fiemap(struct inode *inode,
279 + physical += (char *)ext4_raw_inode(&iloc) - iloc.bh->b_data;
280 + physical += offsetof(struct ext4_inode, i_block);
281 +
282 +- if (physical)
283 +- error = fiemap_fill_next_extent(fieinfo, start, physical,
284 +- inline_len, flags);
285 + brelse(iloc.bh);
286 + out:
287 + up_read(&EXT4_I(inode)->xattr_sem);
288 ++ if (physical)
289 ++ error = fiemap_fill_next_extent(fieinfo, start, physical,
290 ++ inline_len, flags);
291 + return (error < 0 ? error : 0);
292 + }
293 +
294 +diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
295 +index f62eca8cbde0..4815be26b15f 100644
296 +--- a/fs/ext4/inode.c
297 ++++ b/fs/ext4/inode.c
298 +@@ -2698,7 +2698,8 @@ static int ext4_writepages(struct address_space *mapping,
299 + * We may need to convert up to one extent per block in
300 + * the page and we may dirty the inode.
301 + */
302 +- rsv_blocks = 1 + (PAGE_SIZE >> inode->i_blkbits);
303 ++ rsv_blocks = 1 + ext4_chunk_trans_blocks(inode,
304 ++ PAGE_SIZE >> inode->i_blkbits);
305 + }
306 +
307 + /*
308 +diff --git a/fs/ext4/super.c b/fs/ext4/super.c
309 +index 6810234b0b27..a6c7ace9cfd1 100644
310 +--- a/fs/ext4/super.c
311 ++++ b/fs/ext4/super.c
312 +@@ -4679,7 +4679,7 @@ static int ext4_commit_super(struct super_block *sb, int sync)
313 + ext4_superblock_csum_set(sb);
314 + if (sync)
315 + lock_buffer(sbh);
316 +- if (buffer_write_io_error(sbh)) {
317 ++ if (buffer_write_io_error(sbh) || !buffer_uptodate(sbh)) {
318 + /*
319 + * Oh, dear. A previous attempt to write the
320 + * superblock failed. This could happen because the
321 +diff --git a/include/linux/sunrpc/svc.h b/include/linux/sunrpc/svc.h
322 +index 102c84dcc11a..63eed9ac8fd7 100644
323 +--- a/include/linux/sunrpc/svc.h
324 ++++ b/include/linux/sunrpc/svc.h
325 +@@ -291,9 +291,12 @@ struct svc_rqst {
326 + struct svc_cacherep * rq_cacherep; /* cache info */
327 + struct task_struct *rq_task; /* service thread */
328 + spinlock_t rq_lock; /* per-request lock */
329 ++ struct net *rq_bc_net; /* pointer to backchannel's
330 ++ * net namespace
331 ++ */
332 + };
333 +
334 +-#define SVC_NET(svc_rqst) (svc_rqst->rq_xprt->xpt_net)
335 ++#define SVC_NET(rqst) (rqst->rq_xprt ? rqst->rq_xprt->xpt_net : rqst->rq_bc_net)
336 +
337 + /*
338 + * Rigorous type checking on sockaddr type conversions
339 +diff --git a/mm/slab.c b/mm/slab.c
340 +index 263dcda6897b..354a09deecff 100644
341 +--- a/mm/slab.c
342 ++++ b/mm/slab.c
343 +@@ -682,8 +682,10 @@ static struct alien_cache *__alloc_alien_cache(int node, int entries,
344 + struct alien_cache *alc = NULL;
345 +
346 + alc = kmalloc_node(memsize, gfp, node);
347 +- init_arraycache(&alc->ac, entries, batch);
348 +- spin_lock_init(&alc->lock);
349 ++ if (alc) {
350 ++ init_arraycache(&alc->ac, entries, batch);
351 ++ spin_lock_init(&alc->lock);
352 ++ }
353 + return alc;
354 + }
355 +
356 +diff --git a/mm/util.c b/mm/util.c
357 +index 8c755d05d4e6..07f467206186 100644
358 +--- a/mm/util.c
359 ++++ b/mm/util.c
360 +@@ -389,7 +389,7 @@ bool page_mapped(struct page *page)
361 + return true;
362 + if (PageHuge(page))
363 + return false;
364 +- for (i = 0; i < hpage_nr_pages(page); i++) {
365 ++ for (i = 0; i < (1 << compound_order(page)); i++) {
366 + if (atomic_read(&page[i]._mapcount) >= 0)
367 + return true;
368 + }
369 +diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c
370 +index 272c34551979..eea18a124e4f 100644
371 +--- a/net/sunrpc/svc.c
372 ++++ b/net/sunrpc/svc.c
373 +@@ -1137,6 +1137,8 @@ void svc_printk(struct svc_rqst *rqstp, const char *fmt, ...)
374 + static __printf(2,3) void svc_printk(struct svc_rqst *rqstp, const char *fmt, ...) {}
375 + #endif
376 +
377 ++extern void svc_tcp_prep_reply_hdr(struct svc_rqst *);
378 ++
379 + /*
380 + * Common routine for processing the RPC request.
381 + */
382 +@@ -1166,7 +1168,8 @@ svc_process_common(struct svc_rqst *rqstp, struct kvec *argv, struct kvec *resv)
383 + clear_bit(RQ_DROPME, &rqstp->rq_flags);
384 +
385 + /* Setup reply header */
386 +- rqstp->rq_xprt->xpt_ops->xpo_prep_reply_hdr(rqstp);
387 ++ if (rqstp->rq_prot == IPPROTO_TCP)
388 ++ svc_tcp_prep_reply_hdr(rqstp);
389 +
390 + svc_putu32(resv, rqstp->rq_xid);
391 +
392 +@@ -1312,7 +1315,7 @@ svc_process_common(struct svc_rqst *rqstp, struct kvec *argv, struct kvec *resv)
393 + return 0;
394 +
395 + close:
396 +- if (test_bit(XPT_TEMP, &rqstp->rq_xprt->xpt_flags))
397 ++ if (rqstp->rq_xprt && test_bit(XPT_TEMP, &rqstp->rq_xprt->xpt_flags))
398 + svc_close_xprt(rqstp->rq_xprt);
399 + dprintk("svc: svc_process close\n");
400 + return 0;
401 +@@ -1439,10 +1442,10 @@ bc_svc_process(struct svc_serv *serv, struct rpc_rqst *req,
402 + dprintk("svc: %s(%p)\n", __func__, req);
403 +
404 + /* Build the svc_rqst used by the common processing routine */
405 +- rqstp->rq_xprt = serv->sv_bc_xprt;
406 + rqstp->rq_xid = req->rq_xid;
407 + rqstp->rq_prot = req->rq_xprt->prot;
408 + rqstp->rq_server = serv;
409 ++ rqstp->rq_bc_net = req->rq_xprt->xprt_net;
410 +
411 + rqstp->rq_addrlen = sizeof(req->rq_xprt->addr);
412 + memcpy(&rqstp->rq_addr, &req->rq_xprt->addr, rqstp->rq_addrlen);
413 +diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c
414 +index 064f20bb845a..42ce3ed21637 100644
415 +--- a/net/sunrpc/svc_xprt.c
416 ++++ b/net/sunrpc/svc_xprt.c
417 +@@ -510,10 +510,11 @@ out:
418 + */
419 + void svc_reserve(struct svc_rqst *rqstp, int space)
420 + {
421 ++ struct svc_xprt *xprt = rqstp->rq_xprt;
422 ++
423 + space += rqstp->rq_res.head[0].iov_len;
424 +
425 +- if (space < rqstp->rq_reserved) {
426 +- struct svc_xprt *xprt = rqstp->rq_xprt;
427 ++ if (xprt && space < rqstp->rq_reserved) {
428 + atomic_sub((rqstp->rq_reserved - space), &xprt->xpt_reserved);
429 + rqstp->rq_reserved = space;
430 +
431 +diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c
432 +index 33f599cb0936..fd7fbe91955e 100644
433 +--- a/net/sunrpc/svcsock.c
434 ++++ b/net/sunrpc/svcsock.c
435 +@@ -1195,7 +1195,7 @@ static int svc_tcp_sendto(struct svc_rqst *rqstp)
436 + /*
437 + * Setup response header. TCP has a 4B record length field.
438 + */
439 +-static void svc_tcp_prep_reply_hdr(struct svc_rqst *rqstp)
440 ++void svc_tcp_prep_reply_hdr(struct svc_rqst *rqstp)
441 + {
442 + struct kvec *resv = &rqstp->rq_res.head[0];
443 +
444 +diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
445 +index 0fd31cff483e..0fc05ebdf81a 100644
446 +--- a/sound/pci/hda/patch_realtek.c
447 ++++ b/sound/pci/hda/patch_realtek.c
448 +@@ -4841,6 +4841,13 @@ static void alc280_fixup_hp_9480m(struct hda_codec *codec,
449 + }
450 + }
451 +
452 ++static void alc_fixup_disable_mic_vref(struct hda_codec *codec,
453 ++ const struct hda_fixup *fix, int action)
454 ++{
455 ++ if (action == HDA_FIXUP_ACT_PRE_PROBE)
456 ++ snd_hda_codec_set_pin_target(codec, 0x19, PIN_VREFHIZ);
457 ++}
458 ++
459 + /* for hda_fixup_thinkpad_acpi() */
460 + #include "thinkpad_helper.c"
461 +
462 +@@ -4947,6 +4954,7 @@ enum {
463 + ALC293_FIXUP_LENOVO_SPK_NOISE,
464 + ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY,
465 + ALC255_FIXUP_DELL_SPK_NOISE,
466 ++ ALC225_FIXUP_DISABLE_MIC_VREF,
467 + ALC225_FIXUP_DELL1_MIC_NO_PRESENCE,
468 + ALC295_FIXUP_DISABLE_DAC3,
469 + ALC280_FIXUP_HP_HEADSET_MIC,
470 +@@ -5605,6 +5613,12 @@ static const struct hda_fixup alc269_fixups[] = {
471 + .chained = true,
472 + .chain_id = ALC255_FIXUP_DELL1_MIC_NO_PRESENCE
473 + },
474 ++ [ALC225_FIXUP_DISABLE_MIC_VREF] = {
475 ++ .type = HDA_FIXUP_FUNC,
476 ++ .v.func = alc_fixup_disable_mic_vref,
477 ++ .chained = true,
478 ++ .chain_id = ALC269_FIXUP_DELL1_MIC_NO_PRESENCE
479 ++ },
480 + [ALC225_FIXUP_DELL1_MIC_NO_PRESENCE] = {
481 + .type = HDA_FIXUP_VERBS,
482 + .v.verbs = (const struct hda_verb[]) {
483 +@@ -5614,7 +5628,7 @@ static const struct hda_fixup alc269_fixups[] = {
484 + {}
485 + },
486 + .chained = true,
487 +- .chain_id = ALC269_FIXUP_DELL1_MIC_NO_PRESENCE
488 ++ .chain_id = ALC225_FIXUP_DISABLE_MIC_VREF
489 + },
490 + [ALC280_FIXUP_HP_HEADSET_MIC] = {
491 + .type = HDA_FIXUP_FUNC,