diff options
author | Christian Gromm <christian.gromm@microchip.com> | 2016-07-18 17:25:27 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2016-08-15 20:36:47 +0200 |
commit | ec7e0a189b3b3cab6c3dea72017683fccebee3dd (patch) | |
tree | a942ee65ed9797f7337f97dabb6382bf8a7e57c1 /drivers/staging | |
parent | 99d753463a9a504ec6bb73203b3a2b73baf75996 (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')
-rw-r--r-- | drivers/staging/most/hdm-usb/hdm_usb.c | 10 |
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); |