USB: usbip: clean up mixed use of _irq() and _irqsave()
authorDan Carpenter <dan.carpenter@oracle.com>
Wed, 25 May 2022 12:27:20 +0000 (15:27 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 10 Jun 2022 09:48:15 +0000 (11:48 +0200)
It generally doesn't make sense to use _irq() and _irqsave() in the same
function because either some of the callers have disabled IRQs or they
haven't.  In this case, the v_recv_cmd_submit() appears to always be
called with IRQs enabled so the code works fine.  That means I could
convert it to either _irq() or _irqsave() but I chose to use _irqsave()
because it's more conservative and easier to review.

Reviewed-by: Shuah Khan <skhan@linuxfoundation.org>
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Link: https://lore.kernel.org/r/Yo4gqLPtHO6XKMLn@kili
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/usbip/vudc_rx.c

index 1e8a23d92cb4b86bd5ae7173b6b35ac8e37392f9..d4a2f30a7580937389d844810b35826eee74d374 100644 (file)
@@ -104,18 +104,18 @@ static int v_recv_cmd_submit(struct vudc *udc,
        if (pdu->base.direction == USBIP_DIR_IN)
                address |= USB_DIR_IN;
 
-       spin_lock_irq(&udc->lock);
+       spin_lock_irqsave(&udc->lock, flags);
        urb_p->ep = vudc_find_endpoint(udc, address);
        if (!urb_p->ep) {
                /* we don't know the type, there may be isoc data! */
                dev_err(&udc->pdev->dev, "request to nonexistent endpoint");
-               spin_unlock_irq(&udc->lock);
+               spin_unlock_irqrestore(&udc->lock, flags);
                usbip_event_add(&udc->ud, VUDC_EVENT_ERROR_TCP);
                ret = -EPIPE;
                goto free_urbp;
        }
        urb_p->type = urb_p->ep->type;
-       spin_unlock_irq(&udc->lock);
+       spin_unlock_irqrestore(&udc->lock, flags);
 
        urb_p->new = 1;
        urb_p->seqnum = pdu->base.seqnum;