From: Akinobu Mita Date: Wed, 26 Feb 2014 13:56:58 +0000 (+0900) Subject: [SCSI] scsi_debug: fix false positive logical block reference tag check fail X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=c45eabec08776d462c34802d3e5bad295bda628e;p=linux-beck.git [SCSI] scsi_debug: fix false positive logical block reference tag check fail Reading partially unwritten sectors generates a false positive logical block reference tag check failure when DIF is enabled. This bug is caused by missing ei_lba increment in loop of dif_verify() when unwritten sector is skipped. Signed-off-by: Akinobu Mita Acked-by: Martin K. Petersen Reviewed-by: Douglas Gilbert Signed-off-by: James Bottomley --- diff --git a/drivers/scsi/scsi_debug.c b/drivers/scsi/scsi_debug.c index 2decc6417518..bdfb9be1ec75 100644 --- a/drivers/scsi/scsi_debug.c +++ b/drivers/scsi/scsi_debug.c @@ -1832,7 +1832,7 @@ static int prot_verify_read(struct scsi_cmnd *SCpnt, sector_t start_sec, struct sd_dif_tuple *sdt; sector_t sector; - for (i = 0; i < sectors; i++) { + for (i = 0; i < sectors; i++, ei_lba++) { int ret; sector = start_sec + i; @@ -1846,8 +1846,6 @@ static int prot_verify_read(struct scsi_cmnd *SCpnt, sector_t start_sec, dif_errors++; return ret; } - - ei_lba++; } dif_copy_prot(SCpnt, start_sec, sectors, true);