Hi, Static analysis with Coverity on Linux next has found and issue in drivers/md/dm.c with the following commit: commit 2c243153d1d4be4e23735cd10984ac17c7a54531 Author: Damien Le Moal <damien.lemoal@xxxxxxx> Date: Wed May 26 06:24:58 2021 +0900 dm: Forbid requeue of writes to zones The analysis is as follows: 828 static void dec_pending(struct dm_io *io, blk_status_t error) 829 { 830 unsigned long flags; 831 blk_status_t io_error; 1. var_decl: Declaring variable bio without initializer. 832 struct bio *bio; 833 struct mapped_device *md = io->md; 834 835 /* Push-back supersedes any I/O errors */ 2. Condition !!error, taking true branch. 836 if (unlikely(error)) { 837 spin_lock_irqsave(&io->endio_lock, flags); 3. Condition io->status == 11 /* (blk_status_t)11 */, taking false branch. 838 if (!(io->status == BLK_STS_DM_REQUEUE && __noflush_suspending(md))) 839 io->status = error; 840 spin_unlock_irqrestore(&io->endio_lock, flags); 841 } 842 4. Condition atomic_dec_and_test(&io->io_count), taking true branch. 843 if (atomic_dec_and_test(&io->io_count)) { 5. Condition io->status == 11 /* (blk_status_t)11 */, taking true branch. 844 if (io->status == BLK_STS_DM_REQUEUE) { 845 /* 846 * Target requested pushing back the I/O. 847 */ 848 spin_lock_irqsave(&md->deferred_lock, flags); 6. Condition __noflush_suspending(md), taking true branch. 849 if (__noflush_suspending(md) && Uninitialized pointer read 7. uninit_use_in_call: Using uninitialized value bio when calling dm_is_zone_write. 850 !WARN_ON_ONCE(dm_is_zone_write(md, bio))) 851 /* NOTE early return due to BLK_STS_DM_REQUEUE below */ 852 bio_list_add_head(&md->deferred, io->orig_bio); The pointer bio is not initialized and yet is being used in the call to function dm_is_zone_write where pointer bio is being accessed. I'm not sure what the original intent was, but this looks incorrect. Colin -- dm-devel mailing list dm-devel@xxxxxxxxxx https://listman.redhat.com/mailman/listinfo/dm-devel