This is the 4.9.254 stable release
-----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAmAVUMoACgkQONu9yGCS aT4VyQ//f1tNWlE8cjZhCjayyZ9iMN7UC052QTEv1ghBCC8VHHHgOe4HAGeb3Teq PwvWM7X3QfNOF1kSLouqKPuFfHSh5ilgqGYiBoSBKJ8ajG77N6xRzhg2hZJvJ3rQ 9kU3RcIC+gZcCKIbw3l1vyw7DxZ8qBFosCmg5uhWDx4/4/IMLXkkLwFP9pX9/nrP xudaWaUtoCAGvFzxTKILLnr+k2IEASrUuF1IYG0o4yHPFdB0GT0ayLDl0KVx3EPB HpWBhf0LIsV1OXssac+tgnSsRrUSaut/4SBtt0/WLGEvg8YLJMJljKP0XgggdJC8 Vl4B4KOT7dZTjHaWAuY56T+XWrpcSoN2lqc4f+uTx40o30TMYVUf8xKRVUolTADn 8dRDgcCwmdJd3d6/Pb5RVrqOtnhOjjsKsTo2d0o8O6pC/G+l7rdHaLKJQJ04bM6y hGpAK1OCofylJRzEMsN0P17jhFkwheBMFEqkhWkvTvDklqBkg3vWYEzbgvR3ce12 SLkRYk6u7HHHtLx1A11cHkgZMAoub52UGRaHaSpoHVFavoB/hKazY8bfv7OkMkXH vOjOoyBzFEHlx7TGx0SBQSC8fTWqqgX45YzmcXCR6FTwF/xuWUj4GRqecHWWAma1 nxfyG2pLxfGUIQJ0YhamxtYNocWXbdigV+HLroTWIkfAOoEbPUs= =biLR -----END PGP SIGNATURE----- Merge 4.9.254 into android-4.9-q Changes in 4.9.254 ALSA: seq: oss: Fix missing error check in snd_seq_oss_synth_make_info() ALSA: hda/via: Add minimum mute flag ACPI: scan: Make acpi_bus_get_device() clear return pointer on error dm: avoid filesystem lookup in dm_get_dev_t() ASoC: Intel: haswell: Add missing pm_ops scsi: ufs: Correct the LUN used in eh_device_reset_handler() callback drm/nouveau/bios: fix issue shadowing expansion ROMs drm/nouveau/i2c/gm200: increase width of aux semaphore owner fields i2c: octeon: check correct size of maximum RECV_LEN packet can: dev: can_restart: fix use after free bug iio: ad5504: Fix setting power-down state stm class: Fix module init return on allocation failure ehci: fix EHCI host controller initialization sequence USB: ehci: fix an interrupt calltrace error usb: udc: core: Use lock when write to soft_connect usb: bdc: Make bdc pci driver depend on BROKEN xhci: make sure TRB is fully written before giving it to the controller xhci: tegra: Delay for disabling LFPS detector bpf: Fix buggy rsh min/max bounds tracking compiler.h: Raise minimum version of GCC to 5.1 for arm64 netfilter: rpfilter: mask ecn bits before fib lookup sh: dma: fix kconfig dependency for G2_DMA sh_eth: Fix power down vs. is_opened flag ordering skbuff: back tiny skbs with kmalloc() in __netdev_alloc_skb() too ipv6: create multicast route with RTPROT_KERNEL net_sched: avoid shift-out-of-bounds in tcindex_set_parms() net: dsa: b53: fix an off by one in checking "vlan->vid" Revert "mm/slub: fix a memory leak in sysfs_slab_add()" tracing: Fix race in trace_open and buffer resize call x86/boot/compressed: Disable relocation relaxation Linux 4.9.254 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: Ia82c45de91144860bbaeefdac0566b77f8619fc6
This commit is contained in:
commit
ce53f891b7
31 changed files with 105 additions and 44 deletions
2
Makefile
2
Makefile
|
|
@ -1,6 +1,6 @@
|
|||
VERSION = 4
|
||||
PATCHLEVEL = 9
|
||||
SUBLEVEL = 253
|
||||
SUBLEVEL = 254
|
||||
EXTRAVERSION =
|
||||
NAME = Roaring Lionus
|
||||
|
||||
|
|
|
|||
|
|
@ -62,8 +62,7 @@ config PVR2_DMA
|
|||
|
||||
config G2_DMA
|
||||
tristate "G2 Bus DMA support"
|
||||
depends on SH_DREAMCAST
|
||||
select SH_DMA_API
|
||||
depends on SH_DREAMCAST && SH_DMA_API
|
||||
help
|
||||
This enables support for the DMA controller for the Dreamcast's
|
||||
G2 bus. Drivers that want this will generally enable this on
|
||||
|
|
|
|||
|
|
@ -35,6 +35,8 @@ KBUILD_CFLAGS += -mno-mmx -mno-sse
|
|||
KBUILD_CFLAGS += $(call cc-option,-ffreestanding)
|
||||
KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector)
|
||||
KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member)
|
||||
# Disable relocation relaxation in case the link is not PIE.
|
||||
KBUILD_CFLAGS += $(call as-option,-Wa$(comma)-mrelax-relocations=no)
|
||||
|
||||
KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
|
||||
GCOV_PROFILE := n
|
||||
|
|
|
|||
|
|
@ -585,6 +585,8 @@ static int acpi_get_device_data(acpi_handle handle, struct acpi_device **device,
|
|||
if (!device)
|
||||
return -EINVAL;
|
||||
|
||||
*device = NULL;
|
||||
|
||||
status = acpi_get_data_full(handle, acpi_scan_drop_device,
|
||||
(void **)device, callback);
|
||||
if (ACPI_FAILURE(status) || !*device) {
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ shadow_image(struct nvkm_bios *bios, int idx, u32 offset, struct shadow *mthd)
|
|||
nvkm_debug(subdev, "%08x: type %02x, %d bytes\n",
|
||||
image.base, image.type, image.size);
|
||||
|
||||
if (!shadow_fetch(bios, mthd, image.size)) {
|
||||
if (!shadow_fetch(bios, mthd, image.base + image.size)) {
|
||||
nvkm_debug(subdev, "%08x: fetch failed\n", image.base);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ static void
|
|||
gm200_i2c_aux_fini(struct gm200_i2c_aux *aux)
|
||||
{
|
||||
struct nvkm_device *device = aux->base.pad->i2c->subdev.device;
|
||||
nvkm_mask(device, 0x00d954 + (aux->ch * 0x50), 0x00310000, 0x00000000);
|
||||
nvkm_mask(device, 0x00d954 + (aux->ch * 0x50), 0x00710000, 0x00000000);
|
||||
}
|
||||
|
||||
static int
|
||||
|
|
@ -54,10 +54,10 @@ gm200_i2c_aux_init(struct gm200_i2c_aux *aux)
|
|||
AUX_ERR(&aux->base, "begin idle timeout %08x", ctrl);
|
||||
return -EBUSY;
|
||||
}
|
||||
} while (ctrl & 0x03010000);
|
||||
} while (ctrl & 0x07010000);
|
||||
|
||||
/* set some magic, and wait up to 1ms for it to appear */
|
||||
nvkm_mask(device, 0x00d954 + (aux->ch * 0x50), 0x00300000, ureq);
|
||||
nvkm_mask(device, 0x00d954 + (aux->ch * 0x50), 0x00700000, ureq);
|
||||
timeout = 1000;
|
||||
do {
|
||||
ctrl = nvkm_rd32(device, 0x00d954 + (aux->ch * 0x50));
|
||||
|
|
@ -67,7 +67,7 @@ gm200_i2c_aux_init(struct gm200_i2c_aux *aux)
|
|||
gm200_i2c_aux_fini(aux);
|
||||
return -EBUSY;
|
||||
}
|
||||
} while ((ctrl & 0x03000000) != urep);
|
||||
} while ((ctrl & 0x07000000) != urep);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ static void stm_heartbeat_unlink(struct stm_source_data *data)
|
|||
|
||||
static int stm_heartbeat_init(void)
|
||||
{
|
||||
int i, ret = -ENOMEM;
|
||||
int i, ret;
|
||||
|
||||
if (nr_devs < 0 || nr_devs > STM_HEARTBEAT_MAX)
|
||||
return -EINVAL;
|
||||
|
|
@ -80,8 +80,10 @@ static int stm_heartbeat_init(void)
|
|||
for (i = 0; i < nr_devs; i++) {
|
||||
stm_heartbeat[i].data.name =
|
||||
kasprintf(GFP_KERNEL, "heartbeat.%d", i);
|
||||
if (!stm_heartbeat[i].data.name)
|
||||
if (!stm_heartbeat[i].data.name) {
|
||||
ret = -ENOMEM;
|
||||
goto fail_unregister;
|
||||
}
|
||||
|
||||
stm_heartbeat[i].data.nr_chans = 1;
|
||||
stm_heartbeat[i].data.link = stm_heartbeat_link;
|
||||
|
|
|
|||
|
|
@ -383,7 +383,7 @@ static int octeon_i2c_read(struct octeon_i2c *i2c, int target,
|
|||
|
||||
data[i] = octeon_i2c_data_read(i2c);
|
||||
if (recv_len && i == 0) {
|
||||
if (data[i] > I2C_SMBUS_BLOCK_MAX + 1)
|
||||
if (data[i] > I2C_SMBUS_BLOCK_MAX)
|
||||
return -EPROTO;
|
||||
length += data[i];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -189,9 +189,9 @@ static ssize_t ad5504_write_dac_powerdown(struct iio_dev *indio_dev,
|
|||
return ret;
|
||||
|
||||
if (pwr_down)
|
||||
st->pwr_down_mask |= (1 << chan->channel);
|
||||
else
|
||||
st->pwr_down_mask &= ~(1 << chan->channel);
|
||||
else
|
||||
st->pwr_down_mask |= (1 << chan->channel);
|
||||
|
||||
ret = ad5504_spi_write(st, AD5504_ADDR_CTRL,
|
||||
AD5504_DAC_PWRDWN_MODE(st->pwr_down_mode) |
|
||||
|
|
|
|||
|
|
@ -397,14 +397,23 @@ int dm_get_device(struct dm_target *ti, const char *path, fmode_t mode,
|
|||
{
|
||||
int r;
|
||||
dev_t dev;
|
||||
unsigned int major, minor;
|
||||
char dummy;
|
||||
struct dm_dev_internal *dd;
|
||||
struct dm_table *t = ti->table;
|
||||
|
||||
BUG_ON(!t);
|
||||
|
||||
dev = dm_get_dev_t(path);
|
||||
if (!dev)
|
||||
return -ENODEV;
|
||||
if (sscanf(path, "%u:%u%c", &major, &minor, &dummy) == 2) {
|
||||
/* Extract the major/minor numbers */
|
||||
dev = MKDEV(major, minor);
|
||||
if (MAJOR(dev) != major || MINOR(dev) != minor)
|
||||
return -EOVERFLOW;
|
||||
} else {
|
||||
dev = dm_get_dev_t(path);
|
||||
if (!dev)
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
dd = find_device(&t->devices, dev);
|
||||
if (!dd) {
|
||||
|
|
|
|||
|
|
@ -555,11 +555,11 @@ static void can_restart(struct net_device *dev)
|
|||
}
|
||||
cf->can_id |= CAN_ERR_RESTARTED;
|
||||
|
||||
netif_rx_ni(skb);
|
||||
|
||||
stats->rx_packets++;
|
||||
stats->rx_bytes += cf->can_dlc;
|
||||
|
||||
netif_rx_ni(skb);
|
||||
|
||||
restart:
|
||||
netdev_dbg(dev, "restarted\n");
|
||||
priv->can_stats.restarts++;
|
||||
|
|
|
|||
|
|
@ -946,7 +946,7 @@ static int b53_vlan_prepare(struct dsa_switch *ds, int port,
|
|||
if ((is5325(dev) || is5365(dev)) && vlan->vid_begin == 0)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (vlan->vid_end > dev->num_vlans)
|
||||
if (vlan->vid_end >= dev->num_vlans)
|
||||
return -ERANGE;
|
||||
|
||||
b53_enable_vlan(dev, true);
|
||||
|
|
|
|||
|
|
@ -2411,10 +2411,10 @@ static int sh_eth_close(struct net_device *ndev)
|
|||
/* Free all the skbuffs in the Rx queue and the DMA buffer. */
|
||||
sh_eth_ring_free(ndev);
|
||||
|
||||
pm_runtime_put_sync(&mdp->pdev->dev);
|
||||
|
||||
mdp->is_opened = 0;
|
||||
|
||||
pm_runtime_put(&mdp->pdev->dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -4581,19 +4581,16 @@ static int ufshcd_eh_device_reset_handler(struct scsi_cmnd *cmd)
|
|||
{
|
||||
struct Scsi_Host *host;
|
||||
struct ufs_hba *hba;
|
||||
unsigned int tag;
|
||||
u32 pos;
|
||||
int err;
|
||||
u8 resp = 0xF;
|
||||
struct ufshcd_lrb *lrbp;
|
||||
u8 resp = 0xF, lun;
|
||||
unsigned long flags;
|
||||
|
||||
host = cmd->device->host;
|
||||
hba = shost_priv(host);
|
||||
tag = cmd->request->tag;
|
||||
|
||||
lrbp = &hba->lrb[tag];
|
||||
err = ufshcd_issue_tm_cmd(hba, lrbp->lun, 0, UFS_LOGICAL_RESET, &resp);
|
||||
lun = ufshcd_scsi_to_upiu_lun(cmd->device->lun);
|
||||
err = ufshcd_issue_tm_cmd(hba, lun, 0, UFS_LOGICAL_RESET, &resp);
|
||||
if (err || resp != UPIU_TASK_MANAGEMENT_FUNC_COMPL) {
|
||||
if (!err)
|
||||
err = resp;
|
||||
|
|
@ -4602,7 +4599,7 @@ static int ufshcd_eh_device_reset_handler(struct scsi_cmnd *cmd)
|
|||
|
||||
/* clear the commands that were pending for corresponding LUN */
|
||||
for_each_set_bit(pos, &hba->outstanding_reqs, hba->nutrs) {
|
||||
if (hba->lrb[pos].lun == lrbp->lun) {
|
||||
if (hba->lrb[pos].lun == lun) {
|
||||
err = ufshcd_clear_cmd(hba, pos);
|
||||
if (err)
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ if USB_BDC_UDC
|
|||
comment "Platform Support"
|
||||
config USB_BDC_PCI
|
||||
tristate "BDC support for PCIe based platforms"
|
||||
depends on PCI
|
||||
depends on PCI && BROKEN
|
||||
default USB_BDC_UDC
|
||||
help
|
||||
Enable support for platforms which have BDC connected through PCIe, such as Lego3 FPGA platform.
|
||||
|
|
|
|||
|
|
@ -1424,10 +1424,13 @@ static ssize_t usb_udc_softconn_store(struct device *dev,
|
|||
struct device_attribute *attr, const char *buf, size_t n)
|
||||
{
|
||||
struct usb_udc *udc = container_of(dev, struct usb_udc, dev);
|
||||
ssize_t ret;
|
||||
|
||||
mutex_lock(&udc_lock);
|
||||
if (!udc->driver) {
|
||||
dev_err(dev, "soft-connect without a gadget driver\n");
|
||||
return -EOPNOTSUPP;
|
||||
ret = -EOPNOTSUPP;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (sysfs_streq(buf, "connect")) {
|
||||
|
|
@ -1439,10 +1442,14 @@ static ssize_t usb_udc_softconn_store(struct device *dev,
|
|||
usb_gadget_udc_stop(udc);
|
||||
} else {
|
||||
dev_err(dev, "unsupported command '%s'\n", buf);
|
||||
return -EINVAL;
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
return n;
|
||||
ret = n;
|
||||
out:
|
||||
mutex_unlock(&udc_lock);
|
||||
return ret;
|
||||
}
|
||||
static DEVICE_ATTR(soft_connect, S_IWUSR, NULL, usb_udc_softconn_store);
|
||||
|
||||
|
|
|
|||
|
|
@ -587,6 +587,7 @@ static int ehci_run (struct usb_hcd *hcd)
|
|||
struct ehci_hcd *ehci = hcd_to_ehci (hcd);
|
||||
u32 temp;
|
||||
u32 hcc_params;
|
||||
int rc;
|
||||
|
||||
hcd->uses_new_polling = 1;
|
||||
|
||||
|
|
@ -642,9 +643,20 @@ static int ehci_run (struct usb_hcd *hcd)
|
|||
down_write(&ehci_cf_port_reset_rwsem);
|
||||
ehci->rh_state = EHCI_RH_RUNNING;
|
||||
ehci_writel(ehci, FLAG_CF, &ehci->regs->configured_flag);
|
||||
|
||||
/* Wait until HC become operational */
|
||||
ehci_readl(ehci, &ehci->regs->command); /* unblock posted writes */
|
||||
msleep(5);
|
||||
rc = ehci_handshake(ehci, &ehci->regs->status, STS_HALT, 0, 100 * 1000);
|
||||
|
||||
up_write(&ehci_cf_port_reset_rwsem);
|
||||
|
||||
if (rc) {
|
||||
ehci_err(ehci, "USB %x.%x, controller refused to start: %d\n",
|
||||
((ehci->sbrn & 0xf0)>>4), (ehci->sbrn & 0x0f), rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
ehci->last_periodic_enable = ktime_get_real();
|
||||
|
||||
temp = HC_VERSION(ehci, ehci_readl(ehci, &ehci->caps->hc_capbase));
|
||||
|
|
|
|||
|
|
@ -350,6 +350,9 @@ static int ehci_bus_suspend (struct usb_hcd *hcd)
|
|||
|
||||
unlink_empty_async_suspended(ehci);
|
||||
|
||||
/* Some Synopsys controllers mistakenly leave IAA turned on */
|
||||
ehci_writel(ehci, STS_IAA, &ehci->regs->status);
|
||||
|
||||
/* Any IAA cycle that started before the suspend is now invalid */
|
||||
end_iaa_cycle(ehci);
|
||||
ehci_handle_start_intr_unlinks(ehci);
|
||||
|
|
|
|||
|
|
@ -2851,6 +2851,8 @@ static void queue_trb(struct xhci_hcd *xhci, struct xhci_ring *ring,
|
|||
trb->field[0] = cpu_to_le32(field1);
|
||||
trb->field[1] = cpu_to_le32(field2);
|
||||
trb->field[2] = cpu_to_le32(field3);
|
||||
/* make sure TRB is fully written before giving it to the controller */
|
||||
wmb();
|
||||
trb->field[3] = cpu_to_le32(field4);
|
||||
inc_enq(xhci, ring, more_trbs_coming);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -579,6 +579,13 @@ static void tegra_xusb_mbox_handle(struct tegra_xusb *tegra,
|
|||
enable);
|
||||
if (err < 0)
|
||||
break;
|
||||
|
||||
/*
|
||||
* wait 500us for LFPS detector to be disabled before
|
||||
* sending ACK
|
||||
*/
|
||||
if (!enable)
|
||||
usleep_range(500, 1000);
|
||||
}
|
||||
|
||||
if (err < 0) {
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue