1 |
commit: 1f9b6e4fcf4c1ec883981ad2404d0361ea65643d |
2 |
Author: Mike Pagano <mpagano <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sun Jul 31 16:01:43 2016 +0000 |
4 |
Commit: Mike Pagano <mpagano <AT> gentoo <DOT> org> |
5 |
CommitDate: Sun Jul 31 16:01:43 2016 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=1f9b6e4f |
7 |
|
8 |
Linux kernel 4.1.29 |
9 |
|
10 |
0000_README | 4 + |
11 |
1028_linux-4.1.29.patch | 456 ++++++++++++++++++++++++++++++++++++++++++++++++ |
12 |
2 files changed, 460 insertions(+) |
13 |
|
14 |
diff --git a/0000_README b/0000_README |
15 |
index 88ef9f3..a9101d3 100644 |
16 |
--- a/0000_README |
17 |
+++ b/0000_README |
18 |
@@ -155,6 +155,10 @@ Patch: 1027_linux-4.1.28.patch |
19 |
From: http://www.kernel.org |
20 |
Desc: Linux 4.1.28 |
21 |
|
22 |
+Patch: 1028_linux-4.1.29.patch |
23 |
+From: http://www.kernel.org |
24 |
+Desc: Linux 4.1.29 |
25 |
+ |
26 |
Patch: 1500_XATTR_USER_PREFIX.patch |
27 |
From: https://bugs.gentoo.org/show_bug.cgi?id=470644 |
28 |
Desc: Support for namespace user.pax.* on tmpfs. |
29 |
|
30 |
diff --git a/1028_linux-4.1.29.patch b/1028_linux-4.1.29.patch |
31 |
new file mode 100644 |
32 |
index 0000000..998db23 |
33 |
--- /dev/null |
34 |
+++ b/1028_linux-4.1.29.patch |
35 |
@@ -0,0 +1,456 @@ |
36 |
+diff --git a/Makefile b/Makefile |
37 |
+index 241237cd4ca6..76fa21fa16b8 100644 |
38 |
+--- a/Makefile |
39 |
++++ b/Makefile |
40 |
+@@ -1,6 +1,6 @@ |
41 |
+ VERSION = 4 |
42 |
+ PATCHLEVEL = 1 |
43 |
+-SUBLEVEL = 28 |
44 |
++SUBLEVEL = 29 |
45 |
+ EXTRAVERSION = |
46 |
+ NAME = Series 4800 |
47 |
+ |
48 |
+diff --git a/arch/mips/include/asm/pgtable.h b/arch/mips/include/asm/pgtable.h |
49 |
+index f33206e27d8d..2b697db33ca6 100644 |
50 |
+--- a/arch/mips/include/asm/pgtable.h |
51 |
++++ b/arch/mips/include/asm/pgtable.h |
52 |
+@@ -603,7 +603,8 @@ static inline struct page *pmd_page(pmd_t pmd) |
53 |
+ |
54 |
+ static inline pmd_t pmd_modify(pmd_t pmd, pgprot_t newprot) |
55 |
+ { |
56 |
+- pmd_val(pmd) = (pmd_val(pmd) & _PAGE_CHG_MASK) | pgprot_val(newprot); |
57 |
++ pmd_val(pmd) = (pmd_val(pmd) & (_PAGE_CHG_MASK | _PAGE_HUGE)) | |
58 |
++ (pgprot_val(newprot) & ~_PAGE_CHG_MASK); |
59 |
+ return pmd; |
60 |
+ } |
61 |
+ |
62 |
+diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c |
63 |
+index 28dbbb0d12c4..9b19d96e9562 100644 |
64 |
+--- a/arch/powerpc/kernel/prom.c |
65 |
++++ b/arch/powerpc/kernel/prom.c |
66 |
+@@ -166,8 +166,7 @@ static struct ibm_pa_feature { |
67 |
+ * we don't want to turn on TM here, so we use the *_COMP versions |
68 |
+ * which are 0 if the kernel doesn't support TM. |
69 |
+ */ |
70 |
+- {CPU_FTR_TM_COMP, 0, 0, |
71 |
+- PPC_FEATURE2_HTM_COMP|PPC_FEATURE2_HTM_NOSC_COMP, 22, 0, 0}, |
72 |
++ {CPU_FTR_TM_COMP, 0, 0, PPC_FEATURE2_HTM_COMP, 22, 0, 0}, |
73 |
+ }; |
74 |
+ |
75 |
+ static void __init scan_features(unsigned long node, const unsigned char *ftrs, |
76 |
+diff --git a/arch/x86/kernel/amd_nb.c b/arch/x86/kernel/amd_nb.c |
77 |
+index 5caed1dd7ccf..80bb8c0349a7 100644 |
78 |
+--- a/arch/x86/kernel/amd_nb.c |
79 |
++++ b/arch/x86/kernel/amd_nb.c |
80 |
+@@ -71,8 +71,8 @@ int amd_cache_northbridges(void) |
81 |
+ while ((misc = next_northbridge(misc, amd_nb_misc_ids)) != NULL) |
82 |
+ i++; |
83 |
+ |
84 |
+- if (i == 0) |
85 |
+- return 0; |
86 |
++ if (!i) |
87 |
++ return -ENODEV; |
88 |
+ |
89 |
+ nb = kzalloc(i * sizeof(struct amd_northbridge), GFP_KERNEL); |
90 |
+ if (!nb) |
91 |
+diff --git a/block/ioprio.c b/block/ioprio.c |
92 |
+index 31666c92b46a..563435684c3c 100644 |
93 |
+--- a/block/ioprio.c |
94 |
++++ b/block/ioprio.c |
95 |
+@@ -149,8 +149,10 @@ static int get_task_ioprio(struct task_struct *p) |
96 |
+ if (ret) |
97 |
+ goto out; |
98 |
+ ret = IOPRIO_PRIO_VALUE(IOPRIO_CLASS_NONE, IOPRIO_NORM); |
99 |
++ task_lock(p); |
100 |
+ if (p->io_context) |
101 |
+ ret = p->io_context->ioprio; |
102 |
++ task_unlock(p); |
103 |
+ out: |
104 |
+ return ret; |
105 |
+ } |
106 |
+diff --git a/drivers/gpio/gpio-sch.c b/drivers/gpio/gpio-sch.c |
107 |
+index b72906f5b999..2d4766bd61c3 100644 |
108 |
+--- a/drivers/gpio/gpio-sch.c |
109 |
++++ b/drivers/gpio/gpio-sch.c |
110 |
+@@ -63,9 +63,8 @@ static unsigned sch_gpio_bit(struct sch_gpio *sch, unsigned gpio) |
111 |
+ return gpio % 8; |
112 |
+ } |
113 |
+ |
114 |
+-static int sch_gpio_reg_get(struct gpio_chip *gc, unsigned gpio, unsigned reg) |
115 |
++static int sch_gpio_reg_get(struct sch_gpio *sch, unsigned gpio, unsigned reg) |
116 |
+ { |
117 |
+- struct sch_gpio *sch = to_sch_gpio(gc); |
118 |
+ unsigned short offset, bit; |
119 |
+ u8 reg_val; |
120 |
+ |
121 |
+@@ -77,10 +76,9 @@ static int sch_gpio_reg_get(struct gpio_chip *gc, unsigned gpio, unsigned reg) |
122 |
+ return reg_val; |
123 |
+ } |
124 |
+ |
125 |
+-static void sch_gpio_reg_set(struct gpio_chip *gc, unsigned gpio, unsigned reg, |
126 |
++static void sch_gpio_reg_set(struct sch_gpio *sch, unsigned gpio, unsigned reg, |
127 |
+ int val) |
128 |
+ { |
129 |
+- struct sch_gpio *sch = to_sch_gpio(gc); |
130 |
+ unsigned short offset, bit; |
131 |
+ u8 reg_val; |
132 |
+ |
133 |
+@@ -100,14 +98,15 @@ static int sch_gpio_direction_in(struct gpio_chip *gc, unsigned gpio_num) |
134 |
+ struct sch_gpio *sch = to_sch_gpio(gc); |
135 |
+ |
136 |
+ spin_lock(&sch->lock); |
137 |
+- sch_gpio_reg_set(gc, gpio_num, GIO, 1); |
138 |
++ sch_gpio_reg_set(sch, gpio_num, GIO, 1); |
139 |
+ spin_unlock(&sch->lock); |
140 |
+ return 0; |
141 |
+ } |
142 |
+ |
143 |
+ static int sch_gpio_get(struct gpio_chip *gc, unsigned gpio_num) |
144 |
+ { |
145 |
+- return sch_gpio_reg_get(gc, gpio_num, GLV); |
146 |
++ struct sch_gpio *sch = to_sch_gpio(gc); |
147 |
++ return sch_gpio_reg_get(sch, gpio_num, GLV); |
148 |
+ } |
149 |
+ |
150 |
+ static void sch_gpio_set(struct gpio_chip *gc, unsigned gpio_num, int val) |
151 |
+@@ -115,7 +114,7 @@ static void sch_gpio_set(struct gpio_chip *gc, unsigned gpio_num, int val) |
152 |
+ struct sch_gpio *sch = to_sch_gpio(gc); |
153 |
+ |
154 |
+ spin_lock(&sch->lock); |
155 |
+- sch_gpio_reg_set(gc, gpio_num, GLV, val); |
156 |
++ sch_gpio_reg_set(sch, gpio_num, GLV, val); |
157 |
+ spin_unlock(&sch->lock); |
158 |
+ } |
159 |
+ |
160 |
+@@ -125,7 +124,7 @@ static int sch_gpio_direction_out(struct gpio_chip *gc, unsigned gpio_num, |
161 |
+ struct sch_gpio *sch = to_sch_gpio(gc); |
162 |
+ |
163 |
+ spin_lock(&sch->lock); |
164 |
+- sch_gpio_reg_set(gc, gpio_num, GIO, 0); |
165 |
++ sch_gpio_reg_set(sch, gpio_num, GIO, 0); |
166 |
+ spin_unlock(&sch->lock); |
167 |
+ |
168 |
+ /* |
169 |
+@@ -184,13 +183,13 @@ static int sch_gpio_probe(struct platform_device *pdev) |
170 |
+ * GPIO7 is configured by the CMC as SLPIOVR |
171 |
+ * Enable GPIO[9:8] core powered gpios explicitly |
172 |
+ */ |
173 |
+- sch_gpio_reg_set(&sch->chip, 8, GEN, 1); |
174 |
+- sch_gpio_reg_set(&sch->chip, 9, GEN, 1); |
175 |
++ sch_gpio_reg_set(sch, 8, GEN, 1); |
176 |
++ sch_gpio_reg_set(sch, 9, GEN, 1); |
177 |
+ /* |
178 |
+ * SUS_GPIO[2:0] enabled by default |
179 |
+ * Enable SUS_GPIO3 resume powered gpio explicitly |
180 |
+ */ |
181 |
+- sch_gpio_reg_set(&sch->chip, 13, GEN, 1); |
182 |
++ sch_gpio_reg_set(sch, 13, GEN, 1); |
183 |
+ break; |
184 |
+ |
185 |
+ case PCI_DEVICE_ID_INTEL_ITC_LPC: |
186 |
+diff --git a/drivers/s390/net/qeth_l2_main.c b/drivers/s390/net/qeth_l2_main.c |
187 |
+index 0ea0869120cf..187bea44d123 100644 |
188 |
+--- a/drivers/s390/net/qeth_l2_main.c |
189 |
++++ b/drivers/s390/net/qeth_l2_main.c |
190 |
+@@ -902,6 +902,7 @@ static void qeth_l2_remove_device(struct ccwgroup_device *cgdev) |
191 |
+ qeth_l2_set_offline(cgdev); |
192 |
+ |
193 |
+ if (card->dev) { |
194 |
++ netif_napi_del(&card->napi); |
195 |
+ unregister_netdev(card->dev); |
196 |
+ card->dev = NULL; |
197 |
+ } |
198 |
+diff --git a/drivers/s390/net/qeth_l3_main.c b/drivers/s390/net/qeth_l3_main.c |
199 |
+index 04e42c649134..3f94738feb45 100644 |
200 |
+--- a/drivers/s390/net/qeth_l3_main.c |
201 |
++++ b/drivers/s390/net/qeth_l3_main.c |
202 |
+@@ -3362,6 +3362,7 @@ static void qeth_l3_remove_device(struct ccwgroup_device *cgdev) |
203 |
+ qeth_l3_set_offline(cgdev); |
204 |
+ |
205 |
+ if (card->dev) { |
206 |
++ netif_napi_del(&card->napi); |
207 |
+ unregister_netdev(card->dev); |
208 |
+ card->dev = NULL; |
209 |
+ } |
210 |
+diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c |
211 |
+index cccab6188328..cd52c070701b 100644 |
212 |
+--- a/drivers/scsi/ipr.c |
213 |
++++ b/drivers/scsi/ipr.c |
214 |
+@@ -9966,6 +9966,7 @@ static int ipr_probe_ioa(struct pci_dev *pdev, |
215 |
+ ioa_cfg->intr_flag = IPR_USE_MSI; |
216 |
+ else { |
217 |
+ ioa_cfg->intr_flag = IPR_USE_LSI; |
218 |
++ ioa_cfg->clear_isr = 1; |
219 |
+ ioa_cfg->nvectors = 1; |
220 |
+ dev_info(&pdev->dev, "Cannot enable MSI.\n"); |
221 |
+ } |
222 |
+diff --git a/drivers/xen/xen-acpi-processor.c b/drivers/xen/xen-acpi-processor.c |
223 |
+index 59fc190f1e92..b96e207bf250 100644 |
224 |
+--- a/drivers/xen/xen-acpi-processor.c |
225 |
++++ b/drivers/xen/xen-acpi-processor.c |
226 |
+@@ -423,36 +423,7 @@ upload: |
227 |
+ |
228 |
+ return 0; |
229 |
+ } |
230 |
+-static int __init check_prereq(void) |
231 |
+-{ |
232 |
+- struct cpuinfo_x86 *c = &cpu_data(0); |
233 |
+- |
234 |
+- if (!xen_initial_domain()) |
235 |
+- return -ENODEV; |
236 |
+- |
237 |
+- if (!acpi_gbl_FADT.smi_command) |
238 |
+- return -ENODEV; |
239 |
+- |
240 |
+- if (c->x86_vendor == X86_VENDOR_INTEL) { |
241 |
+- if (!cpu_has(c, X86_FEATURE_EST)) |
242 |
+- return -ENODEV; |
243 |
+ |
244 |
+- return 0; |
245 |
+- } |
246 |
+- if (c->x86_vendor == X86_VENDOR_AMD) { |
247 |
+- /* Copied from powernow-k8.h, can't include ../cpufreq/powernow |
248 |
+- * as we get compile warnings for the static functions. |
249 |
+- */ |
250 |
+-#define CPUID_FREQ_VOLT_CAPABILITIES 0x80000007 |
251 |
+-#define USE_HW_PSTATE 0x00000080 |
252 |
+- u32 eax, ebx, ecx, edx; |
253 |
+- cpuid(CPUID_FREQ_VOLT_CAPABILITIES, &eax, &ebx, &ecx, &edx); |
254 |
+- if ((edx & USE_HW_PSTATE) != USE_HW_PSTATE) |
255 |
+- return -ENODEV; |
256 |
+- return 0; |
257 |
+- } |
258 |
+- return -ENODEV; |
259 |
+-} |
260 |
+ /* acpi_perf_data is a pointer to percpu data. */ |
261 |
+ static struct acpi_processor_performance __percpu *acpi_perf_data; |
262 |
+ |
263 |
+@@ -509,10 +480,10 @@ struct notifier_block xen_acpi_processor_resume_nb = { |
264 |
+ static int __init xen_acpi_processor_init(void) |
265 |
+ { |
266 |
+ unsigned int i; |
267 |
+- int rc = check_prereq(); |
268 |
++ int rc; |
269 |
+ |
270 |
+- if (rc) |
271 |
+- return rc; |
272 |
++ if (!xen_initial_domain()) |
273 |
++ return -ENODEV; |
274 |
+ |
275 |
+ nr_acpi_bits = get_max_acpi_id() + 1; |
276 |
+ acpi_ids_done = kcalloc(BITS_TO_LONGS(nr_acpi_bits), sizeof(unsigned long), GFP_KERNEL); |
277 |
+diff --git a/drivers/xen/xenbus/xenbus_dev_frontend.c b/drivers/xen/xenbus/xenbus_dev_frontend.c |
278 |
+index 9433e46518c8..531e76474983 100644 |
279 |
+--- a/drivers/xen/xenbus/xenbus_dev_frontend.c |
280 |
++++ b/drivers/xen/xenbus/xenbus_dev_frontend.c |
281 |
+@@ -316,11 +316,18 @@ static int xenbus_write_transaction(unsigned msg_type, |
282 |
+ rc = -ENOMEM; |
283 |
+ goto out; |
284 |
+ } |
285 |
++ } else { |
286 |
++ list_for_each_entry(trans, &u->transactions, list) |
287 |
++ if (trans->handle.id == u->u.msg.tx_id) |
288 |
++ break; |
289 |
++ if (&trans->list == &u->transactions) |
290 |
++ return -ESRCH; |
291 |
+ } |
292 |
+ |
293 |
+ reply = xenbus_dev_request_and_reply(&u->u.msg); |
294 |
+ if (IS_ERR(reply)) { |
295 |
+- kfree(trans); |
296 |
++ if (msg_type == XS_TRANSACTION_START) |
297 |
++ kfree(trans); |
298 |
+ rc = PTR_ERR(reply); |
299 |
+ goto out; |
300 |
+ } |
301 |
+@@ -333,12 +340,7 @@ static int xenbus_write_transaction(unsigned msg_type, |
302 |
+ list_add(&trans->list, &u->transactions); |
303 |
+ } |
304 |
+ } else if (u->u.msg.type == XS_TRANSACTION_END) { |
305 |
+- list_for_each_entry(trans, &u->transactions, list) |
306 |
+- if (trans->handle.id == u->u.msg.tx_id) |
307 |
+- break; |
308 |
+- BUG_ON(&trans->list == &u->transactions); |
309 |
+ list_del(&trans->list); |
310 |
+- |
311 |
+ kfree(trans); |
312 |
+ } |
313 |
+ |
314 |
+diff --git a/drivers/xen/xenbus/xenbus_xs.c b/drivers/xen/xenbus/xenbus_xs.c |
315 |
+index ba804f3d8278..ce65591b4168 100644 |
316 |
+--- a/drivers/xen/xenbus/xenbus_xs.c |
317 |
++++ b/drivers/xen/xenbus/xenbus_xs.c |
318 |
+@@ -250,9 +250,6 @@ void *xenbus_dev_request_and_reply(struct xsd_sockmsg *msg) |
319 |
+ |
320 |
+ mutex_unlock(&xs_state.request_mutex); |
321 |
+ |
322 |
+- if (IS_ERR(ret)) |
323 |
+- return ret; |
324 |
+- |
325 |
+ if ((msg->type == XS_TRANSACTION_END) || |
326 |
+ ((req_msg.type == XS_TRANSACTION_START) && |
327 |
+ (msg->type == XS_ERROR))) |
328 |
+diff --git a/fs/ecryptfs/file.c b/fs/ecryptfs/file.c |
329 |
+index 72afcc629d7b..f56a4216d081 100644 |
330 |
+--- a/fs/ecryptfs/file.c |
331 |
++++ b/fs/ecryptfs/file.c |
332 |
+@@ -170,6 +170,19 @@ out: |
333 |
+ return rc; |
334 |
+ } |
335 |
+ |
336 |
++static int ecryptfs_mmap(struct file *file, struct vm_area_struct *vma) |
337 |
++{ |
338 |
++ struct file *lower_file = ecryptfs_file_to_lower(file); |
339 |
++ /* |
340 |
++ * Don't allow mmap on top of file systems that don't support it |
341 |
++ * natively. If FILESYSTEM_MAX_STACK_DEPTH > 2 or ecryptfs |
342 |
++ * allows recursive mounting, this will need to be extended. |
343 |
++ */ |
344 |
++ if (!lower_file->f_op->mmap) |
345 |
++ return -ENODEV; |
346 |
++ return generic_file_mmap(file, vma); |
347 |
++} |
348 |
++ |
349 |
+ /** |
350 |
+ * ecryptfs_open |
351 |
+ * @inode: inode speciying file to open |
352 |
+@@ -365,7 +378,7 @@ const struct file_operations ecryptfs_main_fops = { |
353 |
+ #ifdef CONFIG_COMPAT |
354 |
+ .compat_ioctl = ecryptfs_compat_ioctl, |
355 |
+ #endif |
356 |
+- .mmap = generic_file_mmap, |
357 |
++ .mmap = ecryptfs_mmap, |
358 |
+ .open = ecryptfs_open, |
359 |
+ .flush = ecryptfs_flush, |
360 |
+ .release = ecryptfs_release, |
361 |
+diff --git a/fs/ecryptfs/kthread.c b/fs/ecryptfs/kthread.c |
362 |
+index e818f5ac7a26..866bb18efefe 100644 |
363 |
+--- a/fs/ecryptfs/kthread.c |
364 |
++++ b/fs/ecryptfs/kthread.c |
365 |
+@@ -25,7 +25,6 @@ |
366 |
+ #include <linux/slab.h> |
367 |
+ #include <linux/wait.h> |
368 |
+ #include <linux/mount.h> |
369 |
+-#include <linux/file.h> |
370 |
+ #include "ecryptfs_kernel.h" |
371 |
+ |
372 |
+ struct ecryptfs_open_req { |
373 |
+@@ -148,7 +147,7 @@ int ecryptfs_privileged_open(struct file **lower_file, |
374 |
+ flags |= IS_RDONLY(d_inode(lower_dentry)) ? O_RDONLY : O_RDWR; |
375 |
+ (*lower_file) = dentry_open(&req.path, flags, cred); |
376 |
+ if (!IS_ERR(*lower_file)) |
377 |
+- goto have_file; |
378 |
++ goto out; |
379 |
+ if ((flags & O_ACCMODE) == O_RDONLY) { |
380 |
+ rc = PTR_ERR((*lower_file)); |
381 |
+ goto out; |
382 |
+@@ -166,16 +165,8 @@ int ecryptfs_privileged_open(struct file **lower_file, |
383 |
+ mutex_unlock(&ecryptfs_kthread_ctl.mux); |
384 |
+ wake_up(&ecryptfs_kthread_ctl.wait); |
385 |
+ wait_for_completion(&req.done); |
386 |
+- if (IS_ERR(*lower_file)) { |
387 |
++ if (IS_ERR(*lower_file)) |
388 |
+ rc = PTR_ERR(*lower_file); |
389 |
+- goto out; |
390 |
+- } |
391 |
+-have_file: |
392 |
+- if ((*lower_file)->f_op->mmap == NULL) { |
393 |
+- fput(*lower_file); |
394 |
+- *lower_file = NULL; |
395 |
+- rc = -EMEDIUMTYPE; |
396 |
+- } |
397 |
+ out: |
398 |
+ return rc; |
399 |
+ } |
400 |
+diff --git a/mm/swap.c b/mm/swap.c |
401 |
+index b523f0a4cbfb..ab3b9c2dd783 100644 |
402 |
+--- a/mm/swap.c |
403 |
++++ b/mm/swap.c |
404 |
+@@ -631,7 +631,7 @@ static void __lru_cache_add(struct page *page) |
405 |
+ struct pagevec *pvec = &get_cpu_var(lru_add_pvec); |
406 |
+ |
407 |
+ page_cache_get(page); |
408 |
+- if (!pagevec_space(pvec) || PageCompound(page)) |
409 |
++ if (!pagevec_add(pvec, page) || PageCompound(page)) |
410 |
+ __pagevec_lru_add(pvec); |
411 |
+ put_cpu_var(lru_add_pvec); |
412 |
+ } |
413 |
+diff --git a/sound/core/timer.c b/sound/core/timer.c |
414 |
+index 1782555fcaca..7e3020c1e9d3 100644 |
415 |
+--- a/sound/core/timer.c |
416 |
++++ b/sound/core/timer.c |
417 |
+@@ -1961,6 +1961,7 @@ static ssize_t snd_timer_user_read(struct file *file, char __user *buffer, |
418 |
+ |
419 |
+ qhead = tu->qhead++; |
420 |
+ tu->qhead %= tu->queue_size; |
421 |
++ tu->qused--; |
422 |
+ spin_unlock_irq(&tu->qlock); |
423 |
+ |
424 |
+ if (tu->tread) { |
425 |
+@@ -1974,7 +1975,6 @@ static ssize_t snd_timer_user_read(struct file *file, char __user *buffer, |
426 |
+ } |
427 |
+ |
428 |
+ spin_lock_irq(&tu->qlock); |
429 |
+- tu->qused--; |
430 |
+ if (err < 0) |
431 |
+ goto _error; |
432 |
+ result += unit; |
433 |
+diff --git a/sound/pci/au88x0/au88x0_core.c b/sound/pci/au88x0/au88x0_core.c |
434 |
+index 4667c3232b7f..74177189063c 100644 |
435 |
+--- a/sound/pci/au88x0/au88x0_core.c |
436 |
++++ b/sound/pci/au88x0/au88x0_core.c |
437 |
+@@ -1444,9 +1444,8 @@ static int vortex_wtdma_bufshift(vortex_t * vortex, int wtdma) |
438 |
+ int page, p, pp, delta, i; |
439 |
+ |
440 |
+ page = |
441 |
+- (hwread(vortex->mmio, VORTEX_WTDMA_STAT + (wtdma << 2)) & |
442 |
+- WT_SUBBUF_MASK) |
443 |
+- >> WT_SUBBUF_SHIFT; |
444 |
++ (hwread(vortex->mmio, VORTEX_WTDMA_STAT + (wtdma << 2)) |
445 |
++ >> WT_SUBBUF_SHIFT) & WT_SUBBUF_MASK; |
446 |
+ if (dma->nr_periods >= 4) |
447 |
+ delta = (page - dma->period_real) & 3; |
448 |
+ else { |
449 |
+diff --git a/sound/pci/echoaudio/echoaudio.c b/sound/pci/echoaudio/echoaudio.c |
450 |
+index 862db9a0b041..f3e5cfa4f25d 100644 |
451 |
+--- a/sound/pci/echoaudio/echoaudio.c |
452 |
++++ b/sound/pci/echoaudio/echoaudio.c |
453 |
+@@ -2200,11 +2200,11 @@ static int snd_echo_resume(struct device *dev) |
454 |
+ u32 pipe_alloc_mask; |
455 |
+ int err; |
456 |
+ |
457 |
+- commpage_bak = kmalloc(sizeof(struct echoaudio), GFP_KERNEL); |
458 |
++ commpage_bak = kmalloc(sizeof(*commpage), GFP_KERNEL); |
459 |
+ if (commpage_bak == NULL) |
460 |
+ return -ENOMEM; |
461 |
+ commpage = chip->comm_page; |
462 |
+- memcpy(commpage_bak, commpage, sizeof(struct comm_page)); |
463 |
++ memcpy(commpage_bak, commpage, sizeof(*commpage)); |
464 |
+ |
465 |
+ err = init_hw(chip, chip->pci->device, chip->pci->subsystem_device); |
466 |
+ if (err < 0) { |
467 |
+diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c |
468 |
+index 16e0ebacbdb0..0fda7b4901dd 100644 |
469 |
+--- a/sound/pci/hda/hda_generic.c |
470 |
++++ b/sound/pci/hda/hda_generic.c |
471 |
+@@ -3992,6 +3992,8 @@ static hda_nid_t set_path_power(struct hda_codec *codec, hda_nid_t nid, |
472 |
+ |
473 |
+ for (n = 0; n < spec->paths.used; n++) { |
474 |
+ path = snd_array_elem(&spec->paths, n); |
475 |
++ if (!path->depth) |
476 |
++ continue; |
477 |
+ if (path->path[0] == nid || |
478 |
+ path->path[path->depth - 1] == nid) { |
479 |
+ bool pin_old = path->pin_enabled; |
480 |
+diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c |
481 |
+index abf8d342f1f4..707bc5405d9f 100644 |
482 |
+--- a/sound/pci/hda/patch_realtek.c |
483 |
++++ b/sound/pci/hda/patch_realtek.c |
484 |
+@@ -5505,6 +5505,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { |
485 |
+ SND_PCI_QUIRK(0x17aa, 0x504a, "ThinkPad X260", ALC292_FIXUP_TPT440_DOCK), |
486 |
+ SND_PCI_QUIRK(0x17aa, 0x504b, "Thinkpad", ALC293_FIXUP_LENOVO_SPK_NOISE), |
487 |
+ SND_PCI_QUIRK(0x17aa, 0x5050, "Thinkpad T560p", ALC292_FIXUP_TPT460), |
488 |
++ SND_PCI_QUIRK(0x17aa, 0x5051, "Thinkpad L460", ALC292_FIXUP_TPT460), |
489 |
+ SND_PCI_QUIRK(0x17aa, 0x5053, "Thinkpad T460", ALC292_FIXUP_TPT460), |
490 |
+ SND_PCI_QUIRK(0x17aa, 0x5109, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), |
491 |
+ SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_PCM_44K), |