summaryrefslogtreecommitdiff
path: root/drivers/staging/most/hdm-usb
diff options
context:
space:
mode:
authorChristian Gromm <christian.gromm@microchip.com>2016-07-18 17:25:27 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-08-15 20:36:47 +0200
commitec7e0a189b3b3cab6c3dea72017683fccebee3dd (patch)
treea942ee65ed9797f7337f97dabb6382bf8a7e57c1 /drivers/staging/most/hdm-usb
parent99d753463a9a504ec6bb73203b3a2b73baf75996 (diff)
staging: most: hdm-usb: reduce context of list_del mutex
This patch reduces context of the list_del mutex for the function hdm_enqueue(). Signed-off-by: Andrey Shvetsov <andrey.shvetsov@k2l.de> Signed-off-by: Christian Gromm <christian.gromm@microchip.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/most/hdm-usb')
-rw-r--r--drivers/staging/most/hdm-usb/hdm_usb.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/staging/most/hdm-usb/hdm_usb.c b/drivers/staging/most/hdm-usb/hdm_usb.c
index 9ec29788c047..e63784d18d3d 100644
--- a/drivers/staging/most/hdm-usb/hdm_usb.c
+++ b/drivers/staging/most/hdm-usb/hdm_usb.c
@@ -663,15 +663,11 @@ static int hdm_enqueue(struct most_interface *iface, int channel,
init_completion(&anchor->urb_compl);
mbo->priv = anchor;
- spin_lock_irqsave(&mdev->anchor_list_lock[channel], flags);
- list_add_tail(&anchor->list, &mdev->anchor_list[channel]);
- spin_unlock_irqrestore(&mdev->anchor_list_lock[channel], flags);
-
if ((mdev->padding_active[channel]) &&
(conf->direction & MOST_CH_TX))
if (hdm_add_padding(mdev, channel, mbo)) {
retval = -EIO;
- goto _error_1;
+ goto _error;
}
urb->transfer_dma = mbo->bus_address;
@@ -699,6 +695,10 @@ static int hdm_enqueue(struct most_interface *iface, int channel,
}
urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
+ spin_lock_irqsave(&mdev->anchor_list_lock[channel], flags);
+ list_add_tail(&anchor->list, &mdev->anchor_list[channel]);
+ spin_unlock_irqrestore(&mdev->anchor_list_lock[channel], flags);
+
retval = usb_submit_urb(urb, GFP_KERNEL);
if (retval) {
dev_err(dev, "URB submit failed with error %d.\n", retval);