Magellan Linux

Annotation of /trunk/kernel-alx-legacy/patches-4.9/0353-4.9.254-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3655 - (hide annotations) (download)
Mon Oct 24 14:07:33 2022 UTC (19 months, 2 weeks ago) by niro
File size: 19658 byte(s)
-linux-4.9.254
1 niro 3655 diff --git a/Makefile b/Makefile
2     index 62a07bdcfacb7..ea9ea119460d4 100644
3     --- a/Makefile
4     +++ b/Makefile
5     @@ -1,6 +1,6 @@
6     VERSION = 4
7     PATCHLEVEL = 9
8     -SUBLEVEL = 253
9     +SUBLEVEL = 254
10     EXTRAVERSION =
11     NAME = Roaring Lionus
12    
13     diff --git a/arch/sh/drivers/dma/Kconfig b/arch/sh/drivers/dma/Kconfig
14     index 78bc97b1d0270..ac834e9e0e0a4 100644
15     --- a/arch/sh/drivers/dma/Kconfig
16     +++ b/arch/sh/drivers/dma/Kconfig
17     @@ -62,8 +62,7 @@ config PVR2_DMA
18    
19     config G2_DMA
20     tristate "G2 Bus DMA support"
21     - depends on SH_DREAMCAST
22     - select SH_DMA_API
23     + depends on SH_DREAMCAST && SH_DMA_API
24     help
25     This enables support for the DMA controller for the Dreamcast's
26     G2 bus. Drivers that want this will generally enable this on
27     diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile
28     index 89b163351e642..7be7acd6a5409 100644
29     --- a/arch/x86/boot/compressed/Makefile
30     +++ b/arch/x86/boot/compressed/Makefile
31     @@ -35,6 +35,8 @@ KBUILD_CFLAGS += -mno-mmx -mno-sse
32     KBUILD_CFLAGS += $(call cc-option,-ffreestanding)
33     KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector)
34     KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member)
35     +# Disable relocation relaxation in case the link is not PIE.
36     +KBUILD_CFLAGS += $(call as-option,-Wa$(comma)-mrelax-relocations=no)
37    
38     KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
39     GCOV_PROFILE := n
40     diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
41     index f49e2b7880ac2..5aa4a01f698fe 100644
42     --- a/drivers/acpi/scan.c
43     +++ b/drivers/acpi/scan.c
44     @@ -585,6 +585,8 @@ static int acpi_get_device_data(acpi_handle handle, struct acpi_device **device,
45     if (!device)
46     return -EINVAL;
47    
48     + *device = NULL;
49     +
50     status = acpi_get_data_full(handle, acpi_scan_drop_device,
51     (void **)device, callback);
52     if (ACPI_FAILURE(status) || !*device) {
53     diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadow.c b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadow.c
54     index 7deb81b6dbac6..4b571cc6bc70f 100644
55     --- a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadow.c
56     +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadow.c
57     @@ -75,7 +75,7 @@ shadow_image(struct nvkm_bios *bios, int idx, u32 offset, struct shadow *mthd)
58     nvkm_debug(subdev, "%08x: type %02x, %d bytes\n",
59     image.base, image.type, image.size);
60    
61     - if (!shadow_fetch(bios, mthd, image.size)) {
62     + if (!shadow_fetch(bios, mthd, image.base + image.size)) {
63     nvkm_debug(subdev, "%08x: fetch failed\n", image.base);
64     return 0;
65     }
66     diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxgm200.c b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxgm200.c
67     index a5783f4d972e3..c49795e779be4 100644
68     --- a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxgm200.c
69     +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxgm200.c
70     @@ -33,7 +33,7 @@ static void
71     gm200_i2c_aux_fini(struct gm200_i2c_aux *aux)
72     {
73     struct nvkm_device *device = aux->base.pad->i2c->subdev.device;
74     - nvkm_mask(device, 0x00d954 + (aux->ch * 0x50), 0x00310000, 0x00000000);
75     + nvkm_mask(device, 0x00d954 + (aux->ch * 0x50), 0x00710000, 0x00000000);
76     }
77    
78     static int
79     @@ -54,10 +54,10 @@ gm200_i2c_aux_init(struct gm200_i2c_aux *aux)
80     AUX_ERR(&aux->base, "begin idle timeout %08x", ctrl);
81     return -EBUSY;
82     }
83     - } while (ctrl & 0x03010000);
84     + } while (ctrl & 0x07010000);
85    
86     /* set some magic, and wait up to 1ms for it to appear */
87     - nvkm_mask(device, 0x00d954 + (aux->ch * 0x50), 0x00300000, ureq);
88     + nvkm_mask(device, 0x00d954 + (aux->ch * 0x50), 0x00700000, ureq);
89     timeout = 1000;
90     do {
91     ctrl = nvkm_rd32(device, 0x00d954 + (aux->ch * 0x50));
92     @@ -67,7 +67,7 @@ gm200_i2c_aux_init(struct gm200_i2c_aux *aux)
93     gm200_i2c_aux_fini(aux);
94     return -EBUSY;
95     }
96     - } while ((ctrl & 0x03000000) != urep);
97     + } while ((ctrl & 0x07000000) != urep);
98    
99     return 0;
100     }
101     diff --git a/drivers/hwtracing/stm/heartbeat.c b/drivers/hwtracing/stm/heartbeat.c
102     index 3da7b673aab25..3957ce678265d 100644
103     --- a/drivers/hwtracing/stm/heartbeat.c
104     +++ b/drivers/hwtracing/stm/heartbeat.c
105     @@ -72,7 +72,7 @@ static void stm_heartbeat_unlink(struct stm_source_data *data)
106    
107     static int stm_heartbeat_init(void)
108     {
109     - int i, ret = -ENOMEM;
110     + int i, ret;
111    
112     if (nr_devs < 0 || nr_devs > STM_HEARTBEAT_MAX)
113     return -EINVAL;
114     @@ -80,8 +80,10 @@ static int stm_heartbeat_init(void)
115     for (i = 0; i < nr_devs; i++) {
116     stm_heartbeat[i].data.name =
117     kasprintf(GFP_KERNEL, "heartbeat.%d", i);
118     - if (!stm_heartbeat[i].data.name)
119     + if (!stm_heartbeat[i].data.name) {
120     + ret = -ENOMEM;
121     goto fail_unregister;
122     + }
123    
124     stm_heartbeat[i].data.nr_chans = 1;
125     stm_heartbeat[i].data.link = stm_heartbeat_link;
126     diff --git a/drivers/i2c/busses/i2c-octeon-core.c b/drivers/i2c/busses/i2c-octeon-core.c
127     index 5e63b17f935d5..e5ad3f9cd372f 100644
128     --- a/drivers/i2c/busses/i2c-octeon-core.c
129     +++ b/drivers/i2c/busses/i2c-octeon-core.c
130     @@ -383,7 +383,7 @@ static int octeon_i2c_read(struct octeon_i2c *i2c, int target,
131    
132     data[i] = octeon_i2c_data_read(i2c);
133     if (recv_len && i == 0) {
134     - if (data[i] > I2C_SMBUS_BLOCK_MAX + 1)
135     + if (data[i] > I2C_SMBUS_BLOCK_MAX)
136     return -EPROTO;
137     length += data[i];
138     }
139     diff --git a/drivers/iio/dac/ad5504.c b/drivers/iio/dac/ad5504.c
140     index 788b3d6fd1cc9..b15a02f502df9 100644
141     --- a/drivers/iio/dac/ad5504.c
142     +++ b/drivers/iio/dac/ad5504.c
143     @@ -189,9 +189,9 @@ static ssize_t ad5504_write_dac_powerdown(struct iio_dev *indio_dev,
144     return ret;
145    
146     if (pwr_down)
147     - st->pwr_down_mask |= (1 << chan->channel);
148     - else
149     st->pwr_down_mask &= ~(1 << chan->channel);
150     + else
151     + st->pwr_down_mask |= (1 << chan->channel);
152    
153     ret = ad5504_spi_write(st, AD5504_ADDR_CTRL,
154     AD5504_DAC_PWRDWN_MODE(st->pwr_down_mode) |
155     diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
156     index 62e3dc19b6099..5d120c3cee57d 100644
157     --- a/drivers/md/dm-table.c
158     +++ b/drivers/md/dm-table.c
159     @@ -396,14 +396,23 @@ int dm_get_device(struct dm_target *ti, const char *path, fmode_t mode,
160     {
161     int r;
162     dev_t dev;
163     + unsigned int major, minor;
164     + char dummy;
165     struct dm_dev_internal *dd;
166     struct dm_table *t = ti->table;
167    
168     BUG_ON(!t);
169    
170     - dev = dm_get_dev_t(path);
171     - if (!dev)
172     - return -ENODEV;
173     + if (sscanf(path, "%u:%u%c", &major, &minor, &dummy) == 2) {
174     + /* Extract the major/minor numbers */
175     + dev = MKDEV(major, minor);
176     + if (MAJOR(dev) != major || MINOR(dev) != minor)
177     + return -EOVERFLOW;
178     + } else {
179     + dev = dm_get_dev_t(path);
180     + if (!dev)
181     + return -ENODEV;
182     + }
183    
184     dd = find_device(&t->devices, dev);
185     if (!dd) {
186     diff --git a/drivers/net/can/dev.c b/drivers/net/can/dev.c
187     index c7508d9a4c6fb..164078609f98e 100644
188     --- a/drivers/net/can/dev.c
189     +++ b/drivers/net/can/dev.c
190     @@ -555,11 +555,11 @@ static void can_restart(struct net_device *dev)
191     }
192     cf->can_id |= CAN_ERR_RESTARTED;
193    
194     - netif_rx_ni(skb);
195     -
196     stats->rx_packets++;
197     stats->rx_bytes += cf->can_dlc;
198    
199     + netif_rx_ni(skb);
200     +
201     restart:
202     netdev_dbg(dev, "restarted\n");
203     priv->can_stats.restarts++;
204     diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c
205     index c387be5c926b7..5ec0042bc3840 100644
206     --- a/drivers/net/dsa/b53/b53_common.c
207     +++ b/drivers/net/dsa/b53/b53_common.c
208     @@ -946,7 +946,7 @@ static int b53_vlan_prepare(struct dsa_switch *ds, int port,
209     if ((is5325(dev) || is5365(dev)) && vlan->vid_begin == 0)
210     return -EOPNOTSUPP;
211    
212     - if (vlan->vid_end > dev->num_vlans)
213     + if (vlan->vid_end >= dev->num_vlans)
214     return -ERANGE;
215    
216     b53_enable_vlan(dev, true);
217     diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c
218     index 6f8d4810ce979..7458b1a70e5d6 100644
219     --- a/drivers/net/ethernet/renesas/sh_eth.c
220     +++ b/drivers/net/ethernet/renesas/sh_eth.c
221     @@ -2411,10 +2411,10 @@ static int sh_eth_close(struct net_device *ndev)
222     /* Free all the skbuffs in the Rx queue and the DMA buffer. */
223     sh_eth_ring_free(ndev);
224    
225     - pm_runtime_put_sync(&mdp->pdev->dev);
226     -
227     mdp->is_opened = 0;
228    
229     + pm_runtime_put(&mdp->pdev->dev);
230     +
231     return 0;
232     }
233    
234     diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
235     index ad80e4223c2d3..a767d942bfca5 100644
236     --- a/drivers/scsi/ufs/ufshcd.c
237     +++ b/drivers/scsi/ufs/ufshcd.c
238     @@ -4552,19 +4552,16 @@ static int ufshcd_eh_device_reset_handler(struct scsi_cmnd *cmd)
239     {
240     struct Scsi_Host *host;
241     struct ufs_hba *hba;
242     - unsigned int tag;
243     u32 pos;
244     int err;
245     - u8 resp = 0xF;
246     - struct ufshcd_lrb *lrbp;
247     + u8 resp = 0xF, lun;
248     unsigned long flags;
249    
250     host = cmd->device->host;
251     hba = shost_priv(host);
252     - tag = cmd->request->tag;
253    
254     - lrbp = &hba->lrb[tag];
255     - err = ufshcd_issue_tm_cmd(hba, lrbp->lun, 0, UFS_LOGICAL_RESET, &resp);
256     + lun = ufshcd_scsi_to_upiu_lun(cmd->device->lun);
257     + err = ufshcd_issue_tm_cmd(hba, lun, 0, UFS_LOGICAL_RESET, &resp);
258     if (err || resp != UPIU_TASK_MANAGEMENT_FUNC_COMPL) {
259     if (!err)
260     err = resp;
261     @@ -4573,7 +4570,7 @@ static int ufshcd_eh_device_reset_handler(struct scsi_cmnd *cmd)
262    
263     /* clear the commands that were pending for corresponding LUN */
264     for_each_set_bit(pos, &hba->outstanding_reqs, hba->nutrs) {
265     - if (hba->lrb[pos].lun == lrbp->lun) {
266     + if (hba->lrb[pos].lun == lun) {
267     err = ufshcd_clear_cmd(hba, pos);
268     if (err)
269     break;
270     diff --git a/drivers/usb/gadget/udc/bdc/Kconfig b/drivers/usb/gadget/udc/bdc/Kconfig
271     index 0d7b8c9f72fda..778df4badf888 100644
272     --- a/drivers/usb/gadget/udc/bdc/Kconfig
273     +++ b/drivers/usb/gadget/udc/bdc/Kconfig
274     @@ -14,7 +14,7 @@ if USB_BDC_UDC
275     comment "Platform Support"
276     config USB_BDC_PCI
277     tristate "BDC support for PCIe based platforms"
278     - depends on PCI
279     + depends on PCI && BROKEN
280     default USB_BDC_UDC
281     help
282     Enable support for platforms which have BDC connected through PCIe, such as Lego3 FPGA platform.
283     diff --git a/drivers/usb/gadget/udc/core.c b/drivers/usb/gadget/udc/core.c
284     index 99c7cf4822c33..34ad964d54d11 100644
285     --- a/drivers/usb/gadget/udc/core.c
286     +++ b/drivers/usb/gadget/udc/core.c
287     @@ -1424,10 +1424,13 @@ static ssize_t usb_udc_softconn_store(struct device *dev,
288     struct device_attribute *attr, const char *buf, size_t n)
289     {
290     struct usb_udc *udc = container_of(dev, struct usb_udc, dev);
291     + ssize_t ret;
292    
293     + mutex_lock(&udc_lock);
294     if (!udc->driver) {
295     dev_err(dev, "soft-connect without a gadget driver\n");
296     - return -EOPNOTSUPP;
297     + ret = -EOPNOTSUPP;
298     + goto out;
299     }
300    
301     if (sysfs_streq(buf, "connect")) {
302     @@ -1439,10 +1442,14 @@ static ssize_t usb_udc_softconn_store(struct device *dev,
303     usb_gadget_udc_stop(udc);
304     } else {
305     dev_err(dev, "unsupported command '%s'\n", buf);
306     - return -EINVAL;
307     + ret = -EINVAL;
308     + goto out;
309     }
310    
311     - return n;
312     + ret = n;
313     +out:
314     + mutex_unlock(&udc_lock);
315     + return ret;
316     }
317     static DEVICE_ATTR(soft_connect, S_IWUSR, NULL, usb_udc_softconn_store);
318    
319     diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
320     index b3d6cc1a8021b..52c4176afae96 100644
321     --- a/drivers/usb/host/ehci-hcd.c
322     +++ b/drivers/usb/host/ehci-hcd.c
323     @@ -587,6 +587,7 @@ static int ehci_run (struct usb_hcd *hcd)
324     struct ehci_hcd *ehci = hcd_to_ehci (hcd);
325     u32 temp;
326     u32 hcc_params;
327     + int rc;
328    
329     hcd->uses_new_polling = 1;
330    
331     @@ -642,9 +643,20 @@ static int ehci_run (struct usb_hcd *hcd)
332     down_write(&ehci_cf_port_reset_rwsem);
333     ehci->rh_state = EHCI_RH_RUNNING;
334     ehci_writel(ehci, FLAG_CF, &ehci->regs->configured_flag);
335     +
336     + /* Wait until HC become operational */
337     ehci_readl(ehci, &ehci->regs->command); /* unblock posted writes */
338     msleep(5);
339     + rc = ehci_handshake(ehci, &ehci->regs->status, STS_HALT, 0, 100 * 1000);
340     +
341     up_write(&ehci_cf_port_reset_rwsem);
342     +
343     + if (rc) {
344     + ehci_err(ehci, "USB %x.%x, controller refused to start: %d\n",
345     + ((ehci->sbrn & 0xf0)>>4), (ehci->sbrn & 0x0f), rc);
346     + return rc;
347     + }
348     +
349     ehci->last_periodic_enable = ktime_get_real();
350    
351     temp = HC_VERSION(ehci, ehci_readl(ehci, &ehci->caps->hc_capbase));
352     diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c
353     index 3a3926ff7b857..643c427bb2773 100644
354     --- a/drivers/usb/host/ehci-hub.c
355     +++ b/drivers/usb/host/ehci-hub.c
356     @@ -350,6 +350,9 @@ static int ehci_bus_suspend (struct usb_hcd *hcd)
357    
358     unlink_empty_async_suspended(ehci);
359    
360     + /* Some Synopsys controllers mistakenly leave IAA turned on */
361     + ehci_writel(ehci, STS_IAA, &ehci->regs->status);
362     +
363     /* Any IAA cycle that started before the suspend is now invalid */
364     end_iaa_cycle(ehci);
365     ehci_handle_start_intr_unlinks(ehci);
366     diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
367     index 1468dca77facf..6e1d65fda97e0 100644
368     --- a/drivers/usb/host/xhci-ring.c
369     +++ b/drivers/usb/host/xhci-ring.c
370     @@ -2851,6 +2851,8 @@ static void queue_trb(struct xhci_hcd *xhci, struct xhci_ring *ring,
371     trb->field[0] = cpu_to_le32(field1);
372     trb->field[1] = cpu_to_le32(field2);
373     trb->field[2] = cpu_to_le32(field3);
374     + /* make sure TRB is fully written before giving it to the controller */
375     + wmb();
376     trb->field[3] = cpu_to_le32(field4);
377     inc_enq(xhci, ring, more_trbs_coming);
378     }
379     diff --git a/drivers/usb/host/xhci-tegra.c b/drivers/usb/host/xhci-tegra.c
380     index 97d57a94776ac..040c43097d558 100644
381     --- a/drivers/usb/host/xhci-tegra.c
382     +++ b/drivers/usb/host/xhci-tegra.c
383     @@ -579,6 +579,13 @@ static void tegra_xusb_mbox_handle(struct tegra_xusb *tegra,
384     enable);
385     if (err < 0)
386     break;
387     +
388     + /*
389     + * wait 500us for LFPS detector to be disabled before
390     + * sending ACK
391     + */
392     + if (!enable)
393     + usleep_range(500, 1000);
394     }
395    
396     if (err < 0) {
397     diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h
398     index 61650c1830d45..d830eddacdc60 100644
399     --- a/include/linux/compiler-gcc.h
400     +++ b/include/linux/compiler-gcc.h
401     @@ -149,6 +149,12 @@
402    
403     #if GCC_VERSION < 30200
404     # error Sorry, your compiler is too old - please upgrade it.
405     +#elif defined(CONFIG_ARM64) && GCC_VERSION < 50100 && !defined(__clang__)
406     +/*
407     + * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63293
408     + * https://lore.kernel.org/r/20210107111841.GN1551@shell.armlinux.org.uk
409     + */
410     +# error Sorry, your version of GCC is too old - please use 5.1 or newer.
411     #endif
412    
413     #if GCC_VERSION < 30300
414     diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
415     index 335c00209f746..78bdfbefd996c 100644
416     --- a/kernel/bpf/verifier.c
417     +++ b/kernel/bpf/verifier.c
418     @@ -1732,12 +1732,11 @@ static void adjust_reg_min_max_vals(struct bpf_verifier_env *env,
419     * unsigned shift, so make the appropriate casts.
420     */
421     if (min_val < 0 || dst_reg->min_value < 0)
422     - dst_reg->min_value = BPF_REGISTER_MIN_RANGE;
423     + reset_reg_range_values(regs, insn->dst_reg);
424     else
425     - dst_reg->min_value =
426     - (u64)(dst_reg->min_value) >> min_val;
427     + dst_reg->min_value = (u64)(dst_reg->min_value) >> max_val;
428     if (dst_reg->max_value != BPF_REGISTER_MAX_RANGE)
429     - dst_reg->max_value >>= max_val;
430     + dst_reg->max_value >>= min_val;
431     break;
432     default:
433     reset_reg_range_values(regs, insn->dst_reg);
434     diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
435     index 55f60d2edc3fb..4ec8bf634f89f 100644
436     --- a/kernel/trace/ring_buffer.c
437     +++ b/kernel/trace/ring_buffer.c
438     @@ -4289,6 +4289,8 @@ void ring_buffer_reset_cpu(struct ring_buffer *buffer, int cpu)
439    
440     if (!cpumask_test_cpu(cpu, buffer->cpumask))
441     return;
442     + /* prevent another thread from changing buffer sizes */
443     + mutex_lock(&buffer->mutex);
444    
445     atomic_inc(&buffer->resize_disabled);
446     atomic_inc(&cpu_buffer->record_disabled);
447     @@ -4312,6 +4314,8 @@ void ring_buffer_reset_cpu(struct ring_buffer *buffer, int cpu)
448    
449     atomic_dec(&cpu_buffer->record_disabled);
450     atomic_dec(&buffer->resize_disabled);
451     +
452     + mutex_unlock(&buffer->mutex);
453     }
454     EXPORT_SYMBOL_GPL(ring_buffer_reset_cpu);
455    
456     diff --git a/mm/slub.c b/mm/slub.c
457     index 7ccfc043c28e2..5c48a8a0524a2 100644
458     --- a/mm/slub.c
459     +++ b/mm/slub.c
460     @@ -5648,10 +5648,8 @@ static int sysfs_slab_add(struct kmem_cache *s)
461    
462     s->kobj.kset = cache_kset(s);
463     err = kobject_init_and_add(&s->kobj, &slab_ktype, NULL, "%s", name);
464     - if (err) {
465     - kobject_put(&s->kobj);
466     + if (err)
467     goto out;
468     - }
469    
470     err = sysfs_create_group(&s->kobj, &slab_attr_group);
471     if (err)
472     diff --git a/net/core/skbuff.c b/net/core/skbuff.c
473     index 5582a4ed7c2fb..79034fb861b52 100644
474     --- a/net/core/skbuff.c
475     +++ b/net/core/skbuff.c
476     @@ -428,7 +428,11 @@ struct sk_buff *__netdev_alloc_skb(struct net_device *dev, unsigned int len,
477    
478     len += NET_SKB_PAD;
479    
480     - if ((len > SKB_WITH_OVERHEAD(PAGE_SIZE)) ||
481     + /* If requested length is either too small or too big,
482     + * we use kmalloc() for skb->head allocation.
483     + */
484     + if (len <= SKB_WITH_OVERHEAD(1024) ||
485     + len > SKB_WITH_OVERHEAD(PAGE_SIZE) ||
486     (gfp_mask & (__GFP_DIRECT_RECLAIM | GFP_DMA))) {
487     skb = __alloc_skb(len, gfp_mask, SKB_ALLOC_RX, NUMA_NO_NODE);
488     if (!skb)
489     diff --git a/net/ipv4/netfilter/ipt_rpfilter.c b/net/ipv4/netfilter/ipt_rpfilter.c
490     index 78cc64eddfc18..32a363465e0a4 100644
491     --- a/net/ipv4/netfilter/ipt_rpfilter.c
492     +++ b/net/ipv4/netfilter/ipt_rpfilter.c
493     @@ -92,7 +92,7 @@ static bool rpfilter_mt(const struct sk_buff *skb, struct xt_action_param *par)
494     flow.saddr = rpfilter_get_saddr(iph->daddr);
495     flow.flowi4_oif = 0;
496     flow.flowi4_mark = info->flags & XT_RPFILTER_VALID_MARK ? skb->mark : 0;
497     - flow.flowi4_tos = RT_TOS(iph->tos);
498     + flow.flowi4_tos = iph->tos & IPTOS_RT_MASK;
499     flow.flowi4_scope = RT_SCOPE_UNIVERSE;
500    
501     return rpfilter_lookup_reverse(par->net, &flow, par->in, info->flags) ^ invert;
502     diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
503     index a4c00242a90b3..6119ab33a56ea 100644
504     --- a/net/ipv6/addrconf.c
505     +++ b/net/ipv6/addrconf.c
506     @@ -2285,6 +2285,7 @@ static void addrconf_add_mroute(struct net_device *dev)
507     .fc_dst_len = 8,
508     .fc_flags = RTF_UP,
509     .fc_nlinfo.nl_net = dev_net(dev),
510     + .fc_protocol = RTPROT_KERNEL,
511     };
512    
513     ipv6_addr_set(&cfg.fc_dst, htonl(0xFF000000), 0, 0, 0);
514     diff --git a/net/sched/cls_tcindex.c b/net/sched/cls_tcindex.c
515     index ab66e2b38e662..70ee78d8f8fb8 100644
516     --- a/net/sched/cls_tcindex.c
517     +++ b/net/sched/cls_tcindex.c
518     @@ -307,9 +307,13 @@ tcindex_set_parms(struct net *net, struct tcf_proto *tp, unsigned long base,
519     if (tb[TCA_TCINDEX_MASK])
520     cp->mask = nla_get_u16(tb[TCA_TCINDEX_MASK]);
521    
522     - if (tb[TCA_TCINDEX_SHIFT])
523     + if (tb[TCA_TCINDEX_SHIFT]) {
524     cp->shift = nla_get_u32(tb[TCA_TCINDEX_SHIFT]);
525     -
526     + if (cp->shift > 16) {
527     + err = -EINVAL;
528     + goto errout;
529     + }
530     + }
531     if (!cp->hash) {
532     /* Hash not specified, use perfect hash if the upper limit
533     * of the hashing index is below the threshold.
534     diff --git a/sound/core/seq/oss/seq_oss_synth.c b/sound/core/seq/oss/seq_oss_synth.c
535     index c939459172353..247b68790a522 100644
536     --- a/sound/core/seq/oss/seq_oss_synth.c
537     +++ b/sound/core/seq/oss/seq_oss_synth.c
538     @@ -624,7 +624,8 @@ snd_seq_oss_synth_make_info(struct seq_oss_devinfo *dp, int dev, struct synth_in
539    
540     if (info->is_midi) {
541     struct midi_info minf;
542     - snd_seq_oss_midi_make_info(dp, info->midi_mapped, &minf);
543     + if (snd_seq_oss_midi_make_info(dp, info->midi_mapped, &minf))
544     + return -ENXIO;
545     inf->synth_type = SYNTH_TYPE_MIDI;
546     inf->synth_subtype = 0;
547     inf->nr_voices = 16;
548     diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c
549     index fc30d1e8aa76a..9dd104c308e1d 100644
550     --- a/sound/pci/hda/patch_via.c
551     +++ b/sound/pci/hda/patch_via.c
552     @@ -135,6 +135,7 @@ static struct via_spec *via_new_spec(struct hda_codec *codec)
553     spec->codec_type = VT1708S;
554     spec->gen.indep_hp = 1;
555     spec->gen.keep_eapd_on = 1;
556     + spec->gen.dac_min_mute = 1;
557     spec->gen.pcm_playback_hook = via_playback_pcm_hook;
558     spec->gen.add_stereo_mix_input = HDA_HINT_STEREO_MIX_AUTO;
559     codec->power_save_node = 1;
560     diff --git a/sound/soc/intel/boards/haswell.c b/sound/soc/intel/boards/haswell.c
561     index 11d0cc2b0e390..060da95770416 100644
562     --- a/sound/soc/intel/boards/haswell.c
563     +++ b/sound/soc/intel/boards/haswell.c
564     @@ -197,6 +197,7 @@ static struct platform_driver haswell_audio = {
565     .probe = haswell_audio_probe,
566     .driver = {
567     .name = "haswell-audio",
568     + .pm = &snd_soc_pm_ops,
569     },
570     };
571