All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] usbip: vhci_hcd: slighly simplify code in 'vhci_urb_dequeue()'
@ 2020-03-21 15:29 ` Christophe JAILLET
  0 siblings, 0 replies; 7+ messages in thread
From: Christophe JAILLET @ 2020-03-21 15:29 UTC (permalink / raw)
  To: valentina.manea.m, shuah, gregkh
  Cc: linux-usb, linux-kernel, kernel-janitors, Christophe JAILLET

The allocation of 'unlink' can be moved before a spin_lock.
This slighly simplifies the error handling if the memory allocation fails,
aligns the code structure with what is done in 'vhci_tx_urb()' and reduces
potential lock contention.

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
 drivers/usb/usbip/vhci_hcd.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/usb/usbip/vhci_hcd.c b/drivers/usb/usbip/vhci_hcd.c
index 65850e9c7190..b909a634260c 100644
--- a/drivers/usb/usbip/vhci_hcd.c
+++ b/drivers/usb/usbip/vhci_hcd.c
@@ -905,17 +905,16 @@ static int vhci_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status)
 		/* tcp connection is alive */
 		struct vhci_unlink *unlink;
 
-		spin_lock(&vdev->priv_lock);
-
 		/* setup CMD_UNLINK pdu */
 		unlink = kzalloc(sizeof(struct vhci_unlink), GFP_ATOMIC);
 		if (!unlink) {
-			spin_unlock(&vdev->priv_lock);
 			spin_unlock_irqrestore(&vhci->lock, flags);
 			usbip_event_add(&vdev->ud, VDEV_EVENT_ERROR_MALLOC);
 			return -ENOMEM;
 		}
 
+		spin_lock(&vdev->priv_lock);
+
 		unlink->seqnum = atomic_inc_return(&vhci_hcd->seqnum);
 		if (unlink->seqnum = 0xffff)
 			pr_info("seqnum max\n");
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2020-03-23 16:56 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-03-21 15:29 [PATCH] usbip: vhci_hcd: slighly simplify code in 'vhci_urb_dequeue()' Christophe JAILLET
2020-03-21 15:29 ` Christophe JAILLET
2020-03-23 16:48 ` shuah
2020-03-23 16:48   ` shuah
2020-03-23 16:56   ` Christophe JAILLET
2020-03-23 16:56     ` Christophe JAILLET
2020-03-23 16:56     ` Christophe JAILLET

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.