summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAditya Pakki2019-01-05 15:14:41 +0100
committerGreg Kroah-Hartman2019-01-07 11:28:15 +0100
commitc8c2702409430a6a2fd928e857f15773aaafcc99 (patch)
tree2b442531fd07f3d3e21c20b592c8aaa8b4eec023 /drivers
parentstaging: mt7621-dma: Use struct_size() in devm_kzalloc() (diff)
downloadkernel-qcow2-linux-c8c2702409430a6a2fd928e857f15773aaafcc99.tar.gz
kernel-qcow2-linux-c8c2702409430a6a2fd928e857f15773aaafcc99.tar.xz
kernel-qcow2-linux-c8c2702409430a6a2fd928e857f15773aaafcc99.zip
Staging: rts5208: Fix error handling on rtsx_send_cmd
In sd_execute_write_data, the rtsx_send_cmd could fail with ETIMEDOUT or EIO. The fix adds a check to handle these failures. Signed-off-by: Aditya Pakki <pakki001@umn.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/staging/rts5208/sd.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/staging/rts5208/sd.c b/drivers/staging/rts5208/sd.c
index 2c47ae613ea1..c256a2398651 100644
--- a/drivers/staging/rts5208/sd.c
+++ b/drivers/staging/rts5208/sd.c
@@ -4437,7 +4437,12 @@ int sd_execute_write_data(struct scsi_cmnd *srb, struct rtsx_chip *chip)
rtsx_init_cmd(chip);
rtsx_add_cmd(chip, CHECK_REG_CMD, 0xFD30, 0x02, 0x02);
- rtsx_send_cmd(chip, SD_CARD, 250);
+ retval = rtsx_send_cmd(chip, SD_CARD, 250);
+ if (retval < 0) {
+ write_err = true;
+ rtsx_clear_sd_error(chip);
+ goto sd_execute_write_cmd_failed;
+ }
retval = sd_update_lock_status(chip);
if (retval != STATUS_SUCCESS) {