mirror of
https://github.com/torvalds/linux.git
synced 2024-11-01 04:53:36 +01:00
SCSI fixes on 20241030
Two small fixes, both in drivers (ufs and scsi_debug). Signed-off-by: James E.J. Bottomley <James.Bottomley@HansenPartnership.com> -----BEGIN PGP SIGNATURE----- iJwEABMIAEQWIQTnYEDbdso9F2cI+arnQslM7pishQUCZyH+cSYcamFtZXMuYm90 dG9tbGV5QGhhbnNlbnBhcnRuZXJzaGlwLmNvbQAKCRDnQslM7pishVdMAQDdOiaS 9DO+ly/Il64wXZqb9WKcVYRIjmz7m7g5xdMgrgEA1yfD6G7GgQ3zvbVPNC7Y9ecr 4O2iR5EGAVb1Y7UaEQU= =551G -----END PGP SIGNATURE----- Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi Pull SCSI fixes from James Bottomley: "Two small fixes, both in drivers (ufs and scsi_debug)" * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: scsi: ufs: core: Fix another deadlock during RTC update scsi: scsi_debug: Fix do_device_access() handling of unexpected SG copy length
This commit is contained in:
commit
4236f91380
2 changed files with 5 additions and 7 deletions
|
@ -3651,7 +3651,7 @@ static int do_device_access(struct sdeb_store_info *sip, struct scsi_cmnd *scp,
|
||||||
enum dma_data_direction dir;
|
enum dma_data_direction dir;
|
||||||
struct scsi_data_buffer *sdb = &scp->sdb;
|
struct scsi_data_buffer *sdb = &scp->sdb;
|
||||||
u8 *fsp;
|
u8 *fsp;
|
||||||
int i;
|
int i, total = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Even though reads are inherently atomic (in this driver), we expect
|
* Even though reads are inherently atomic (in this driver), we expect
|
||||||
|
@ -3688,18 +3688,16 @@ static int do_device_access(struct sdeb_store_info *sip, struct scsi_cmnd *scp,
|
||||||
fsp + (block * sdebug_sector_size),
|
fsp + (block * sdebug_sector_size),
|
||||||
sdebug_sector_size, sg_skip, do_write);
|
sdebug_sector_size, sg_skip, do_write);
|
||||||
sdeb_data_sector_unlock(sip, do_write);
|
sdeb_data_sector_unlock(sip, do_write);
|
||||||
if (ret != sdebug_sector_size) {
|
total += ret;
|
||||||
ret += (i * sdebug_sector_size);
|
if (ret != sdebug_sector_size)
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
sg_skip += sdebug_sector_size;
|
sg_skip += sdebug_sector_size;
|
||||||
if (++block >= sdebug_store_sectors)
|
if (++block >= sdebug_store_sectors)
|
||||||
block = 0;
|
block = 0;
|
||||||
}
|
}
|
||||||
ret = num * sdebug_sector_size;
|
|
||||||
sdeb_data_unlock(sip, atomic);
|
sdeb_data_unlock(sip, atomic);
|
||||||
|
|
||||||
return ret;
|
return total;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Returns number of bytes copied or -1 if error. */
|
/* Returns number of bytes copied or -1 if error. */
|
||||||
|
|
|
@ -8219,7 +8219,7 @@ static void ufshcd_update_rtc(struct ufs_hba *hba)
|
||||||
|
|
||||||
err = ufshcd_query_attr(hba, UPIU_QUERY_OPCODE_WRITE_ATTR, QUERY_ATTR_IDN_SECONDS_PASSED,
|
err = ufshcd_query_attr(hba, UPIU_QUERY_OPCODE_WRITE_ATTR, QUERY_ATTR_IDN_SECONDS_PASSED,
|
||||||
0, 0, &val);
|
0, 0, &val);
|
||||||
ufshcd_rpm_put_sync(hba);
|
ufshcd_rpm_put(hba);
|
||||||
|
|
||||||
if (err)
|
if (err)
|
||||||
dev_err(hba->dev, "%s: Failed to update rtc %d\n", __func__, err);
|
dev_err(hba->dev, "%s: Failed to update rtc %d\n", __func__, err);
|
||||||
|
|
Loading…
Reference in a new issue