aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2019-03-09 19:53:47 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2019-03-09 19:53:47 -0500
commit92fff53b7191cae566be9ca6752069426c7f8241 (patch)
tree019396be4719ad3969d0395cfa0a90860be75f4a /drivers/usb
parenta50243b1ddcdd766d0d17fbfeeb1a22e62fdc461 (diff)
parent26af1a368e40618d67956b1f883fbcfec292c5d8 (diff)
Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
Pull SCSI updates from James Bottomley: "This is mostly update of the usual drivers: arcmsr, qla2xxx, lpfc, hisi_sas, target/iscsi and target/core. Additionally Christoph refactored gdth as part of the dma changes. The major mid-layer change this time is the removal of bidi commands and with them the whole of the osd/exofs driver and filesystem. This is a major simplification for block and mq in particular" * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (240 commits) scsi: cxgb4i: validate tcp sequence number only if chip version <= T5 scsi: cxgb4i: get pf number from lldi->pf scsi: core: replace GFP_ATOMIC with GFP_KERNEL in scsi_scan.c scsi: mpt3sas: Add missing breaks in switch statements scsi: aacraid: Fix missing break in switch statement scsi: kill command serial number scsi: csiostor: drop serial_number usage scsi: mvumi: use request tag instead of serial_number scsi: dpt_i2o: remove serial number usage scsi: st: osst: Remove negative constant left-shifts scsi: ufs-bsg: Allow reading descriptors scsi: ufs: Allow reading descriptor via raw upiu scsi: ufs-bsg: Change the calling convention for write descriptor scsi: ufs: Remove unused device quirks Revert "scsi: ufs: disable vccq if it's not needed by UFS device" scsi: megaraid_sas: Remove a bunch of set but not used variables scsi: clean obsolete return values of eh_timed_out scsi: sd: Optimal I/O size should be a multiple of physical block size scsi: MAINTAINERS: SCSI initiator and target tweaks scsi: fcoe: make use of fip_mode enum complete ...
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/gadget/function/f_tcm.c9
-rw-r--r--drivers/usb/storage/uas.c15
2 files changed, 4 insertions, 20 deletions
diff --git a/drivers/usb/gadget/function/f_tcm.c b/drivers/usb/gadget/function/f_tcm.c
index 34f5982cab78..7f01f78b1d23 100644
--- a/drivers/usb/gadget/function/f_tcm.c
+++ b/drivers/usb/gadget/function/f_tcm.c
@@ -1292,14 +1292,6 @@ static u32 usbg_sess_get_index(struct se_session *se_sess)
1292 return 0; 1292 return 0;
1293} 1293}
1294 1294
1295/*
1296 * XXX Error recovery: return != 0 if we expect writes. Dunno when that could be
1297 */
1298static int usbg_write_pending_status(struct se_cmd *se_cmd)
1299{
1300 return 0;
1301}
1302
1303static void usbg_set_default_node_attrs(struct se_node_acl *nacl) 1295static void usbg_set_default_node_attrs(struct se_node_acl *nacl)
1304{ 1296{
1305} 1297}
@@ -1725,7 +1717,6 @@ static const struct target_core_fabric_ops usbg_ops = {
1725 .sess_get_index = usbg_sess_get_index, 1717 .sess_get_index = usbg_sess_get_index,
1726 .sess_get_initiator_sid = NULL, 1718 .sess_get_initiator_sid = NULL,
1727 .write_pending = usbg_send_write_request, 1719 .write_pending = usbg_send_write_request,
1728 .write_pending_status = usbg_write_pending_status,
1729 .set_default_node_attributes = usbg_set_default_node_attrs, 1720 .set_default_node_attributes = usbg_set_default_node_attrs,
1730 .get_cmd_state = usbg_get_cmd_state, 1721 .get_cmd_state = usbg_get_cmd_state,
1731 .queue_data_in = usbg_send_read_response, 1722 .queue_data_in = usbg_send_read_response,
diff --git a/drivers/usb/storage/uas.c b/drivers/usb/storage/uas.c
index 36742e8e7edc..a6d68191c861 100644
--- a/drivers/usb/storage/uas.c
+++ b/drivers/usb/storage/uas.c
@@ -368,25 +368,19 @@ static void uas_data_cmplt(struct urb *urb)
368 struct scsi_cmnd *cmnd = urb->context; 368 struct scsi_cmnd *cmnd = urb->context;
369 struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; 369 struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp;
370 struct uas_dev_info *devinfo = (void *)cmnd->device->hostdata; 370 struct uas_dev_info *devinfo = (void *)cmnd->device->hostdata;
371 struct scsi_data_buffer *sdb = NULL; 371 struct scsi_data_buffer *sdb = &cmnd->sdb;
372 unsigned long flags; 372 unsigned long flags;
373 int status = urb->status; 373 int status = urb->status;
374 374
375 spin_lock_irqsave(&devinfo->lock, flags); 375 spin_lock_irqsave(&devinfo->lock, flags);
376 376
377 if (cmdinfo->data_in_urb == urb) { 377 if (cmdinfo->data_in_urb == urb) {
378 sdb = scsi_in(cmnd);
379 cmdinfo->state &= ~DATA_IN_URB_INFLIGHT; 378 cmdinfo->state &= ~DATA_IN_URB_INFLIGHT;
380 cmdinfo->data_in_urb = NULL; 379 cmdinfo->data_in_urb = NULL;
381 } else if (cmdinfo->data_out_urb == urb) { 380 } else if (cmdinfo->data_out_urb == urb) {
382 sdb = scsi_out(cmnd);
383 cmdinfo->state &= ~DATA_OUT_URB_INFLIGHT; 381 cmdinfo->state &= ~DATA_OUT_URB_INFLIGHT;
384 cmdinfo->data_out_urb = NULL; 382 cmdinfo->data_out_urb = NULL;
385 } 383 }
386 if (sdb == NULL) {
387 WARN_ON_ONCE(1);
388 goto out;
389 }
390 384
391 if (devinfo->resetting) 385 if (devinfo->resetting)
392 goto out; 386 goto out;
@@ -401,9 +395,9 @@ static void uas_data_cmplt(struct urb *urb)
401 if (status != -ENOENT && status != -ECONNRESET && status != -ESHUTDOWN) 395 if (status != -ENOENT && status != -ECONNRESET && status != -ESHUTDOWN)
402 uas_log_cmd_state(cmnd, "data cmplt err", status); 396 uas_log_cmd_state(cmnd, "data cmplt err", status);
403 /* error: no data transfered */ 397 /* error: no data transfered */
404 sdb->resid = sdb->length; 398 scsi_set_resid(cmnd, sdb->length);
405 } else { 399 } else {
406 sdb->resid = sdb->length - urb->actual_length; 400 scsi_set_resid(cmnd, sdb->length - urb->actual_length);
407 } 401 }
408 uas_try_complete(cmnd, __func__); 402 uas_try_complete(cmnd, __func__);
409out: 403out:
@@ -426,8 +420,7 @@ static struct urb *uas_alloc_data_urb(struct uas_dev_info *devinfo, gfp_t gfp,
426 struct usb_device *udev = devinfo->udev; 420 struct usb_device *udev = devinfo->udev;
427 struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; 421 struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp;
428 struct urb *urb = usb_alloc_urb(0, gfp); 422 struct urb *urb = usb_alloc_urb(0, gfp);
429 struct scsi_data_buffer *sdb = (dir == DMA_FROM_DEVICE) 423 struct scsi_data_buffer *sdb = &cmnd->sdb;
430 ? scsi_in(cmnd) : scsi_out(cmnd);
431 unsigned int pipe = (dir == DMA_FROM_DEVICE) 424 unsigned int pipe = (dir == DMA_FROM_DEVICE)
432 ? devinfo->data_in_pipe : devinfo->data_out_pipe; 425 ? devinfo->data_in_pipe : devinfo->data_out_pipe;
433 426