1 |
commit: 9ec7fb52fe84cea9b16afa0e4ace05f848f335c9 |
2 |
Author: Alice Ferrazzi <alicef <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sat Jan 30 13:04:54 2021 +0000 |
4 |
Commit: Alice Ferrazzi <alicef <AT> gentoo <DOT> org> |
5 |
CommitDate: Sat Jan 30 13:07:05 2021 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=9ec7fb52 |
7 |
|
8 |
Linux patch 4.4.254 |
9 |
|
10 |
Signed-off-by: Alice Ferrazzi <alicef <AT> gentoo.org> |
11 |
|
12 |
0000_README | 4 + |
13 |
1253_linux-4.4.254.patch | 444 +++++++++++++++++++++++++++++++++++++++++++++++ |
14 |
2 files changed, 448 insertions(+) |
15 |
|
16 |
diff --git a/0000_README b/0000_README |
17 |
index 5c74575..1150ccd 100644 |
18 |
--- a/0000_README |
19 |
+++ b/0000_README |
20 |
@@ -1055,6 +1055,10 @@ Patch: 1252_linux-4.4.253.patch |
21 |
From: http://www.kernel.org |
22 |
Desc: Linux 4.4.253 |
23 |
|
24 |
+Patch: 1253_linux-4.4.254.patch |
25 |
+From: http://www.kernel.org |
26 |
+Desc: Linux 4.4.254 |
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/1253_linux-4.4.254.patch b/1253_linux-4.4.254.patch |
33 |
new file mode 100644 |
34 |
index 0000000..add57e6 |
35 |
--- /dev/null |
36 |
+++ b/1253_linux-4.4.254.patch |
37 |
@@ -0,0 +1,444 @@ |
38 |
+diff --git a/Makefile b/Makefile |
39 |
+index 8175b77e51052..5abb21c7d852e 100644 |
40 |
+--- a/Makefile |
41 |
++++ b/Makefile |
42 |
+@@ -1,6 +1,6 @@ |
43 |
+ VERSION = 4 |
44 |
+ PATCHLEVEL = 4 |
45 |
+-SUBLEVEL = 253 |
46 |
++SUBLEVEL = 254 |
47 |
+ EXTRAVERSION = |
48 |
+ NAME = Blurry Fish Butt |
49 |
+ |
50 |
+diff --git a/arch/sh/drivers/dma/Kconfig b/arch/sh/drivers/dma/Kconfig |
51 |
+index 78bc97b1d0270..ac834e9e0e0a4 100644 |
52 |
+--- a/arch/sh/drivers/dma/Kconfig |
53 |
++++ b/arch/sh/drivers/dma/Kconfig |
54 |
+@@ -62,8 +62,7 @@ config PVR2_DMA |
55 |
+ |
56 |
+ config G2_DMA |
57 |
+ tristate "G2 Bus DMA support" |
58 |
+- depends on SH_DREAMCAST |
59 |
+- select SH_DMA_API |
60 |
++ depends on SH_DREAMCAST && SH_DMA_API |
61 |
+ help |
62 |
+ This enables support for the DMA controller for the Dreamcast's |
63 |
+ G2 bus. Drivers that want this will generally enable this on |
64 |
+diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile |
65 |
+index bf0c7b6b00c38..01eafd8aeec6c 100644 |
66 |
+--- a/arch/x86/boot/compressed/Makefile |
67 |
++++ b/arch/x86/boot/compressed/Makefile |
68 |
+@@ -31,6 +31,8 @@ KBUILD_CFLAGS += -mno-mmx -mno-sse |
69 |
+ KBUILD_CFLAGS += $(call cc-option,-ffreestanding) |
70 |
+ KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector) |
71 |
+ KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member) |
72 |
++# Disable relocation relaxation in case the link is not PIE. |
73 |
++KBUILD_CFLAGS += $(call as-option,-Wa$(comma)-mrelax-relocations=no) |
74 |
+ |
75 |
+ KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__ |
76 |
+ GCOV_PROFILE := n |
77 |
+diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c |
78 |
+index 2ab4568aadddc..90ed17aacaa7b 100644 |
79 |
+--- a/drivers/acpi/scan.c |
80 |
++++ b/drivers/acpi/scan.c |
81 |
+@@ -564,6 +564,8 @@ static int acpi_get_device_data(acpi_handle handle, struct acpi_device **device, |
82 |
+ if (!device) |
83 |
+ return -EINVAL; |
84 |
+ |
85 |
++ *device = NULL; |
86 |
++ |
87 |
+ status = acpi_get_data_full(handle, acpi_scan_drop_device, |
88 |
+ (void **)device, callback); |
89 |
+ if (ACPI_FAILURE(status) || !*device) { |
90 |
+diff --git a/drivers/block/xen-blkback/xenbus.c b/drivers/block/xen-blkback/xenbus.c |
91 |
+index 823f3480ebd19..f974ed7c33b5d 100644 |
92 |
+--- a/drivers/block/xen-blkback/xenbus.c |
93 |
++++ b/drivers/block/xen-blkback/xenbus.c |
94 |
+@@ -219,6 +219,7 @@ static int xen_blkif_disconnect(struct xen_blkif *blkif) |
95 |
+ |
96 |
+ if (blkif->xenblkd) { |
97 |
+ kthread_stop(blkif->xenblkd); |
98 |
++ blkif->xenblkd = NULL; |
99 |
+ wake_up(&blkif->shutdown_wq); |
100 |
+ } |
101 |
+ |
102 |
+diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadow.c b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadow.c |
103 |
+index 7deb81b6dbac6..4b571cc6bc70f 100644 |
104 |
+--- a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadow.c |
105 |
++++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadow.c |
106 |
+@@ -75,7 +75,7 @@ shadow_image(struct nvkm_bios *bios, int idx, u32 offset, struct shadow *mthd) |
107 |
+ nvkm_debug(subdev, "%08x: type %02x, %d bytes\n", |
108 |
+ image.base, image.type, image.size); |
109 |
+ |
110 |
+- if (!shadow_fetch(bios, mthd, image.size)) { |
111 |
++ if (!shadow_fetch(bios, mthd, image.base + image.size)) { |
112 |
+ nvkm_debug(subdev, "%08x: fetch failed\n", image.base); |
113 |
+ return 0; |
114 |
+ } |
115 |
+diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxgm204.c b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxgm204.c |
116 |
+index 7cac8fe372b6b..a3cede8df4fd9 100644 |
117 |
+--- a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxgm204.c |
118 |
++++ b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxgm204.c |
119 |
+@@ -33,7 +33,7 @@ static void |
120 |
+ gm204_i2c_aux_fini(struct gm204_i2c_aux *aux) |
121 |
+ { |
122 |
+ struct nvkm_device *device = aux->base.pad->i2c->subdev.device; |
123 |
+- nvkm_mask(device, 0x00d954 + (aux->ch * 0x50), 0x00310000, 0x00000000); |
124 |
++ nvkm_mask(device, 0x00d954 + (aux->ch * 0x50), 0x00710000, 0x00000000); |
125 |
+ } |
126 |
+ |
127 |
+ static int |
128 |
+@@ -54,10 +54,10 @@ gm204_i2c_aux_init(struct gm204_i2c_aux *aux) |
129 |
+ AUX_ERR(&aux->base, "begin idle timeout %08x", ctrl); |
130 |
+ return -EBUSY; |
131 |
+ } |
132 |
+- } while (ctrl & 0x03010000); |
133 |
++ } while (ctrl & 0x07010000); |
134 |
+ |
135 |
+ /* set some magic, and wait up to 1ms for it to appear */ |
136 |
+- nvkm_mask(device, 0x00d954 + (aux->ch * 0x50), 0x00300000, ureq); |
137 |
++ nvkm_mask(device, 0x00d954 + (aux->ch * 0x50), 0x00700000, ureq); |
138 |
+ timeout = 1000; |
139 |
+ do { |
140 |
+ ctrl = nvkm_rd32(device, 0x00d954 + (aux->ch * 0x50)); |
141 |
+@@ -67,7 +67,7 @@ gm204_i2c_aux_init(struct gm204_i2c_aux *aux) |
142 |
+ gm204_i2c_aux_fini(aux); |
143 |
+ return -EBUSY; |
144 |
+ } |
145 |
+- } while ((ctrl & 0x03000000) != urep); |
146 |
++ } while ((ctrl & 0x07000000) != urep); |
147 |
+ |
148 |
+ return 0; |
149 |
+ } |
150 |
+diff --git a/drivers/iio/dac/ad5504.c b/drivers/iio/dac/ad5504.c |
151 |
+index 4e4c20d6d8b57..0367641aed072 100644 |
152 |
+--- a/drivers/iio/dac/ad5504.c |
153 |
++++ b/drivers/iio/dac/ad5504.c |
154 |
+@@ -189,9 +189,9 @@ static ssize_t ad5504_write_dac_powerdown(struct iio_dev *indio_dev, |
155 |
+ return ret; |
156 |
+ |
157 |
+ if (pwr_down) |
158 |
+- st->pwr_down_mask |= (1 << chan->channel); |
159 |
+- else |
160 |
+ st->pwr_down_mask &= ~(1 << chan->channel); |
161 |
++ else |
162 |
++ st->pwr_down_mask |= (1 << chan->channel); |
163 |
+ |
164 |
+ ret = ad5504_spi_write(st, AD5504_ADDR_CTRL, |
165 |
+ AD5504_DAC_PWRDWN_MODE(st->pwr_down_mode) | |
166 |
+diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c |
167 |
+index 8eed39dc2036a..a5a6c7f073af7 100644 |
168 |
+--- a/drivers/md/dm-table.c |
169 |
++++ b/drivers/md/dm-table.c |
170 |
+@@ -393,14 +393,23 @@ int dm_get_device(struct dm_target *ti, const char *path, fmode_t mode, |
171 |
+ { |
172 |
+ int r; |
173 |
+ dev_t dev; |
174 |
++ unsigned int major, minor; |
175 |
++ char dummy; |
176 |
+ struct dm_dev_internal *dd; |
177 |
+ struct dm_table *t = ti->table; |
178 |
+ |
179 |
+ BUG_ON(!t); |
180 |
+ |
181 |
+- dev = dm_get_dev_t(path); |
182 |
+- if (!dev) |
183 |
+- return -ENODEV; |
184 |
++ if (sscanf(path, "%u:%u%c", &major, &minor, &dummy) == 2) { |
185 |
++ /* Extract the major/minor numbers */ |
186 |
++ dev = MKDEV(major, minor); |
187 |
++ if (MAJOR(dev) != major || MINOR(dev) != minor) |
188 |
++ return -EOVERFLOW; |
189 |
++ } else { |
190 |
++ dev = dm_get_dev_t(path); |
191 |
++ if (!dev) |
192 |
++ return -ENODEV; |
193 |
++ } |
194 |
+ |
195 |
+ dd = find_device(&t->devices, dev); |
196 |
+ if (!dd) { |
197 |
+diff --git a/drivers/net/can/dev.c b/drivers/net/can/dev.c |
198 |
+index 52110017fd401..45f15ac6b1015 100644 |
199 |
+--- a/drivers/net/can/dev.c |
200 |
++++ b/drivers/net/can/dev.c |
201 |
+@@ -525,11 +525,11 @@ static void can_restart(struct net_device *dev) |
202 |
+ } |
203 |
+ cf->can_id |= CAN_ERR_RESTARTED; |
204 |
+ |
205 |
+- netif_rx_ni(skb); |
206 |
+- |
207 |
+ stats->rx_packets++; |
208 |
+ stats->rx_bytes += cf->can_dlc; |
209 |
+ |
210 |
++ netif_rx_ni(skb); |
211 |
++ |
212 |
+ restart: |
213 |
+ netdev_dbg(dev, "restarted\n"); |
214 |
+ priv->can_stats.restarts++; |
215 |
+diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c |
216 |
+index 8413f93f5cd94..614b83c7ce817 100644 |
217 |
+--- a/drivers/net/ethernet/renesas/sh_eth.c |
218 |
++++ b/drivers/net/ethernet/renesas/sh_eth.c |
219 |
+@@ -2507,10 +2507,10 @@ static int sh_eth_close(struct net_device *ndev) |
220 |
+ /* Free all the skbuffs in the Rx queue and the DMA buffer. */ |
221 |
+ sh_eth_ring_free(ndev); |
222 |
+ |
223 |
+- pm_runtime_put_sync(&mdp->pdev->dev); |
224 |
+- |
225 |
+ mdp->is_opened = 0; |
226 |
+ |
227 |
++ pm_runtime_put(&mdp->pdev->dev); |
228 |
++ |
229 |
+ return 0; |
230 |
+ } |
231 |
+ |
232 |
+diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c |
233 |
+index e37f6db0dd156..5e1d922e9a6ff 100644 |
234 |
+--- a/drivers/scsi/ufs/ufshcd.c |
235 |
++++ b/drivers/scsi/ufs/ufshcd.c |
236 |
+@@ -3818,19 +3818,16 @@ static int ufshcd_eh_device_reset_handler(struct scsi_cmnd *cmd) |
237 |
+ { |
238 |
+ struct Scsi_Host *host; |
239 |
+ struct ufs_hba *hba; |
240 |
+- unsigned int tag; |
241 |
+ u32 pos; |
242 |
+ int err; |
243 |
+- u8 resp = 0xF; |
244 |
+- struct ufshcd_lrb *lrbp; |
245 |
++ u8 resp = 0xF, lun; |
246 |
+ unsigned long flags; |
247 |
+ |
248 |
+ host = cmd->device->host; |
249 |
+ hba = shost_priv(host); |
250 |
+- tag = cmd->request->tag; |
251 |
+ |
252 |
+- lrbp = &hba->lrb[tag]; |
253 |
+- err = ufshcd_issue_tm_cmd(hba, lrbp->lun, 0, UFS_LOGICAL_RESET, &resp); |
254 |
++ lun = ufshcd_scsi_to_upiu_lun(cmd->device->lun); |
255 |
++ err = ufshcd_issue_tm_cmd(hba, lun, 0, UFS_LOGICAL_RESET, &resp); |
256 |
+ if (err || resp != UPIU_TASK_MANAGEMENT_FUNC_COMPL) { |
257 |
+ if (!err) |
258 |
+ err = resp; |
259 |
+@@ -3839,7 +3836,7 @@ static int ufshcd_eh_device_reset_handler(struct scsi_cmnd *cmd) |
260 |
+ |
261 |
+ /* clear the commands that were pending for corresponding LUN */ |
262 |
+ for_each_set_bit(pos, &hba->outstanding_reqs, hba->nutrs) { |
263 |
+- if (hba->lrb[pos].lun == lrbp->lun) { |
264 |
++ if (hba->lrb[pos].lun == lun) { |
265 |
+ err = ufshcd_clear_cmd(hba, pos); |
266 |
+ if (err) |
267 |
+ break; |
268 |
+diff --git a/drivers/usb/gadget/udc/bdc/Kconfig b/drivers/usb/gadget/udc/bdc/Kconfig |
269 |
+index 0d7b8c9f72fda..778df4badf888 100644 |
270 |
+--- a/drivers/usb/gadget/udc/bdc/Kconfig |
271 |
++++ b/drivers/usb/gadget/udc/bdc/Kconfig |
272 |
+@@ -14,7 +14,7 @@ if USB_BDC_UDC |
273 |
+ comment "Platform Support" |
274 |
+ config USB_BDC_PCI |
275 |
+ tristate "BDC support for PCIe based platforms" |
276 |
+- depends on PCI |
277 |
++ depends on PCI && BROKEN |
278 |
+ default USB_BDC_UDC |
279 |
+ help |
280 |
+ Enable support for platforms which have BDC connected through PCIe, such as Lego3 FPGA platform. |
281 |
+diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c |
282 |
+index 330e05acf5f75..b9ad19d1b400c 100644 |
283 |
+--- a/drivers/usb/host/ehci-hcd.c |
284 |
++++ b/drivers/usb/host/ehci-hcd.c |
285 |
+@@ -575,6 +575,7 @@ static int ehci_run (struct usb_hcd *hcd) |
286 |
+ struct ehci_hcd *ehci = hcd_to_ehci (hcd); |
287 |
+ u32 temp; |
288 |
+ u32 hcc_params; |
289 |
++ int rc; |
290 |
+ |
291 |
+ hcd->uses_new_polling = 1; |
292 |
+ |
293 |
+@@ -630,9 +631,20 @@ static int ehci_run (struct usb_hcd *hcd) |
294 |
+ down_write(&ehci_cf_port_reset_rwsem); |
295 |
+ ehci->rh_state = EHCI_RH_RUNNING; |
296 |
+ ehci_writel(ehci, FLAG_CF, &ehci->regs->configured_flag); |
297 |
++ |
298 |
++ /* Wait until HC become operational */ |
299 |
+ ehci_readl(ehci, &ehci->regs->command); /* unblock posted writes */ |
300 |
+ msleep(5); |
301 |
++ rc = ehci_handshake(ehci, &ehci->regs->status, STS_HALT, 0, 100 * 1000); |
302 |
++ |
303 |
+ up_write(&ehci_cf_port_reset_rwsem); |
304 |
++ |
305 |
++ if (rc) { |
306 |
++ ehci_err(ehci, "USB %x.%x, controller refused to start: %d\n", |
307 |
++ ((ehci->sbrn & 0xf0)>>4), (ehci->sbrn & 0x0f), rc); |
308 |
++ return rc; |
309 |
++ } |
310 |
++ |
311 |
+ ehci->last_periodic_enable = ktime_get_real(); |
312 |
+ |
313 |
+ temp = HC_VERSION(ehci, ehci_readl(ehci, &ehci->caps->hc_capbase)); |
314 |
+diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c |
315 |
+index 536251c6149d0..a39b7a49b7cf1 100644 |
316 |
+--- a/drivers/usb/host/xhci-ring.c |
317 |
++++ b/drivers/usb/host/xhci-ring.c |
318 |
+@@ -2840,6 +2840,8 @@ static void queue_trb(struct xhci_hcd *xhci, struct xhci_ring *ring, |
319 |
+ trb->field[0] = cpu_to_le32(field1); |
320 |
+ trb->field[1] = cpu_to_le32(field2); |
321 |
+ trb->field[2] = cpu_to_le32(field3); |
322 |
++ /* make sure TRB is fully written before giving it to the controller */ |
323 |
++ wmb(); |
324 |
+ trb->field[3] = cpu_to_le32(field4); |
325 |
+ inc_enq(xhci, ring, more_trbs_coming); |
326 |
+ } |
327 |
+diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h |
328 |
+index af8b4a8799349..9485abe76b687 100644 |
329 |
+--- a/include/linux/compiler-gcc.h |
330 |
++++ b/include/linux/compiler-gcc.h |
331 |
+@@ -145,6 +145,12 @@ |
332 |
+ |
333 |
+ #if GCC_VERSION < 30200 |
334 |
+ # error Sorry, your compiler is too old - please upgrade it. |
335 |
++#elif defined(CONFIG_ARM64) && GCC_VERSION < 50100 && !defined(__clang__) |
336 |
++/* |
337 |
++ * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63293 |
338 |
++ * https://lore.kernel.org/r/20210107111841.GN1551@××××××××××××××××××.uk |
339 |
++ */ |
340 |
++# error Sorry, your version of GCC is too old - please use 5.1 or newer. |
341 |
+ #endif |
342 |
+ |
343 |
+ #if GCC_VERSION < 30300 |
344 |
+diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c |
345 |
+index 547a3a5ac57b5..1ec760f6bf58b 100644 |
346 |
+--- a/kernel/trace/ring_buffer.c |
347 |
++++ b/kernel/trace/ring_buffer.c |
348 |
+@@ -4294,6 +4294,8 @@ void ring_buffer_reset_cpu(struct ring_buffer *buffer, int cpu) |
349 |
+ |
350 |
+ if (!cpumask_test_cpu(cpu, buffer->cpumask)) |
351 |
+ return; |
352 |
++ /* prevent another thread from changing buffer sizes */ |
353 |
++ mutex_lock(&buffer->mutex); |
354 |
+ |
355 |
+ atomic_inc(&buffer->resize_disabled); |
356 |
+ atomic_inc(&cpu_buffer->record_disabled); |
357 |
+@@ -4317,6 +4319,8 @@ void ring_buffer_reset_cpu(struct ring_buffer *buffer, int cpu) |
358 |
+ |
359 |
+ atomic_dec(&cpu_buffer->record_disabled); |
360 |
+ atomic_dec(&buffer->resize_disabled); |
361 |
++ |
362 |
++ mutex_unlock(&buffer->mutex); |
363 |
+ } |
364 |
+ EXPORT_SYMBOL_GPL(ring_buffer_reset_cpu); |
365 |
+ |
366 |
+diff --git a/mm/slub.c b/mm/slub.c |
367 |
+index 48ff01d22d18e..18d1622144afe 100644 |
368 |
+--- a/mm/slub.c |
369 |
++++ b/mm/slub.c |
370 |
+@@ -5425,10 +5425,8 @@ static int sysfs_slab_add(struct kmem_cache *s) |
371 |
+ |
372 |
+ s->kobj.kset = cache_kset(s); |
373 |
+ err = kobject_init_and_add(&s->kobj, &slab_ktype, NULL, "%s", name); |
374 |
+- if (err) { |
375 |
+- kobject_put(&s->kobj); |
376 |
++ if (err) |
377 |
+ goto out; |
378 |
+- } |
379 |
+ |
380 |
+ err = sysfs_create_group(&s->kobj, &slab_attr_group); |
381 |
+ if (err) |
382 |
+diff --git a/net/core/skbuff.c b/net/core/skbuff.c |
383 |
+index 011c2cf4d041c..171f81ce81d03 100644 |
384 |
+--- a/net/core/skbuff.c |
385 |
++++ b/net/core/skbuff.c |
386 |
+@@ -419,7 +419,11 @@ struct sk_buff *__netdev_alloc_skb(struct net_device *dev, unsigned int len, |
387 |
+ |
388 |
+ len += NET_SKB_PAD; |
389 |
+ |
390 |
+- if ((len > SKB_WITH_OVERHEAD(PAGE_SIZE)) || |
391 |
++ /* If requested length is either too small or too big, |
392 |
++ * we use kmalloc() for skb->head allocation. |
393 |
++ */ |
394 |
++ if (len <= SKB_WITH_OVERHEAD(1024) || |
395 |
++ len > SKB_WITH_OVERHEAD(PAGE_SIZE) || |
396 |
+ (gfp_mask & (__GFP_DIRECT_RECLAIM | GFP_DMA))) { |
397 |
+ skb = __alloc_skb(len, gfp_mask, SKB_ALLOC_RX, NUMA_NO_NODE); |
398 |
+ if (!skb) |
399 |
+diff --git a/net/ipv4/netfilter/ipt_rpfilter.c b/net/ipv4/netfilter/ipt_rpfilter.c |
400 |
+index 78cc64eddfc18..32a363465e0a4 100644 |
401 |
+--- a/net/ipv4/netfilter/ipt_rpfilter.c |
402 |
++++ b/net/ipv4/netfilter/ipt_rpfilter.c |
403 |
+@@ -92,7 +92,7 @@ static bool rpfilter_mt(const struct sk_buff *skb, struct xt_action_param *par) |
404 |
+ flow.saddr = rpfilter_get_saddr(iph->daddr); |
405 |
+ flow.flowi4_oif = 0; |
406 |
+ flow.flowi4_mark = info->flags & XT_RPFILTER_VALID_MARK ? skb->mark : 0; |
407 |
+- flow.flowi4_tos = RT_TOS(iph->tos); |
408 |
++ flow.flowi4_tos = iph->tos & IPTOS_RT_MASK; |
409 |
+ flow.flowi4_scope = RT_SCOPE_UNIVERSE; |
410 |
+ |
411 |
+ return rpfilter_lookup_reverse(par->net, &flow, par->in, info->flags) ^ invert; |
412 |
+diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c |
413 |
+index 583765a330fff..392fc8ac4c6ae 100644 |
414 |
+--- a/net/ipv6/addrconf.c |
415 |
++++ b/net/ipv6/addrconf.c |
416 |
+@@ -2238,6 +2238,7 @@ static void addrconf_add_mroute(struct net_device *dev) |
417 |
+ .fc_dst_len = 8, |
418 |
+ .fc_flags = RTF_UP, |
419 |
+ .fc_nlinfo.nl_net = dev_net(dev), |
420 |
++ .fc_protocol = RTPROT_KERNEL, |
421 |
+ }; |
422 |
+ |
423 |
+ ipv6_addr_set(&cfg.fc_dst, htonl(0xFF000000), 0, 0, 0); |
424 |
+diff --git a/net/sched/cls_tcindex.c b/net/sched/cls_tcindex.c |
425 |
+index 755e9ff40fca6..3d891b11c0770 100644 |
426 |
+--- a/net/sched/cls_tcindex.c |
427 |
++++ b/net/sched/cls_tcindex.c |
428 |
+@@ -273,9 +273,13 @@ tcindex_set_parms(struct net *net, struct tcf_proto *tp, unsigned long base, |
429 |
+ if (tb[TCA_TCINDEX_MASK]) |
430 |
+ cp->mask = nla_get_u16(tb[TCA_TCINDEX_MASK]); |
431 |
+ |
432 |
+- if (tb[TCA_TCINDEX_SHIFT]) |
433 |
++ if (tb[TCA_TCINDEX_SHIFT]) { |
434 |
+ cp->shift = nla_get_u32(tb[TCA_TCINDEX_SHIFT]); |
435 |
+- |
436 |
++ if (cp->shift > 16) { |
437 |
++ err = -EINVAL; |
438 |
++ goto errout; |
439 |
++ } |
440 |
++ } |
441 |
+ if (!cp->hash) { |
442 |
+ /* Hash not specified, use perfect hash if the upper limit |
443 |
+ * of the hashing index is below the threshold. |
444 |
+diff --git a/sound/core/seq/oss/seq_oss_synth.c b/sound/core/seq/oss/seq_oss_synth.c |
445 |
+index df5b984bb33f7..48b3398e9e9d3 100644 |
446 |
+--- a/sound/core/seq/oss/seq_oss_synth.c |
447 |
++++ b/sound/core/seq/oss/seq_oss_synth.c |
448 |
+@@ -624,7 +624,8 @@ snd_seq_oss_synth_make_info(struct seq_oss_devinfo *dp, int dev, struct synth_in |
449 |
+ |
450 |
+ if (info->is_midi) { |
451 |
+ struct midi_info minf; |
452 |
+- snd_seq_oss_midi_make_info(dp, info->midi_mapped, &minf); |
453 |
++ if (snd_seq_oss_midi_make_info(dp, info->midi_mapped, &minf)) |
454 |
++ return -ENXIO; |
455 |
+ inf->synth_type = SYNTH_TYPE_MIDI; |
456 |
+ inf->synth_subtype = 0; |
457 |
+ inf->nr_voices = 16; |
458 |
+diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c |
459 |
+index fc30d1e8aa76a..9dd104c308e1d 100644 |
460 |
+--- a/sound/pci/hda/patch_via.c |
461 |
++++ b/sound/pci/hda/patch_via.c |
462 |
+@@ -135,6 +135,7 @@ static struct via_spec *via_new_spec(struct hda_codec *codec) |
463 |
+ spec->codec_type = VT1708S; |
464 |
+ spec->gen.indep_hp = 1; |
465 |
+ spec->gen.keep_eapd_on = 1; |
466 |
++ spec->gen.dac_min_mute = 1; |
467 |
+ spec->gen.pcm_playback_hook = via_playback_pcm_hook; |
468 |
+ spec->gen.add_stereo_mix_input = HDA_HINT_STEREO_MIX_AUTO; |
469 |
+ codec->power_save_node = 1; |
470 |
+diff --git a/sound/soc/intel/boards/haswell.c b/sound/soc/intel/boards/haswell.c |
471 |
+index de955c2e8c4e3..a0e67d5f59683 100644 |
472 |
+--- a/sound/soc/intel/boards/haswell.c |
473 |
++++ b/sound/soc/intel/boards/haswell.c |
474 |
+@@ -197,6 +197,7 @@ static struct platform_driver haswell_audio = { |
475 |
+ .probe = haswell_audio_probe, |
476 |
+ .driver = { |
477 |
+ .name = "haswell-audio", |
478 |
++ .pm = &snd_soc_pm_ops, |
479 |
+ }, |
480 |
+ }; |
481 |
+ |