linux/drivers/md
Shin'ichiro Kawasaki 92b914e29a dm: fix bio length of empty flush
The commit 92986f6b4c ("dm: use bio_clone_fast in alloc_io/alloc_tio")
removed bio_clone_fast() call from alloc_tio() when ci->io->tio is
available. In this case, ci->bio is not copied to ci->io->tio.clone.
This is fine since init_clone_info() sets same values to ci->bio and
ci->io->tio.clone.

However, when incoming bios have REQ_PREFLUSH flag, __send_empty_flush()
prepares a zero length bio on stack and set it to ci->bio. At this time,
ci->io->tio.clone still keeps non-zero length. When alloc_tio() chooses
this ci->io->tio.clone as the bio to map, it is passed to targets as
non-empty flush bio. It causes bio length check failure in dm-zoned and
unexpected operation such as dm_accept_partial_bio() call.

To avoid the non-empty flush bio, set zero length to ci->io->tio.clone
in __send_empty_flush().

Fixes: 92986f6b4c ("dm: use bio_clone_fast in alloc_io/alloc_tio")
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Signed-off-by: Mike Snitzer <snitzer@kernel.org>
2022-04-15 16:16:09 -04:00
..
bcache Driver core changes for 5.18-rc1 2022-03-28 12:41:28 -07:00
persistent-data dm space map common: add bounds check to sm_ll_lookup_bitmap() 2022-01-04 13:58:19 -05:00
dm-audit.c dm: introduce audit event module for device mapper 2021-10-27 16:53:47 -04:00
dm-audit.h dm: introduce audit event module for device mapper 2021-10-27 16:53:47 -04:00
dm-bio-prison-v1.c
dm-bio-prison-v1.h
dm-bio-prison-v2.c
dm-bio-prison-v2.h
dm-bio-record.h block: move integrity handling out of <linux/blkdev.h> 2021-10-18 06:17:02 -06:00
dm-bufio.c - Add DM core support for emitting audit events through the audit 2021-11-09 11:02:04 -08:00
dm-builtin.c
dm-cache-background-tracker.c
dm-cache-background-tracker.h
dm-cache-block-types.h
dm-cache-metadata.c dm: use bdev_nr_sectors and bdev_nr_bytes instead of open coding them 2021-10-18 14:43:22 -06:00
dm-cache-metadata.h
dm-cache-policy-internal.h
dm-cache-policy-smq.c dm cache policy smq: make static read-only array table const 2022-02-22 10:35:53 -05:00
dm-cache-policy.c
dm-cache-policy.h
dm-cache-target.c dm cache: use dm_submit_bio_remap 2022-03-10 13:44:57 -05:00
dm-clone-metadata.c dm clone metadata: remove unused function 2021-04-19 13:20:31 -04:00
dm-clone-metadata.h
dm-clone-target.c dm: stop using bdevname 2022-03-02 12:15:54 -05:00
dm-core.h dm: fix dm_io and dm_target_io flags race condition on Alpha 2022-04-01 13:19:27 -04:00
dm-crypt.c SCSI misc on 20220324 2022-03-24 19:37:53 -07:00
dm-delay.c dm: simplify dm_sumbit_bio_remap interface 2022-03-10 13:44:56 -05:00
dm-dust.c dm: use bdev_nr_sectors and bdev_nr_bytes instead of open coding them 2021-10-18 14:43:22 -06:00
dm-ebs-target.c scsi: dm: Remove WRITE_SAME support 2022-02-22 21:11:08 -05:00
dm-era-target.c dm: use bdev_nr_sectors and bdev_nr_bytes instead of open coding them 2021-10-18 14:43:22 -06:00
dm-exception-store.c
dm-exception-store.h dm: use bdev_nr_sectors and bdev_nr_bytes instead of open coding them 2021-10-18 14:43:22 -06:00
dm-flakey.c dm: use bdev_nr_sectors and bdev_nr_bytes instead of open coding them 2021-10-18 14:43:22 -06:00
dm-ima.c dm ima: fix wrong length calculation for no_data string 2022-02-22 10:42:41 -05:00
dm-ima.h dm ima: add version info to dm related events in ima log 2021-08-20 15:59:47 -04:00
dm-init.c
dm-integrity.c dm integrity: fix memory corruption when tag_size is less than digest size 2022-04-13 12:38:49 -04:00
dm-io-tracker.h dm writecache: make writeback pause configurable 2021-06-28 16:30:13 -04:00
dm-io.c SCSI misc on 20220324 2022-03-24 19:37:53 -07:00
dm-ioctl.c dm ioctl: log an error if the ioctl structure is corrupted 2022-04-01 10:29:43 -04:00
dm-kcopyd.c dm writecache: have ssd writeback wait if the kcopyd workqueue is busy 2021-06-15 15:42:03 -04:00
dm-linear.c scsi: dm: Remove WRITE_SAME support 2022-02-22 21:11:08 -05:00
dm-log-userspace-base.c dm: update target status functions to support IMA measurement 2021-08-10 13:34:23 -04:00
dm-log-userspace-transfer.c
dm-log-userspace-transfer.h
dm-log-writes.c block: pass a block_device and opf to bio_alloc 2022-02-02 07:49:59 -07:00
dm-log.c dm: use bdev_nr_sectors and bdev_nr_bytes instead of open coding them 2021-10-18 14:43:22 -06:00
dm-mpath.c SCSI misc on 20220324 2022-03-24 19:37:53 -07:00
dm-mpath.h
dm-path-selector.c
dm-path-selector.h
dm-ps-historical-service-time.c dm mpath: only use ktime_get_ns() in historical selector 2022-04-13 13:22:16 -04:00
dm-ps-io-affinity.c dm: update target status functions to support IMA measurement 2021-08-10 13:34:23 -04:00
dm-ps-queue-length.c dm: update target status functions to support IMA measurement 2021-08-10 13:34:23 -04:00
dm-ps-round-robin.c dm: update target status functions to support IMA measurement 2021-08-10 13:34:23 -04:00
dm-ps-service-time.c dm: update target status functions to support IMA measurement 2021-08-10 13:34:23 -04:00
dm-raid1.c dm: update target status functions to support IMA measurement 2021-08-10 13:34:23 -04:00
dm-raid.c dm: use bdev_nr_sectors and bdev_nr_bytes instead of open coding them 2021-10-18 14:43:22 -06:00
dm-region-hash.c
dm-rq.c SCSI misc on 20220324 2022-03-24 19:37:53 -07:00
dm-rq.h
dm-snap-persistent.c dm: update target status functions to support IMA measurement 2021-08-10 13:34:23 -04:00
dm-snap-transient.c dm: update target status functions to support IMA measurement 2021-08-10 13:34:23 -04:00
dm-snap.c dm-snap: use blkdev_issue_flush instead of open coding it 2022-02-02 07:49:59 -07:00
dm-stats.c dm stats: fix too short end duration_ns when using precise_timestamps 2022-02-21 15:35:39 -05:00
dm-stats.h dm stats: fix too short end duration_ns when using precise_timestamps 2022-02-21 15:35:39 -05:00
dm-stripe.c scsi: dm: Remove WRITE_SAME support 2022-02-22 21:11:08 -05:00
dm-switch.c dm: use bdev_nr_sectors and bdev_nr_bytes instead of open coding them 2021-10-18 14:43:22 -06:00
dm-sysfs.c dm sysfs: use default_groups in kobj_type 2022-01-06 09:48:55 -05:00
dm-table.c SCSI misc on 20220324 2022-03-24 19:37:53 -07:00
dm-target.c
dm-thin-metadata.c dm thin metadata: remove unused dm_thin_remove_block and __remove 2022-02-22 13:55:50 -05:00
dm-thin-metadata.h dm thin metadata: remove unused dm_thin_remove_block and __remove 2022-02-22 13:55:50 -05:00
dm-thin.c dm: simplify dm_sumbit_bio_remap interface 2022-03-10 13:44:56 -05:00
dm-uevent.c
dm-uevent.h
dm-unstripe.c dm: update target status functions to support IMA measurement 2021-08-10 13:34:23 -04:00
dm-verity-fec.c dm verity fec: fix misaligned RS roots IO 2021-04-14 14:28:29 -04:00
dm-verity-fec.h dm verity fec: fix misaligned RS roots IO 2021-04-14 14:28:29 -04:00
dm-verity-target.c - Add DM core support for emitting audit events through the audit 2021-11-09 11:02:04 -08:00
dm-verity-verify-sig.c dm verity: fix require_signatures module_param permissions 2021-05-25 16:14:05 -04:00
dm-verity-verify-sig.h
dm-verity.h
dm-writecache.c block: pass a block_device and opf to bio_alloc_bioset 2022-02-02 07:49:59 -07:00
dm-zero.c dm: add support for REQ_NOWAIT to various targets 2020-12-04 18:04:35 -05:00
dm-zone.c dm zone: fix NULL pointer dereference in dm_zone_map_bio 2022-04-13 13:22:17 -04:00
dm-zoned-metadata.c dm-zoned: remove the ->name field in struct dmz_dev 2022-03-02 12:15:35 -05:00
dm-zoned-reclaim.c dm kcopyd: avoid useless atomic operations 2021-06-04 12:07:24 -04:00
dm-zoned-target.c dm-zoned: remove the ->name field in struct dmz_dev 2022-03-02 12:15:35 -05:00
dm-zoned.h dm-zoned: remove the ->name field in struct dmz_dev 2022-03-02 12:15:35 -05:00
dm.c dm: fix bio length of empty flush 2022-04-15 16:16:09 -04:00
dm.h dax: remove dax_capable 2021-12-04 08:58:51 -08:00
Kconfig blk-mq: make the blk-mq stacking code optional 2022-02-16 19:39:09 -07:00
Makefile dm: introduce audit event module for device mapper 2021-10-27 16:53:47 -04:00
md-autodetect.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
md-bitmap.c md/bitmap: don't set max_write_behind if there is no write mostly device 2021-11-02 11:41:44 -07:00
md-bitmap.h
md-cluster.c md: fix spelling of "its" 2022-01-06 08:37:03 -08:00
md-cluster.h
md-faulty.c block: pass a block_device to bio_clone_fast 2022-02-04 07:43:18 -07:00
md-linear.c scsi: md: Remove WRITE_SAME support 2022-02-22 21:11:08 -05:00
md-linear.h
md-multipath.c SCSI misc on 20220324 2022-03-24 19:37:53 -07:00
md-multipath.h
md.c for-5.18/drivers-2022-03-18 2022-03-21 17:16:01 -07:00
md.h scsi: md: Remove WRITE_SAME support 2022-02-22 21:11:08 -05:00
raid0.c scsi: md: Remove WRITE_SAME support 2022-02-22 21:11:08 -05:00
raid0.h
raid1-10.c md: raid1/raid10: drop pending_cnt 2022-03-08 15:16:54 -08:00
raid1.c for-5.18/write-streams-2022-03-18 2022-03-26 11:51:46 -07:00
raid1.h md: raid1/raid10: drop pending_cnt 2022-03-08 15:16:54 -08:00
raid5-cache.c raid5-cache: statically allocate the recovery ra bio 2022-03-08 22:55:09 -08:00
raid5-log.h
raid5-ppl.c for-5.18/write-streams-2022-03-18 2022-03-26 11:51:46 -07:00
raid5.c for-5.18/write-streams-2022-03-18 2022-03-26 11:51:46 -07:00
raid5.h md/raid5: play nice with PREEMPT_RT 2022-01-06 08:37:02 -08:00
raid10.c SCSI misc on 20220324 2022-03-24 19:37:53 -07:00
raid10.h md: raid1/raid10: drop pending_cnt 2022-03-08 15:16:54 -08:00