Signed-off-by: Hans de Goede <hdego...@redhat.com>
---
 drivers/usb/storage/uas.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/usb/storage/uas.c b/drivers/usb/storage/uas.c
index bb50337..3c4cf1e 100644
--- a/drivers/usb/storage/uas.c
+++ b/drivers/usb/storage/uas.c
@@ -379,9 +379,19 @@ static void uas_stat_cmplt(struct urb *urb)
                uas_try_complete(cmnd, __func__);
                break;
        case IU_ID_READ_READY:
+               if (!cmdinfo->data_in_urb ||
+                               (cmdinfo->state & DATA_IN_URB_INFLIGHT)) {
+                       scmd_printk(KERN_ERR, cmnd, "unexpected read rdy\n");
+                       break;
+               }
                uas_xfer_data(urb, cmnd, SUBMIT_DATA_IN_URB);
                break;
        case IU_ID_WRITE_READY:
+               if (!cmdinfo->data_out_urb ||
+                               (cmdinfo->state & DATA_OUT_URB_INFLIGHT)) {
+                       scmd_printk(KERN_ERR, cmnd, "unexpected write rdy\n");
+                       break;
+               }
                uas_xfer_data(urb, cmnd, SUBMIT_DATA_OUT_URB);
                break;
        default:
-- 
1.8.4.2

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to