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>
This commit is contained in:
Christian Gromm 2016-07-18 17:25:27 +02:00 committed by Greg Kroah-Hartman
parent 99d753463a
commit ec7e0a189b

View file

@ -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);