Linux 4.19.180
[email protected]
maintainerFrom: Greg Kroah-Hartman <[email protected]>
I'm announcing the release of the 4.19.180 kernel.
All users of the 4.19 kernel series must upgrade.
The updated 4.19.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.19.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 arch/um/drivers/ubd_kern.c | 2 block/genhd.c | 19 ++- drivers/base/power/runtime.c | 62 +++++---- drivers/block/aoe/aoe.h | 1 drivers/block/aoe/aoeblk.c | 21 +-- drivers/block/aoe/aoedev.c | 1 drivers/block/floppy.c | 2 drivers/block/mtip32xx/mtip32xx.c | 2 drivers/block/ps3disk.c | 2 drivers/block/ps3vram.c | 2 drivers/block/rsxx/core.c | 8 - drivers/block/rsxx/dev.c | 2 drivers/block/skd_main.c | 2 drivers/block/sunvdc.c | 2 drivers/block/virtio_blk.c | 68 ++++++---- drivers/block/xen-blkfront.c | 2 drivers/block/zram/zram_drv.c | 4 drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 4 drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 2 drivers/hid/hid-ids.h | 1 drivers/hid/hid-mf.c | 2 drivers/hid/hid-quirks.c | 2 drivers/ide/ide-cd.c | 2 drivers/ide/ide-gd.c | 2 drivers/infiniband/sw/rxe/Kconfig | 1 drivers/iommu/amd_iommu.c | 10 - drivers/md/dm-bufio.c | 4 drivers/md/dm-table.c | 174 +++++++++++----------------- drivers/md/dm-verity-fec.c | 23 +-- drivers/media/pci/cx23885/cx23885-core.c | 4 drivers/memstick/core/ms_block.c | 2 drivers/memstick/core/mspro_block.c | 2 drivers/misc/eeprom/eeprom_93xx46.c | 15 ++ drivers/mmc/core/block.c | 2 drivers/mmc/host/sdhci-of-dwcmshc.c | 1 drivers/mtd/mtd_blkdevs.c | 2 drivers/net/ethernet/realtek/r8169.c | 2 drivers/net/wireless/marvell/mwifiex/pcie.c | 18 ++ drivers/net/wireless/marvell/mwifiex/pcie.h | 2 drivers/nvdimm/blk.c | 2 drivers/nvdimm/btt.c | 2 drivers/nvdimm/pmem.c | 2 drivers/nvme/host/core.c | 21 +-- drivers/nvme/host/lightnvm.c | 105 +++++++--------- drivers/nvme/host/multipath.c | 15 -- drivers/nvme/host/nvme.h | 10 - drivers/pci/quirks.c | 3 drivers/platform/x86/acer-wmi.c | 169 ++++++++++++++++++++++----- drivers/s390/block/dasd_genhd.c | 2 drivers/s390/block/dcssblk.c | 2 drivers/s390/block/scm_blk.c | 2 drivers/scsi/sd.c | 2 drivers/scsi/sr.c | 2 fs/btrfs/delayed-inode.c | 2 fs/btrfs/file.c | 5 fs/btrfs/ioctl.c | 19 ++- fs/btrfs/raid56.c | 58 ++++----- include/linux/eeprom_93xx46.h | 2 include/linux/genhd.h | 5 net/dsa/Kconfig | 1 net/dsa/dsa.c | 2 net/dsa/dsa_priv.h | 3 net/dsa/slave.c | 10 + sound/pci/ctxfi/cthw20k2.c | 2 sound/soc/intel/boards/bytcr_rt5640.c | 12 + tools/usb/usbip/libsrc/usbip_host_common.c | 2 67 files changed, 555 insertions(+), 388 deletions(-)
Alexander Lobakin (1):
net: dsa: add GRO support via gro_cells
Andrey Ryabinin (1):
iommu/amd: Fix sleeping in atomic in increase_address_space()
AngeloGioacchino Del Regno (1):
drm/msm/a5xx: Remove overwriting A5XX_PC_DBG_ECO_CNTL register
Antonio Borneo (1):
usbip: tools: fix build error for multiple definition
Aswath Govindraju (1):
misc: eeprom_93xx46: Add quirk to support Microchip 93LC46B eeprom
Bjorn Helgaas (1):
PCI: Add function 1 DMA alias quirk for Marvell 9215 SATA controller
Chris Chiu (1):
ASoC: Intel: bytcr_rt5640: Add quirk for ARCHOS Cesium 140
Colin Ian King (1):
ALSA: ctxfi: cthw20k2: fix mask on conf to allow 4 bits
Dan Carpenter (2):
btrfs: validate qgroup inherit for SNAP_CREATE_V2 ioctl
rsxx: Return -EFAULT if copy_to_user() fails
Daniel Lee Kruse (1):
media: cx23885: add more quirks for reset DMA on some AMD IOMMU
David Sterba (1):
btrfs: raid56: simplify tracking of Q stripe presence
Ethan Warth (1):
HID: mf: add support for 0079:1846 Mayflash/Dragonrise USB Gamecube Adapter
Greg Kroah-Hartman (1):
Linux 4.19.180
Hannes Reinecke (5):
block: genhd: add 'groups' argument to device_add_disk
nvme: register ns_id attributes as default sysfs groups
aoe: register default groups with device_add_disk()
zram: register default groups with device_add_disk()
virtio-blk: modernize sysfs attribute creation
Hans de Goede (6):
platform/x86: acer-wmi: Cleanup ACER_CAP_FOO defines
platform/x86: acer-wmi: Cleanup accelerometer device handling platform/x86: acer-wmi: Add new force_caps module parameter platform/x86: acer-wmi: Add ACER_CAP_SET_FUNCTION_MODE capability flag platform/x86: acer-wmi: Add support for SW_TABLET_MODE on Switch devices platform/x86: acer-wmi: Add ACER_CAP_KBD_DOCK quirk for the Aspire Switch 10E SW3-016
Heiner Kallweit (1):
r8169: fix resuming from suspend on RTL8105e if machine runs on battery
Ira Weiny (1):
btrfs: fix raid6 qstripe kmap
Jeffle Xu (4):
Revert "zram: close udev startup race condition as default groups" dm table: fix iterate_devices based device capability checks dm table: fix DAX iterate_devices based device capability checks dm table: fix zoned iterate_devices based device capability checks
Jisheng Zhang (1):
mmc: sdhci-of-dwcmshc: set SDHCI_QUIRK2_PRESET_VALUE_BROKEN
Julian Braha (1):
RDMA/rxe: Fix missing kconfig dependency on CRYPTO
Kevin Wang (1):
drm/amdgpu: fix parameter error of RREG32_PCIE() in amdgpu_regs_pcie
Mikulas Patocka (1):
dm bufio: subtract the number of initial sectors in dm_bufio_get_device_size
Milan Broz (1):
dm verity: fix FEC for RS roots unaligned to block size
Nikolay Borisov (2):
btrfs: free correct amount of space in btrfs_delayed_inode_reserve_metadata
btrfs: unlock extents in btrfs_zero_range in case of quota reservation errors
Rafael J. Wysocki (1):
PM: runtime: Update device status before letting suppliers suspend
Tsuchiya Yuto (1):
mwifiex: pcie: skip cancel_work_sync() on reset failure path
[email protected]
maintainerFrom: Greg Kroah-Hartman <[email protected]>
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 19 -SUBLEVEL = 179 +SUBLEVEL = 180 EXTRAVERSION = NAME = "People's Front"
arch/um/drivers/ubd_kern.c +1 -1
@@ -891,7 +891,7 @@ static int ubd_disk_register(int major, u64 size, int unit, disk->private_data = &ubd_devs[unit]; disk->queue = ubd_devs[unit].queue; -device_add_disk (parent, disk); +device_add_disk (parent, disk,NULL ); *disk_out = disk;return 0 ;
block/genhd.c +14 -5
@@ -582,7 +582,8 @@ static int exact_lock(dev_t devt, void *data)return 0 ; } -static void register_disk (struct device *parent,struct gendisk *disk) +static void register_disk (struct device *parent,struct gendisk *disk, +const struct attribute_group **groups) {struct device *ddev =disk_to_dev (disk);struct block_device *bdev;
@@ -597,6 +598,10 @@ static void register_disk(struct device *parent, struct gendisk *disk)/* delay uevents, until we scanned partition table */ dev_set_uevent_suppress (ddev,1 ); +if (groups) { +WARN_ON (ddev->groups); + ddev->groups = groups; + }if (device_add (ddev))return ;if (!sysfs_deprecated) {
@@ -664,6 +669,7 @@ static void register_disk(struct device *parent, struct gendisk *disk)* __device_add_disk - add disk information to kernel list * @parent: parent device for the disk * @disk: per-device partitioning information +* @groups: Additional per-device sysfs groups * @register_queue: register the queue if set to true * * This function registers the partitioning information in @disk
@@ -672,6 +678,7 @@ static void register_disk(struct device *parent, struct gendisk *disk)* FIXME: error handling */ static void __device_add_disk (struct device *parent,struct gendisk *disk, +const struct attribute_group **groups,bool register_queue) {dev_t devt;
@@ -715,7 +722,7 @@ static void __device_add_disk(struct device *parent, struct gendisk *disk,blk_register_region (disk_devt (disk), disk->minors,NULL , exact_match, exact_lock, disk); } -register_disk (parent, disk); +register_disk (parent, disk, groups);if (register_queue)blk_register_queue (disk);
@@ -729,15 +736,17 @@ static void __device_add_disk(struct device *parent, struct gendisk *disk,blk_integrity_add (disk); } -void device_add_disk (struct device *parent,struct gendisk *disk) +void device_add_disk (struct device *parent,struct gendisk *disk, +const struct attribute_group **groups) + { -__device_add_disk (parent, disk, true); +__device_add_disk (parent, disk, groups, true); }EXPORT_SYMBOL (device_add_disk);void device_add_disk_no_queue_reg (struct device *parent,struct gendisk *disk) { -__device_add_disk (parent, disk, false); +__device_add_disk (parent, disk,NULL , false); }EXPORT_SYMBOL (device_add_disk_no_queue_reg);
drivers/base/power/runtime.c +37 -25
83 lines not on this page · raw message
drivers/block/aoe/aoe.h +0 -1
@@ -201,7 +201,6 @@ int aoeblk_init(void);void aoeblk_exit (void );void aoeblk_gdalloc (void *);void aoedisk_rm_debugfs (struct aoedev *d); -void aoedisk_rm_sysfs (struct aoedev *d);int aoechr_init (void );void aoechr_exit (void );
drivers/block/aoe/aoeblk.c +7 -14
@@ -177,10 +177,15 @@ static struct attribute *aoe_attrs[] = { NULL, }; -static const struct attribute_group attr_group = { +static const struct attribute_group aoe_attr_group = { .attrs = aoe_attrs, }; +static const struct attribute_group *aoe_attr_groups[] = { + &aoe_attr_group, +NULL , +}; +static const struct file_operations aoe_debugfs_fops = { .open = aoe_debugfs_open, .read = seq_read,
@@ -219,17 +224,6 @@ aoedisk_rm_debugfs(struct aoedev *d) d->debugfs =NULL ; } -static int -aoedisk_add_sysfs (struct aoedev *d) -{ -return sysfs_create_group (&disk_to_dev (d->gd)->kobj, &attr_group); -} -void -aoedisk_rm_sysfs (struct aoedev *d) -{ -sysfs_remove_group (&disk_to_dev (d->gd)->kobj, &attr_group); -} -static int aoeblk_open (struct block_device *bdev,fmode_t mode) {
@@ -417,8 +411,7 @@ aoeblk_gdalloc(void *vp)spin_unlock_irqrestore (&d->lock, flags); -add_disk (gd); -aoedisk_add_sysfs (d); +device_add_disk (NULL , gd, aoe_attr_groups);aoedisk_add_debugfs (d);spin_lock_irqsave (&d->lock, flags);
drivers/block/aoe/aoedev.c +0 -1
@@ -275,7 +275,6 @@ freedev(struct aoedev *d)del_timer_sync (&d->timer);if (d->gd) {aoedisk_rm_debugfs (d); -aoedisk_rm_sysfs (d);del_gendisk (d->gd);put_disk (d->gd);blk_cleanup_queue (d->blkq);
drivers/block/floppy.c +1 -1
@@ -4714,7 +4714,7 @@ static int __init do_floppy_init(void)/* to be cleaned up... */ disks[drive]->private_data = (void *)(long )drive; disks[drive]->flags |=GENHD_FL_REMOVABLE ; -device_add_disk (&floppy_device[drive].dev, disks[drive]); +device_add_disk (&floppy_device[drive].dev, disks[drive],NULL ); }return 0 ;
drivers/block/mtip32xx/mtip32xx.c +1 -1
@@ -3861,7 +3861,7 @@ static int mtip_block_initialize(struct driver_data *dd)set_capacity (dd->disk, capacity);/* Enable the block device and add it to /dev */ -device_add_disk (&dd->pdev->dev, dd->disk); +device_add_disk (&dd->pdev->dev, dd->disk,NULL ); dd->bdev =bdget_disk (dd->disk,0 );/*
drivers/block/ps3disk.c +1 -1
@@ -499,7 +499,7 @@ static int ps3disk_probe(struct ps3_system_bus_device *_dev) gendisk->disk_name, priv->model, priv->raw_capacity >>11 , get_capacity(gendisk) >> 11); -device_add_disk (&dev->sbd.core, gendisk); +device_add_disk (&dev->sbd.core, gendisk,NULL );return 0 ; fail_cleanup_queue:
drivers/block/ps3vram.c +1 -1
@@ -769,7 +769,7 @@ static int ps3vram_probe(struct ps3_system_bus_device *dev)dev_info (&dev->core,"%s: Using %lu MiB of GPU memory\n" , gendisk->disk_name,get_capacity (gendisk) >>11 ); -device_add_disk (&dev->core, gendisk); +device_add_disk (&dev->core, gendisk,NULL );return 0 ; fail_cleanup_queue:
drivers/block/rsxx/core.c +5 -3
@@ -179,15 +179,17 @@ static ssize_t rsxx_cram_read(struct file *fp, char __user *ubuf, {struct rsxx_cardinfo *card =file_inode (fp)->i_private;char *buf; -ssize_t st; +int st; buf =kzalloc (cnt,GFP_KERNEL );if (!buf)return -ENOMEM ; st =rsxx_creg_read (card,CREG_ADD_CRAM + (u32)*ppos, cnt, buf,1 ); -if (!st) - st =copy_to_user (ubuf, buf, cnt); +if (!st) { +if (copy_to_user (ubuf, buf, cnt)) + st = -EFAULT ; + }kfree (buf);if (st)return st;
drivers/block/rsxx/dev.c +1 -1
@@ -226,7 +226,7 @@ int rsxx_attach_dev(struct rsxx_cardinfo *card)set_capacity (card->gendisk, card->size8 >>9 ); else set_capacity(card->gendisk, 0); -device_add_disk (CARD_TO_DEV (card), card->gendisk); +device_add_disk (CARD_TO_DEV (card), card->gendisk,NULL ); card->bdev_attached =1 ; }
drivers/block/skd_main.c +1 -1
@@ -3104,7 +3104,7 @@ static int skd_bdev_getgeo(struct block_device *bdev, struct hd_geometry *geo)static int skd_bdev_attach (struct device *parent,struct skd_device *skdev) {dev_dbg (&skdev->pdev->dev,"add_disk\n" ); -device_add_disk (parent, skdev->disk); +device_add_disk (parent, skdev->disk,NULL );return 0 ; }
drivers/block/sunvdc.c +1 -1
@@ -862,7 +862,7 @@ static int probe_disk(struct vdc_port *port) port->vdisk_size, (port->vdisk_size >> (20 -9 )), port->vio.ver.major, port->vio.ver.minor); -device_add_disk (&port->vio.vdev->dev, g); +device_add_disk (&port->vio.vdev->dev, g,NULL );return 0 ; }
drivers/block/virtio_blk.c +39 -29
106 lines not on this page · raw message
drivers/block/xen-blkfront.c +1 -1
@@ -2422,7 +2422,7 @@ static void blkfront_connect(struct blkfront_info *info)for (i =0 ; i < info->nr_rings; i++)kick_pending_request_queues (&info->rinfo[i]); -device_add_disk (&info->xbdev->dev, info->gd); +device_add_disk (&info->xbdev->dev, info->gd,NULL ); info->is_ready =1 ;return ;
drivers/block/zram/zram_drv.c +2 -2
@@ -1729,8 +1729,7 @@ static int zram_add(void) zram->disk->queue->backing_dev_info->capabilities |= (BDI_CAP_STABLE_WRITES |BDI_CAP_SYNCHRONOUS_IO ); -disk_to_dev (zram->disk)->groups = zram_disk_attr_groups; -add_disk (zram->disk); +device_add_disk (NULL , zram->disk, zram_disk_attr_groups);strlcpy (zram->compressor, default_compressor,sizeof (zram->compressor));
@@ -1766,6 +1765,7 @@ static int zram_remove(struct zram *zram)mutex_unlock (&bdev->bd_mutex);zram_debugfs_unregister (zram); +/* Make sure all the pending I/O are finished */ fsync_bdev (bdev);zram_reset_device (zram);
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c +2 -2
@@ -239,7 +239,7 @@ static ssize_t amdgpu_debugfs_regs_pcie_read(struct file *f, char __user *buf,while (size) {uint32_t value; - value =RREG32_PCIE (*pos >>2 ); + value =RREG32_PCIE (*pos); r =put_user (value, (uint32_t *)buf);if (r)return r;
@@ -282,7 +282,7 @@ static ssize_t amdgpu_debugfs_regs_pcie_write(struct file *f, const char __userif (r)return r; -WREG32_PCIE (*pos >>2 , value); +WREG32_PCIE (*pos, value); result +=4 ; buf +=4 ;
drivers/gpu/drm/msm/adreno/a5xx_gpu.c +0 -2
@@ -681,8 +681,6 @@ static int a5xx_hw_init(struct msm_gpu *gpu)if (adreno_gpu->info->quirks &ADRENO_QUIRK_TWO_PASS_USE_WFI )gpu_rmw (gpu,REG_A5XX_PC_DBG_ECO_CNTL ,0 , (1 <<8 )); -gpu_write (gpu,REG_A5XX_PC_DBG_ECO_CNTL ,0xc0200100 ); -/* Enable USE_RETENTION_FLOPS */ gpu_write (gpu,REG_A5XX_CP_CHICKEN_DBG ,0x02000000 );
drivers/hid/hid-ids.h +1 -0
@@ -358,6 +358,7 @@#define USB_DEVICE_ID_DRAGONRISE_DOLPHINBAR 0x1803#define USB_DEVICE_ID_DRAGONRISE_GAMECUBE1 0x1843#define USB_DEVICE_ID_DRAGONRISE_GAMECUBE2 0x1844 +#define USB_DEVICE_ID_DRAGONRISE_GAMECUBE3 0x1846#define USB_VENDOR_ID_DWAV 0x0eef#define USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER 0x0001
drivers/hid/hid-mf.c +2 -0
@@ -161,6 +161,8 @@ static const struct hid_device_id mf_devices[] = { .driver_data = HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_GAMECUBE2), .driver_data = 0 }, /* No quirk required */ + { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_GAMECUBE3), + .driver_data = HID_QUIRK_MULTI_INPUT }, { } };MODULE_DEVICE_TABLE (hid, mf_devices);
drivers/hid/hid-quirks.c +2 -0
@@ -74,6 +74,7 @@ static const struct hid_device_id hid_quirks[] = { { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_REDRAGON_SEYMUR2), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_DOLPHINBAR), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_GAMECUBE1), HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_GAMECUBE3), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_PS3), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_WIIU), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER), HID_QUIRK_MULTI_INPUT | HID_QUIRK_NOGET },
@@ -498,6 +499,7 @@ static const struct hid_device_id hid_have_special_driver[] = { { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_DOLPHINBAR) }, { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_GAMECUBE1) }, { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_GAMECUBE2) }, + { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_GAMECUBE3) }, #endif #if IS_ENABLED(CONFIG_HID_MICROSOFT) { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_COMFORT_MOUSE_4500) },
drivers/ide/ide-cd.c +1 -1
@@ -1784,7 +1784,7 @@ static int ide_cd_probe(ide_drive_t *drive)ide_cd_read_toc (drive); g->fops = &idecd_ops; g->flags |=GENHD_FL_REMOVABLE |GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE ; -device_add_disk (&drive->gendev, g); +device_add_disk (&drive->gendev, g,NULL );return 0 ; out_free_disk:
drivers/ide/ide-gd.c +1 -1
@@ -416,7 +416,7 @@ static int ide_gd_probe(ide_drive_t *drive)if (drive->dev_flags &IDE_DFLAG_REMOVABLE ) g->flags =GENHD_FL_REMOVABLE ; g->fops = &ide_gd_ops; -device_add_disk (&drive->gendev, g); +device_add_disk (&drive->gendev, g,NULL );return 0 ; out_free_disk:
drivers/infiniband/sw/rxe/Kconfig +1 -0
@@ -3,6 +3,7 @@ config RDMA_RXE depends on INET && PCI && INFINIBAND depends on !64BIT || ARCH_DMA_ADDR_T_64BIT select NET_UDP_TUNNEL + select CRYPTO select CRYPTO_CRC32 select DMA_VIRT_OPS ---help---
drivers/iommu/amd_iommu.c +6 -4
@@ -1348,24 +1348,26 @@ static void increase_address_space(struct protection_domain *domain,unsigned long flags;u64 *pte; + pte = (void *)get_zeroed_page (gfp); +if (!pte) +return ; +spin_lock_irqsave (&domain->lock, flags);if (WARN_ON_ONCE (domain->mode ==PAGE_MODE_6_LEVEL ))/* address space already 64 bit large */ goto out; - pte = (void *)get_zeroed_page (gfp); -if (!pte) - goto out; - *pte =PM_LEVEL_PDE (domain->mode,iommu_virt_to_phys (domain->pt_root)); domain->pt_root = pte; domain->mode +=1 ; domain->updated = true; + pte =NULL ; out:spin_unlock_irqrestore (&domain->lock, flags); +free_page ((unsigned long )pte);return ; }
drivers/md/dm-bufio.c +4 -0
@@ -1463,6 +1463,10 @@ EXPORT_SYMBOL_GPL(dm_bufio_get_block_size);sector_t dm_bufio_get_device_size (struct dm_bufio_client *c) {sector_t s =i_size_read (c->bdev->bd_inode) >>SECTOR_SHIFT ; +if (s >= c->start) + s -= c->start; +else + s =0 ;if (likely (c->sectors_per_block_bits >=0 )) s >>= c->sectors_per_block_bits;else
drivers/md/dm-table.c +73 -101
291 lines not on this page · raw message
drivers/md/dm-verity-fec.c +12 -11
@@ -65,19 +65,18 @@ static int fec_decode_rs8(struct dm_verity *v, struct dm_verity_fec_io *fio,static u8 *fec_read_parity (struct dm_verity *v,u64 rsb,int index,unsigned *offset,struct dm_buffer **buf) { -u64 position, block; +u64 position, block, rem;u8 *res; position = (index + rsb) * v->fec->roots; - block = position >> v->data_dev_block_bits; - *offset = (unsigned )(position - (block << v->data_dev_block_bits)); + block =div64_u64_rem (position, v->fec->roots <<SECTOR_SHIFT , &rem); + *offset = (unsigned )rem; - res =dm_bufio_read (v->fec->bufio, v->fec->start + block, buf); + res =dm_bufio_read (v->fec->bufio, block, buf);if (unlikely (IS_ERR (res))) {DMERR ("%s: FEC %llu: parity read failed (block %llu): %ld" , v->data_dev->name, (unsigned long long )rsb, - (unsigned long long )(v->fec->start + block), -PTR_ERR (res)); + (unsigned long long )block,PTR_ERR (res)); *buf =NULL ; }
@@ -159,7 +158,7 @@ static int fec_decode_bufs(struct dm_verity *v, struct dm_verity_fec_io *fio,/* read the next block when we run out of parity bytes */ offset += v->fec->roots; -if (offset >=1 << v->data_dev_block_bits) { +if (offset >= v->fec->roots <<SECTOR_SHIFT ) {dm_bufio_release (buf); par =fec_read_parity (v, rsb, block_offset, &offset, &buf);
@@ -675,7 +674,7 @@ int verity_fec_ctr(struct dm_verity *v) {struct dm_verity_fec *f = v->fec;struct dm_target *ti = v->ti; -u64 hash_blocks; +u64 hash_blocks, fec_blocks;int ret;if (!verity_fec_is_enabled (v)) {
@@ -745,15 +744,17 @@ int verity_fec_ctr(struct dm_verity *v) } f->bufio =dm_bufio_client_create (f->dev->bdev, -1 << v->data_dev_block_bits, + f->roots <<SECTOR_SHIFT ,1 ,0 ,NULL ,NULL );if (IS_ERR (f->bufio)) { ti->error ="Cannot initialize FEC bufio client" ;return PTR_ERR (f->bufio); } -if (dm_bufio_get_device_size (f->bufio) < - ((f->start + f->rounds * f->roots) >> v->data_dev_block_bits)) { +dm_bufio_set_sector_offset (f->bufio, f->start << (v->data_dev_block_bits -SECTOR_SHIFT )); + + fec_blocks =div64_u64 (f->rounds * f->roots, v->fec->roots <<SECTOR_SHIFT ); +if (dm_bufio_get_device_size (f->bufio) < fec_blocks) { ti->error ="FEC device is too small" ;return -E2BIG ; }
drivers/media/pci/cx23885/cx23885-core.c +4 -0
@@ -2084,6 +2084,10 @@ static struct {* 0x1451 is PCI ID for the IOMMU found on Ryzen */ { PCI_VENDOR_ID_AMD, 0x1451 }, +/* According to sudo lspci -nn, +* 0x1423 is the PCI ID for the IOMMU found on Kaveri +*/ + { PCI_VENDOR_ID_AMD, 0x1423 }, };static bool cx23885_does_need_dma_reset (void )
drivers/memstick/core/ms_block.c +1 -1
@@ -2146,7 +2146,7 @@ static int msb_init_disk(struct memstick_dev *card)set_disk_ro (msb->disk,1 );msb_start (card); -device_add_disk (&card->dev, msb->disk); +device_add_disk (&card->dev, msb->disk,NULL );dbg ("Disk added" );return 0 ;
drivers/memstick/core/mspro_block.c +1 -1
@@ -1236,7 +1236,7 @@ static int mspro_block_init_disk(struct memstick_dev *card)set_capacity (msb->disk, capacity);dev_dbg (&card->dev,"capacity set %ld\n" , capacity); -device_add_disk (&card->dev, msb->disk); +device_add_disk (&card->dev, msb->disk,NULL ); msb->active =1 ;return 0 ;
drivers/misc/eeprom/eeprom_93xx46.c +15 -0
@@ -38,6 +38,10 @@ static const struct eeprom_93xx46_devtype_data atmel_at93c46d_data = { EEPROM_93XX46_QUIRK_INSTRUCTION_LENGTH, }; +static const struct eeprom_93xx46_devtype_data microchip_93lc46b_data = { + .quirks =EEPROM_93XX46_QUIRK_EXTRA_READ_CYCLE , +}; +struct eeprom_93xx46_dev {struct spi_device *spi;struct eeprom_93xx46_platform_data *pdata;
@@ -58,6 +62,11 @@ static inline bool has_quirk_instruction_length(struct eeprom_93xx46_dev *edev)return edev->pdata->quirks &EEPROM_93XX46_QUIRK_INSTRUCTION_LENGTH ; } +static inline bool has_quirk_extra_read_cycle (struct eeprom_93xx46_dev *edev) +{ +return edev->pdata->quirks &EEPROM_93XX46_QUIRK_EXTRA_READ_CYCLE ; +} +static int eeprom_93xx46_read (void *priv,unsigned int off,void *val,size_t count) {
@@ -99,6 +108,11 @@ static int eeprom_93xx46_read(void *priv, unsigned int off,dev_dbg (&edev->spi->dev,"read cmd 0x%x, %d Hz\n" , cmd_addr, edev->spi->max_speed_hz); +if (has_quirk_extra_read_cycle (edev)) { + cmd_addr <<=1 ; + bits +=1 ; + } +spi_message_init (&m); t[0 ].tx_buf = (char *)&cmd_addr;
@@ -366,6 +380,7 @@ static void select_deassert(void *context)static const struct of_device_id eeprom_93xx46_of_table[] = { { .compatible ="eeprom-93xx46" , }, { .compatible ="atmel,at93c46d" , .data = &atmel_at93c46d_data, }, + { .compatible ="microchip,93lc46b" , .data = µchip_93lc46b_data, }, {} };MODULE_DEVICE_TABLE (of, eeprom_93xx46_of_table);
drivers/mmc/core/block.c +1 -1
@@ -2671,7 +2671,7 @@ static int mmc_add_disk(struct mmc_blk_data *md)int ret;struct mmc_card *card = md->queue.card; -device_add_disk (md->parent, md->disk); +device_add_disk (md->parent, md->disk,NULL ); md->force_ro.show = force_ro_show; md->force_ro.store = force_ro_store;sysfs_attr_init (&md->force_ro.attr);
drivers/mmc/host/sdhci-of-dwcmshc.c +1 -0
@@ -28,6 +28,7 @@ static const struct sdhci_ops sdhci_dwcmshc_ops = {static const struct sdhci_pltfm_data sdhci_dwcmshc_pdata = { .ops = &sdhci_dwcmshc_ops, .quirks =SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN , + .quirks2 =SDHCI_QUIRK2_PRESET_VALUE_BROKEN , };static int dwcmshc_probe (struct platform_device *pdev)
drivers/mtd/mtd_blkdevs.c +1 -1
@@ -447,7 +447,7 @@ int add_mtd_blktrans_dev(struct mtd_blktrans_dev *new)if (new->readonly)set_disk_ro (gd,1 ); -device_add_disk (&new->mtd->dev, gd); +device_add_disk (&new->mtd->dev, gd,NULL );if (new->disk_attributes) { ret = sysfs_create_group(&disk_to_dev(gd)->kobj,
drivers/net/ethernet/realtek/r8169.c +2 -0
@@ -4238,6 +4238,7 @@ static void r8168_pll_power_down(struct rtl8169_private *tp)switch (tp->mac_version) { case RTL_GIGA_MAC_VER_25 ... RTL_GIGA_MAC_VER_26: + case RTL_GIGA_MAC_VER_29 ... RTL_GIGA_MAC_VER_30: case RTL_GIGA_MAC_VER_32 ... RTL_GIGA_MAC_VER_33:case RTL_GIGA_MAC_VER_37 :case RTL_GIGA_MAC_VER_39 :
@@ -4265,6 +4266,7 @@ static void r8168_pll_power_up(struct rtl8169_private *tp) {switch (tp->mac_version) { case RTL_GIGA_MAC_VER_25 ... RTL_GIGA_MAC_VER_26: + case RTL_GIGA_MAC_VER_29 ... RTL_GIGA_MAC_VER_30: case RTL_GIGA_MAC_VER_32 ... RTL_GIGA_MAC_VER_33:case RTL_GIGA_MAC_VER_37 :case RTL_GIGA_MAC_VER_39 :
drivers/net/wireless/marvell/mwifiex/pcie.c +17 -1
@@ -381,6 +381,8 @@ static void mwifiex_pcie_reset_prepare(struct pci_dev *pdev)clear_bit (MWIFIEX_IFACE_WORK_DEVICE_DUMP , &card->work_flags);clear_bit (MWIFIEX_IFACE_WORK_CARD_RESET , &card->work_flags);mwifiex_dbg (adapter,INFO ,"%s, successful\n" , __func__); + + card->pci_reset_ongoing = true; }/*
@@ -409,6 +411,8 @@ static void mwifiex_pcie_reset_done(struct pci_dev *pdev)dev_err (&pdev->dev,"reinit failed: %d\n" , ret); else mwifiex_dbg(adapter, INFO, "%s, successful\n", __func__); + + card->pci_reset_ongoing = false; }static const struct pci_error_handlers mwifiex_pcie_err_handler = {
@@ -3000,7 +3004,19 @@ static void mwifiex_cleanup_pcie(struct mwifiex_adapter *adapter)int ret;u32 fw_status; -cancel_work_sync (&card->work); +/* Perform the cancel_work_sync() only when we're not resetting +* the card. It's because that function never returns if we're +* in reset path. If we're here when resetting the card, it means +* that we failed to reset the card (reset failure path). +*/ +if (!card->pci_reset_ongoing) { +mwifiex_dbg (adapter,MSG ,"performing cancel_work_sync()...\n" ); +cancel_work_sync (&card->work); +mwifiex_dbg (adapter,MSG ,"cancel_work_sync() done\n" ); + }else { +mwifiex_dbg (adapter,MSG , +"skipped cancel_work_sync() because we're in card reset failure path\n" ); + } ret =mwifiex_read_reg (adapter, reg->fw_status, &fw_status);if (fw_status ==FIRMWARE_READY_PCIE ) {
drivers/net/wireless/marvell/mwifiex/pcie.h +2 -0
@@ -391,6 +391,8 @@ struct pcie_service_card {struct mwifiex_msix_context share_irq_ctx;struct work_struct work;unsigned long work_flags; + +bool pci_reset_ongoing; }; static inline int
drivers/nvdimm/blk.c +1 -1
@@ -290,7 +290,7 @@ static int nsblk_attach_disk(struct nd_namespace_blk *nsblk) }set_capacity (disk, available_disk_size >>SECTOR_SHIFT ); -device_add_disk (dev, disk); +device_add_disk (dev, disk,NULL );revalidate_disk (disk);return 0 ; }
drivers/nvdimm/btt.c +1 -1
@@ -1565,7 +1565,7 @@ static int btt_blk_init(struct btt *btt) } }set_capacity (btt->btt_disk, btt->nlba * btt->sector_size >>9 ); -device_add_disk (&btt->nd_btt->dev, btt->btt_disk); +device_add_disk (&btt->nd_btt->dev, btt->btt_disk,NULL ); btt->nd_btt->size = btt->nlba * (u64 )btt->sector_size;revalidate_disk (btt->btt_disk);
drivers/nvdimm/pmem.c +1 -1
@@ -479,7 +479,7 @@ static int pmem_attach_disk(struct device *dev, gendev =disk_to_dev (disk); gendev->groups = pmem_attribute_groups; -device_add_disk (dev, disk); +device_add_disk (dev, disk,NULL );if (devm_add_action_or_reset (dev, pmem_release_disk, pmem))return -ENOMEM ;
drivers/nvme/host/core.c +9 -12
@@ -2842,6 +2842,14 @@ const struct attribute_group nvme_ns_id_attr_group = { .is_visible = nvme_ns_id_attrs_are_visible, }; +const struct attribute_group *nvme_ns_id_attr_groups[] = { + &nvme_ns_id_attr_group, +#ifdef CONFIG_NVM + &nvme_nvm_attr_group, +#endif +NULL , +}; +#define nvme_show_str_function (field) \ static ssize_t field##_show(struct device *dev, \ struct device_attribute *attr, char *buf) \
@@ -3211,14 +3219,7 @@ static void nvme_alloc_ns(struct nvme_ctrl *ctrl, unsigned nsid)nvme_get_ctrl (ctrl); -device_add_disk (ctrl->device, ns->disk); -if (sysfs_create_group (&disk_to_dev (ns->disk)->kobj, - &nvme_ns_id_attr_group)) -pr_warn ("%s: failed to create sysfs group for identification\n" , - ns->disk->disk_name); -if (ns->ndev &&nvme_nvm_register_sysfs (ns)) -pr_warn ("%s: failed to register lightnvm sysfs group for identification\n" , - ns->disk->disk_name); +device_add_disk (ctrl->device, ns->disk, nvme_ns_id_attr_groups);nvme_mpath_add_disk (ns, id);nvme_fault_inject_init (ns);
@@ -3252,10 +3253,6 @@ static void nvme_ns_remove(struct nvme_ns *ns)synchronize_srcu (&ns->head->srcu);/* wait for concurrent submissions */ if (ns->disk && ns->disk->flags &GENHD_FL_UP ) { -sysfs_remove_group (&disk_to_dev (ns->disk)->kobj, - &nvme_ns_id_attr_group); -if (ns->ndev) -nvme_nvm_unregister_sysfs (ns);del_gendisk (ns->disk);blk_cleanup_queue (ns->queue);if (blk_get_integrity (ns->disk))
drivers/nvme/host/lightnvm.c +44 -61
147 lines not on this page · raw message
drivers/nvme/host/multipath.c +4 -11
@@ -313,13 +313,9 @@ static void nvme_mpath_set_live(struct nvme_ns *ns)if (!head->disk)return ; -if (!(head->disk->flags &GENHD_FL_UP )) { -device_add_disk (&head->subsys->dev, head->disk); -if (sysfs_create_group (&disk_to_dev (head->disk)->kobj, - &nvme_ns_id_attr_group)) -dev_warn (&head->subsys->dev, -"failed to create id group.\n" ); - } +if (!(head->disk->flags &GENHD_FL_UP )) +device_add_disk (&head->subsys->dev, head->disk, + nvme_ns_id_attr_groups);synchronize_srcu (&ns->head->srcu);kblockd_schedule_work (&ns->head->requeue_work);
@@ -541,11 +537,8 @@ void nvme_mpath_remove_disk(struct nvme_ns_head *head) {if (!head->disk)return ; -if (head->disk->flags &GENHD_FL_UP ) { -sysfs_remove_group (&disk_to_dev (head->disk)->kobj, - &nvme_ns_id_attr_group); +if (head->disk->flags &GENHD_FL_UP )del_gendisk (head->disk); - }blk_set_queue_dying (head->disk->queue);/* make sure all pending bios are cleaned up */ kblockd_schedule_work (&head->requeue_work);
drivers/nvme/host/nvme.h +2 -8
@@ -464,7 +464,7 @@ int nvme_delete_ctrl_sync(struct nvme_ctrl *ctrl);int nvme_get_log (struct nvme_ctrl *ctrl,u32 nsid,u8 log_page,u8 lsp,void *log,size_t size,u64 offset); -extern const struct attribute_group nvme_ns_id_attr_group; +extern const struct attribute_group *nvme_ns_id_attr_groups[];extern const struct block_device_operations nvme_ns_head_ops;#ifdef CONFIG_NVME_MULTIPATH
@@ -589,8 +589,7 @@ static inline void nvme_mpath_update_disk_size(struct gendisk *disk)void nvme_nvm_update_nvm_info (struct nvme_ns *ns);int nvme_nvm_register (struct nvme_ns *ns,char *disk_name,int node);void nvme_nvm_unregister (struct nvme_ns *ns); -int nvme_nvm_register_sysfs (struct nvme_ns *ns); -void nvme_nvm_unregister_sysfs (struct nvme_ns *ns); +extern const struct attribute_group nvme_nvm_attr_group;int nvme_nvm_ioctl (struct nvme_ns *ns,unsigned int cmd,unsigned long arg);#else static inline void nvme_nvm_update_nvm_info (struct nvme_ns *ns) {};
@@ -601,11 +600,6 @@ static inline int nvme_nvm_register(struct nvme_ns *ns, char *disk_name, }static inline void nvme_nvm_unregister (struct nvme_ns *ns) {}; -static inline int nvme_nvm_register_sysfs (struct nvme_ns *ns) -{ -return 0 ; -} -static inline void nvme_nvm_unregister_sysfs (struct nvme_ns *ns) {};static inline int nvme_nvm_ioctl (struct nvme_ns *ns,unsigned int cmd,unsigned long arg) {
drivers/pci/quirks.c +3 -0
@@ -3961,6 +3961,9 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x9183,/* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c46 */ DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_MARVELL_EXT ,0x91a0 , quirk_dma_func1_alias); +/* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c135 */ +DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_MARVELL_EXT ,0x9215 , + quirk_dma_func1_alias);/* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c127 */ DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_MARVELL_EXT ,0x9220 , quirk_dma_func1_alias);
drivers/platform/x86/acer-wmi.c +140 -29
302 lines not on this page · raw message
drivers/s390/block/dasd_genhd.c +1 -1
@@ -76,7 +76,7 @@ int dasd_gendisk_alloc(struct dasd_block *block) gdp->queue = block->request_queue; block->gdp = gdp;set_capacity (block->gdp,0 ); -device_add_disk (&base->cdev->dev, block->gdp); +device_add_disk (&base->cdev->dev, block->gdp,NULL );return 0 ; }
drivers/s390/block/dcssblk.c +1 -1
@@ -685,7 +685,7 @@ dcssblk_add_store(struct device *dev, struct device_attribute *attr, const char }get_device (&dev_info->dev); -device_add_disk (&dev_info->dev, dev_info->gd); +device_add_disk (&dev_info->dev, dev_info->gd,NULL );switch (dev_info->segment_type) {case SEG_TYPE_SR :
drivers/s390/block/scm_blk.c +1 -1
@@ -500,7 +500,7 @@ int scm_blk_dev_setup(struct scm_blk_dev *bdev, struct scm_device *scmdev)/* 512 byte sectors */ set_capacity (bdev->gendisk, scmdev->size >>9 ); -device_add_disk (&scmdev->dev, bdev->gendisk); +device_add_disk (&scmdev->dev, bdev->gendisk,NULL );return 0 ; out_queue:
drivers/scsi/sd.c +1 -1
@@ -3348,7 +3348,7 @@ static void sd_probe_async(void *data, async_cookie_t cookie) }blk_pm_runtime_init (sdp->request_queue, dev); -device_add_disk (dev, gd); +device_add_disk (dev, gd,NULL );if (sdkp->capacity)sd_dif_config_host (sdkp);
drivers/scsi/sr.c +1 -1
@@ -758,7 +758,7 @@ static int sr_probe(struct device *dev)dev_set_drvdata (dev, cd); disk->flags |=GENHD_FL_REMOVABLE ; -device_add_disk (&sdev->sdev_gendev, disk); +device_add_disk (&sdev->sdev_gendev, disk,NULL );sdev_printk (KERN_DEBUG , sdev,"Attached scsi CD-ROM %s\n" , cd->cdi.name);
fs/btrfs/delayed-inode.c +1 -1
@@ -642,7 +642,7 @@ static int btrfs_delayed_inode_reserve_metadata(btrfs_ino (inode), num_bytes, 1); }else { -btrfs_qgroup_free_meta_prealloc (root, fs_info->nodesize); +btrfs_qgroup_free_meta_prealloc (root, num_bytes); }return ret; }
fs/btrfs/file.c +4 -1
@@ -3016,8 +3016,11 @@ static int btrfs_zero_range(struct inode *inode, goto out; ret =btrfs_qgroup_reserve_data (inode, &data_reserved, alloc_start, bytes_to_reserve); -if (ret) +if (ret) { +unlock_extent_cached (&BTRFS_I (inode)->io_tree, lockstart, + lockend, &cached_state); goto out; + } ret = btrfs_prealloc_file_range(inode, mode, alloc_start, alloc_end - alloc_start, i_blocksize(inode),
fs/btrfs/ioctl.c +18 -1
@@ -1842,7 +1842,10 @@ static noinline int btrfs_ioctl_snap_create_v2(struct file *file,if (vol_args->flags &BTRFS_SUBVOL_RDONLY ) readonly = true;if (vol_args->flags &BTRFS_SUBVOL_QGROUP_INHERIT ) { -if (vol_args->size >PAGE_SIZE ) { +u64 nums; + +if (vol_args->size <sizeof (*inherit) || + vol_args->size >PAGE_SIZE ) { ret = -EINVAL ; goto free_args; }
@@ -1851,6 +1854,20 @@ static noinline int btrfs_ioctl_snap_create_v2(struct file *file, ret =PTR_ERR (inherit); goto free_args; } + +if (inherit->num_qgroups >PAGE_SIZE || + inherit->num_ref_copies >PAGE_SIZE || + inherit->num_excl_copies >PAGE_SIZE ) { + ret = -EINVAL ; + goto free_inherit; + } + + nums = inherit->num_qgroups +2 * inherit->num_ref_copies + +2 * inherit->num_excl_copies; +if (vol_args->size !=struct_size (inherit, qgroups, nums)) { + ret = -EINVAL ; + goto free_inherit; + } } ret = btrfs_ioctl_snap_create_transid(file, vol_args->name,
fs/btrfs/raid56.c +25 -33
122 lines not on this page · raw message
include/linux/eeprom_93xx46.h +2 -0
@@ -16,6 +16,8 @@ struct eeprom_93xx46_platform_data {#define EEPROM_93XX46_QUIRK_SINGLE_WORD_READ (1 << 0)/* Instructions such as EWEN are (addrlen + 2) in length. */ #define EEPROM_93XX46_QUIRK_INSTRUCTION_LENGTH (1 << 1) +/* Add extra cycle after address during a read */ +#define EEPROM_93XX46_QUIRK_EXTRA_READ_CYCLE BIT(2)/* * optional hooks to control additional logic
include/linux/genhd.h +3 -2
@@ -402,10 +402,11 @@ static inline void free_part_info(struct hd_struct *part)extern void part_round_stats (struct request_queue *q,int cpu,struct hd_struct *part);/* block/genhd.c */ -extern void device_add_disk (struct device *parent,struct gendisk *disk); +extern void device_add_disk (struct device *parent,struct gendisk *disk, +const struct attribute_group **groups);static inline void add_disk (struct gendisk *disk) { -device_add_disk (NULL , disk); +device_add_disk (NULL , disk,NULL ); }extern void device_add_disk_no_queue_reg (struct device *parent,struct gendisk *disk);static inline void add_disk_no_queue_reg (struct gendisk *disk)
net/dsa/Kconfig +1 -0
@@ -8,6 +8,7 @@ config NET_DSA tristate "Distributed Switch Architecture" depends on HAVE_NET_DSA && MAY_USE_DEVLINK depends on BRIDGE || BRIDGE=n + select GRO_CELLS select NET_SWITCHDEV select PHYLINK ---help---
net/dsa/dsa.c +1 -1
@@ -191,7 +191,7 @@ static int dsa_switch_rcv(struct sk_buff *skb, struct net_device *dev,if (dsa_skb_defer_rx_timestamp (p, skb))return 0 ; -netif_receive_skb (skb); +gro_cells_receive (&p->gcells, skb);return 0 ; }
net/dsa/dsa_priv.h +3 -0
@@ -15,6 +15,7 @@#include <linux/netdevice.h> #include <linux/netpoll.h> #include <net/dsa.h> +#include <net/gro_cells.h> enum {DSA_NOTIFIER_AGEING_TIME ,
@@ -72,6 +73,8 @@ struct dsa_slave_priv {struct pcpu_sw_netstats *stats64; +struct gro_cells gcells; +/* DSA port data, such as switch, port index, etc. */ struct dsa_port *dp;
net/dsa/slave.c +9 -1
@@ -1337,6 +1337,11 @@ int dsa_slave_create(struct dsa_port *port)free_netdev (slave_dev);return -ENOMEM ; } + + ret =gro_cells_init (&p->gcells, slave_dev); +if (ret) + goto out_free; + p->dp = port;INIT_LIST_HEAD (&p->mall_tc_list); p->xmit = cpu_dp->tag_ops->xmit;
@@ -1347,7 +1352,7 @@ int dsa_slave_create(struct dsa_port *port) ret =dsa_slave_phy_setup (slave_dev);if (ret) {netdev_err (master,"error %d setting up slave phy\n" , ret); - goto out_free; + goto out_gcells; }dsa_slave_notify (slave_dev,DSA_PORT_REGISTER );
@@ -1366,6 +1371,8 @@ int dsa_slave_create(struct dsa_port *port)phylink_disconnect_phy (p->dp->pl);rtnl_unlock ();phylink_destroy (p->dp->pl); +out_gcells: +gro_cells_destroy (&p->gcells); out_free:free_percpu (p->stats64);free_netdev (slave_dev);
@@ -1386,6 +1393,7 @@ void dsa_slave_destroy(struct net_device *slave_dev)dsa_slave_notify (slave_dev,DSA_PORT_UNREGISTER );unregister_netdev (slave_dev);phylink_destroy (dp->pl); +gro_cells_destroy (&p->gcells);free_percpu (p->stats64);free_netdev (slave_dev); }
sound/pci/ctxfi/cthw20k2.c +1 -1
@@ -995,7 +995,7 @@ static int daio_mgr_dao_init(void *blk, unsigned int idx, unsigned int conf)if (idx <4 ) {/* S/PDIF output */ -switch ((conf &0x7 )) { +switch ((conf &0xf )) {case 1 :set_field (&ctl->txctl[idx],ATXCTL_NUC ,0 );break ;
sound/soc/intel/boards/bytcr_rt5640.c +12 -0
@@ -444,6 +444,18 @@ static const struct dmi_system_id byt_rt5640_quirk_table[] = {BYT_RT5640_SSP0_AIF1 | BYT_RT5640_MCLK_EN), }, + { + .matches = { +DMI_EXACT_MATCH (DMI_SYS_VENDOR ,"ARCHOS" ), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "ARCHOS 140 CESIUM"), + }, + .driver_data = (void *)(BYT_RT5640_IN1_MAP | +BYT_RT5640_JD_SRC_JD2_IN4N | +BYT_RT5640_OVCD_TH_2000UA | +BYT_RT5640_OVCD_SF_0P75 | +BYT_RT5640_SSP0_AIF1 | + BYT_RT5640_MCLK_EN), + }, { .matches = { DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
tools/usb/usbip/libsrc/usbip_host_common.c +1 -1
@@ -35,7 +35,7 @@#include "list.h" #include "sysfs_utils.h" -struct udev *udev_context; +extern struct udev *udev_context;static int32_t read_attr_usbip_status (struct usbip_usb_device *udev) {