Browse Source

UAS: also check for ESHUTDOWN in error reporting

-ESHUTDOWN means that the HC has been unplugged.
Reporting an error in that case makes no sense.

Signed-off-by: Oliver Neukum <oneukum@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Oliver Neukum 10 years ago
parent
commit
cca26be3e6
1 changed files with 8 additions and 8 deletions
  1. 8 8
      drivers/usb/storage/uas.c

+ 8 - 8
drivers/usb/storage/uas.c

@@ -257,17 +257,16 @@ static void uas_stat_cmplt(struct urb *urb)
 	struct uas_cmd_info *cmdinfo;
 	struct uas_cmd_info *cmdinfo;
 	unsigned long flags;
 	unsigned long flags;
 	unsigned int idx;
 	unsigned int idx;
+	int status = urb->status;
 
 
 	spin_lock_irqsave(&devinfo->lock, flags);
 	spin_lock_irqsave(&devinfo->lock, flags);
 
 
 	if (devinfo->resetting)
 	if (devinfo->resetting)
 		goto out;
 		goto out;
 
 
-	if (urb->status) {
-		if (urb->status != -ENOENT && urb->status != -ECONNRESET) {
-			dev_err(&urb->dev->dev, "stat urb: status %d\n",
-				urb->status);
-		}
+	if (status) {
+		if (status != -ENOENT && status != -ECONNRESET && status != -ESHUTDOWN)
+			dev_err(&urb->dev->dev, "stat urb: status %d\n", status);
 		goto out;
 		goto out;
 	}
 	}
 
 
@@ -348,6 +347,7 @@ static void uas_data_cmplt(struct urb *urb)
 	struct uas_dev_info *devinfo = (void *)cmnd->device->hostdata;
 	struct uas_dev_info *devinfo = (void *)cmnd->device->hostdata;
 	struct scsi_data_buffer *sdb = NULL;
 	struct scsi_data_buffer *sdb = NULL;
 	unsigned long flags;
 	unsigned long flags;
+	int status = urb->status;
 
 
 	spin_lock_irqsave(&devinfo->lock, flags);
 	spin_lock_irqsave(&devinfo->lock, flags);
 
 
@@ -374,9 +374,9 @@ static void uas_data_cmplt(struct urb *urb)
 		goto out;
 		goto out;
 	}
 	}
 
 
-	if (urb->status) {
-		if (urb->status != -ENOENT && urb->status != -ECONNRESET)
-			uas_log_cmd_state(cmnd, "data cmplt err", urb->status);
+	if (status) {
+		if (status != -ENOENT && status != -ECONNRESET && status != -ESHUTDOWN)
+			uas_log_cmd_state(cmnd, "data cmplt err", status);
 		/* error: no data transfered */
 		/* error: no data transfered */
 		sdb->resid = sdb->length;
 		sdb->resid = sdb->length;
 	} else {
 	} else {