mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 03:27:44 -04:00
This is the 5.4.39 stable release
-----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAl6yVfUACgkQONu9yGCS aT5ecRAArk5nOkbDVn/o2d/ro9+C1tHxkkQblEHUldnFhwkvhZXGONkI3G3IO0F2 W3DnLYIXesPClEHxsHirGJhsiXj1+/opZDo6PVDogW7vW3fXZEp6IjSKtTODeCk1 Yqs/DBmVxOJqYONJ4O+IPq73yJo1wIrgvp3nf+hA8jAidKKBHj/bZG16gFRfwlx8 XgT6b7UJNpEijc7sD1AkqMi5dILYnTx4X/Xd0bMZh4CXobLqCX2KFMghANOu1SZQ ttVGXBfEo+3OD1IrYVOMEM9v45lyiIfE7USS00XzWPZ4Ij4i2SU3BiBTnbldZ6xk f6gxrnsY9gc2hBuz/ua1p4BLnECBL2BiQEY5WCWTHtJUix6f/i3akUEsoEL1Nn+o vfDNqVoge8W2hpsiWK4tukeJC5LhwmIFz/yVb8P9OGA93tttZLvykvXQsayh5Qjs HQZIQtci4rffQcIDotrVK4PJdXZCnBN8MPHI3HfqYQ2I2smkYog6LWj9XrNB3mXU AEHWkjXycqCENrjEFD9ZW/i8Fc+s6PfcOnFPg62pozhcqzVtFRorqXuY8XrHd2RF sbGOE4jO05vgtLUEd9PI7DMs5csGuact+jE3WAEn+9Mbfezsq0wYsV6CU5NaV1sM co6YSdHsKjcamO/WnQ2eb5VABceXAoTPUVR8vU4Qi7zmGbYER0I= =Yc8U -----END PGP SIGNATURE----- Merge 5.4.39 into android-5.4-stable Changes in 5.4.39 dma-buf: Fix SET_NAME ioctl uapi drm/edid: Fix off-by-one in DispID DTD pixel clock drm/amd/display: Fix green screen issue after suspend drm/qxl: qxl_release leak in qxl_draw_dirty_fb() drm/qxl: qxl_release leak in qxl_hw_surface_alloc() drm/qxl: qxl_release use after free NFSv4.1: fix handling of backchannel binding in BIND_CONN_TO_SESSION btrfs: fix transaction leak in btrfs_recover_relocation btrfs: fix block group leak when removing fails btrfs: fix partial loss of prealloc extent past i_size after fsync btrfs: transaction: Avoid deadlock due to bad initialization timing of fs_info::journal_info mmc: cqhci: Avoid false "cqhci: CQE stuck on" by not open-coding timeout loop mmc: sdhci-xenon: fix annoying 1.8V regulator warning mmc: sdhci-pci: Fix eMMC driver strength for BYT-based controllers mmc: sdhci-msm: Enable host capabilities pertains to R1b response mmc: meson-mx-sdio: Set MMC_CAP_WAIT_WHILE_BUSY mmc: meson-mx-sdio: remove the broken ->card_busy() op crypto: caam - fix the address of the last entry of S/G ALSA: hda/realtek - Two front mics on a Lenovo ThinkCenter ALSA: usb-audio: Correct a typo of NuPrime DAC-10 USB ID ALSA: hda/hdmi: fix without unlocked before return ALSA: line6: Fix POD HD500 audio playback ALSA: pcm: oss: Place the plugin buffer overflow checks correctly i2c: amd-mp2-pci: Fix Oops in amd_mp2_pci_init() error handling Drivers: hv: vmbus: Fix Suspend-to-Idle for Generation-2 VM dlmfs_file_write(): fix the bogosity in handling non-zero *ppos IB/rdmavt: Always return ERR_PTR from rvt_create_mmap_info() PM: ACPI: Output correct message on target power state PM: hibernate: Freeze kernel threads in software_resume() dm verity fec: fix hash block number in verity_fec_decode dm writecache: fix data corruption when reloading the target dm multipath: use updated MPATHF_QUEUE_IO on mapping for bio-based mpath ARM: dts: imx6qdl-sr-som-ti: indicate powering off wifi is safe scsi: qla2xxx: set UNLOADING before waiting for session deletion scsi: qla2xxx: check UNLOADING before posting async work RDMA/mlx5: Set GRH fields in query QP on RoCE RDMA/mlx4: Initialize ib_spec on the stack RDMA/siw: Fix potential siw_mem refcnt leak in siw_fastreg_mr() RDMA/core: Prevent mixed use of FDs between shared ufiles RDMA/core: Fix race between destroy and release FD object RDMA/cm: Fix ordering of xa_alloc_cyclic() in ib_create_cm_id() RDMA/cm: Fix an error check in cm_alloc_id_priv() i2c: iproc: generate stop event for slave writes vfio: avoid possible overflow in vfio_iommu_type1_pin_pages vfio/type1: Fix VA->PA translation for PFNMAP VMAs in vaddr_get_pfn() iommu/qcom: Fix local_base status check scsi: target/iblock: fix WRITE SAME zeroing iommu/amd: Fix legacy interrupt remapping for x2APIC-enabled system i2c: aspeed: Avoid i2c interrupt status clear race condition. ALSA: opti9xx: shut up gcc-10 range warning Fix use after free in get_tree_bdev() nvme: prevent double free in nvme_alloc_ns() error handling nfs: Fix potential posix_acl refcnt leak in nfs3_set_acl dmaengine: dmatest: Fix iteration non-stop logic dmaengine: dmatest: Fix process hang when reading 'wait' parameter arm64: vdso: Add -fasynchronous-unwind-tables to cflags selinux: properly handle multiple messages in selinux_netlink_send() Linux 5.4.39 Signed-off-by: Greg Kroah-Hartman <[email protected]> Change-Id: I34596d5cedd9946e8220165099483c53ba1d01fb
This commit is contained in:
commit
e752c9f98d
60 changed files with 426 additions and 232 deletions
|
|
@ -576,10 +576,12 @@ static struct pgpath *__map_bio(struct multipath *m, struct bio *bio)
|
|||
|
||||
/* Do we need to select a new pgpath? */
|
||||
pgpath = READ_ONCE(m->current_pgpath);
|
||||
queue_io = test_bit(MPATHF_QUEUE_IO, &m->flags);
|
||||
if (!pgpath || !queue_io)
|
||||
if (!pgpath || !test_bit(MPATHF_QUEUE_IO, &m->flags))
|
||||
pgpath = choose_pgpath(m, bio->bi_iter.bi_size);
|
||||
|
||||
/* MPATHF_QUEUE_IO might have been cleared by choose_pgpath. */
|
||||
queue_io = test_bit(MPATHF_QUEUE_IO, &m->flags);
|
||||
|
||||
if ((pgpath && queue_io) ||
|
||||
(!pgpath && test_bit(MPATHF_QUEUE_IF_NO_PATH, &m->flags))) {
|
||||
/* Queue for the daemon to resubmit */
|
||||
|
|
|
|||
|
|
@ -435,7 +435,7 @@ int verity_fec_decode(struct dm_verity *v, struct dm_verity_io *io,
|
|||
fio->level++;
|
||||
|
||||
if (type == DM_VERITY_BLOCK_TYPE_METADATA)
|
||||
block += v->data_blocks;
|
||||
block = block - v->hash_start + v->data_blocks;
|
||||
|
||||
/*
|
||||
* For RS(M, N), the continuous FEC data is divided into blocks of N
|
||||
|
|
|
|||
|
|
@ -878,6 +878,24 @@ static int writecache_alloc_entries(struct dm_writecache *wc)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int writecache_read_metadata(struct dm_writecache *wc, sector_t n_sectors)
|
||||
{
|
||||
struct dm_io_region region;
|
||||
struct dm_io_request req;
|
||||
|
||||
region.bdev = wc->ssd_dev->bdev;
|
||||
region.sector = wc->start_sector;
|
||||
region.count = n_sectors;
|
||||
req.bi_op = REQ_OP_READ;
|
||||
req.bi_op_flags = REQ_SYNC;
|
||||
req.mem.type = DM_IO_VMA;
|
||||
req.mem.ptr.vma = (char *)wc->memory_map;
|
||||
req.client = wc->dm_io;
|
||||
req.notify.fn = NULL;
|
||||
|
||||
return dm_io(&req, 1, ®ion, NULL);
|
||||
}
|
||||
|
||||
static void writecache_resume(struct dm_target *ti)
|
||||
{
|
||||
struct dm_writecache *wc = ti->private;
|
||||
|
|
@ -888,8 +906,18 @@ static void writecache_resume(struct dm_target *ti)
|
|||
|
||||
wc_lock(wc);
|
||||
|
||||
if (WC_MODE_PMEM(wc))
|
||||
if (WC_MODE_PMEM(wc)) {
|
||||
persistent_memory_invalidate_cache(wc->memory_map, wc->memory_map_size);
|
||||
} else {
|
||||
r = writecache_read_metadata(wc, wc->metadata_sectors);
|
||||
if (r) {
|
||||
size_t sb_entries_offset;
|
||||
writecache_error(wc, r, "unable to read metadata: %d", r);
|
||||
sb_entries_offset = offsetof(struct wc_memory_superblock, entries);
|
||||
memset((char *)wc->memory_map + sb_entries_offset, -1,
|
||||
(wc->metadata_sectors << SECTOR_SHIFT) - sb_entries_offset);
|
||||
}
|
||||
}
|
||||
|
||||
wc->tree = RB_ROOT;
|
||||
INIT_LIST_HEAD(&wc->lru);
|
||||
|
|
@ -1984,6 +2012,12 @@ static int writecache_ctr(struct dm_target *ti, unsigned argc, char **argv)
|
|||
ti->error = "Invalid block size";
|
||||
goto bad;
|
||||
}
|
||||
if (wc->block_size < bdev_logical_block_size(wc->dev->bdev) ||
|
||||
wc->block_size < bdev_logical_block_size(wc->ssd_dev->bdev)) {
|
||||
r = -EINVAL;
|
||||
ti->error = "Block size is smaller than device logical block size";
|
||||
goto bad;
|
||||
}
|
||||
wc->block_size_bits = __ffs(wc->block_size);
|
||||
|
||||
wc->max_writeback_jobs = MAX_WRITEBACK_JOBS;
|
||||
|
|
@ -2072,8 +2106,6 @@ invalid_optional:
|
|||
goto bad;
|
||||
}
|
||||
} else {
|
||||
struct dm_io_region region;
|
||||
struct dm_io_request req;
|
||||
size_t n_blocks, n_metadata_blocks;
|
||||
uint64_t n_bitmap_bits;
|
||||
|
||||
|
|
@ -2130,19 +2162,9 @@ invalid_optional:
|
|||
goto bad;
|
||||
}
|
||||
|
||||
region.bdev = wc->ssd_dev->bdev;
|
||||
region.sector = wc->start_sector;
|
||||
region.count = wc->metadata_sectors;
|
||||
req.bi_op = REQ_OP_READ;
|
||||
req.bi_op_flags = REQ_SYNC;
|
||||
req.mem.type = DM_IO_VMA;
|
||||
req.mem.ptr.vma = (char *)wc->memory_map;
|
||||
req.client = wc->dm_io;
|
||||
req.notify.fn = NULL;
|
||||
|
||||
r = dm_io(&req, 1, ®ion, NULL);
|
||||
r = writecache_read_metadata(wc, wc->block_size >> SECTOR_SHIFT);
|
||||
if (r) {
|
||||
ti->error = "Unable to read metadata";
|
||||
ti->error = "Unable to read first block of metadata";
|
||||
goto bad;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue