scsi: sd_zbc: Fix sd_zbc_check_zone_size() error path
authorDamien Le Moal <damien.lemoal@wdc.com>
Thu, 31 May 2018 08:42:40 +0000 (17:42 +0900)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 6 Jun 2018 01:18:41 +0000 (21:18 -0400)
If a drive with variable zone sizes or an invalid last zone size is
detected, the local variable this_zone_blocks is set to 0 and early return
from the function triggered, but this does not result in an error return.
The local variable zone_blocks must be set to 0 for an error to be
returned.

[mkp: typo in commit description]

Fixes: ccce20fc7968 ("scsi: sd_zbc: Avoid that resetting a zone fails sporadically")
Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Cc: Bart Van Assche <bart.vanassche@wdc.com>
Reviewed-by: Bart Van Assche <bart.vanassche@wdc.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/sd_zbc.c

index 210407cd2341bf9bb89f5831939d4c0a204af485..ff1ba996d87b03f692eaa62a46112c1a3ce4a6ff 100644 (file)
@@ -452,7 +452,7 @@ static s64 sd_zbc_check_zone_size(struct scsi_disk *sdkp)
                        } else if (this_zone_blocks != zone_blocks &&
                                   (block + this_zone_blocks < sdkp->capacity
                                    || this_zone_blocks > zone_blocks)) {
-                               this_zone_blocks = 0;
+                               zone_blocks = 0;
                                goto out;
                        }
                        block += this_zone_blocks;