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:
parent
99d753463a
commit
ec7e0a189b
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue