diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2019-03-09 19:53:47 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2019-03-09 19:53:47 -0500 |
| commit | 92fff53b7191cae566be9ca6752069426c7f8241 (patch) | |
| tree | 019396be4719ad3969d0395cfa0a90860be75f4a /drivers/usb | |
| parent | a50243b1ddcdd766d0d17fbfeeb1a22e62fdc461 (diff) | |
| parent | 26af1a368e40618d67956b1f883fbcfec292c5d8 (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.c | 9 | ||||
| -rw-r--r-- | drivers/usb/storage/uas.c | 15 |
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 | */ | ||
| 1298 | static int usbg_write_pending_status(struct se_cmd *se_cmd) | ||
| 1299 | { | ||
| 1300 | return 0; | ||
| 1301 | } | ||
| 1302 | |||
| 1303 | static void usbg_set_default_node_attrs(struct se_node_acl *nacl) | 1295 | static 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__); |
| 409 | out: | 403 | out: |
| @@ -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 | ||
