From: Akinobu Mita Subject: [PATCH v3 1/7] scsi_debug: fix false positive logical block reference tag check fail Date: Wed, 26 Feb 2014 22:56:58 +0900 Message-ID: <1393423024-8063-2-git-send-email-akinobu.mita@gmail.com> References: <1393423024-8063-1-git-send-email-akinobu.mita@gmail.com> Return-path: Received: from mail-pa0-f41.google.com ([209.85.220.41]:35928 "EHLO mail-pa0-f41.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750717AbaBZN5W (ORCPT ); Wed, 26 Feb 2014 08:57:22 -0500 Received: by mail-pa0-f41.google.com with SMTP id fa1so1006892pad.28 for ; Wed, 26 Feb 2014 05:57:22 -0800 (PST) In-Reply-To: <1393423024-8063-1-git-send-email-akinobu.mita@gmail.com> Sender: linux-scsi-owner@vger.kernel.org List-Id: linux-scsi@vger.kernel.org To: linux-scsi@vger.kernel.org Cc: Akinobu Mita , Douglas Gilbert , "Martin K. Petersen" , James Bottomley 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 Cc: Douglas Gilbert Cc: "Martin K. Petersen" Cc: James Bottomley Cc: linux-scsi@vger.kernel.org --- drivers/scsi/scsi_debug.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/scsi/scsi_debug.c b/drivers/scsi/scsi_debug.c index 2decc64..bdfb9be 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); -- 1.8.3.2