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:
Linus Torvalds 2024-10-30 08:16:23 -10:00
commit 4236f91380
2 changed files with 5 additions and 7 deletions

View file

@ -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. */

View file

@ -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);