diff --git a/drivers/scsi/scsi_debug.c b/drivers/scsi/scsi_debug.c index 98e4ffaa8b06..cfe6bd154e8d 100644 --- a/drivers/scsi/scsi_debug.c +++ b/drivers/scsi/scsi_debug.c @@ -6352,16 +6352,16 @@ static int resp_atomic_write(struct scsi_cmnd *scp, if (scsi_bufflen(scp) < len * sdebug_sector_size) return DID_ERROR << 16; - if (lbp) - sdeb_meta_write_lock(sip); - - ret = do_device_access(sip, scp, 0, lba, len, 0, true, true); if (lbp) { + sdeb_meta_write_lock(sip); + ret = do_device_access(sip, scp, 0, lba, len, 0, true, true); map_region(sip, lba, len); sdeb_meta_write_unlock(sip); + } else { + ret = do_device_access(sip, scp, 0, lba, len, 0, true, true); } - if (unlikely(ret == -1)) + if (unlikely(ret < 0)) return DID_ERROR << 16; if (unlikely(ret != len * sdebug_sector_size)) return DID_ERROR << 16;