diff options
author | Sebastian Haas <dev@sebastianhaas.info> | 2011-12-22 23:58:34 +0100 |
---|---|---|
committer | Marc Kleine-Budde <mkl@pengutronix.de> | 2012-02-03 01:21:25 +0100 |
commit | 2ee6850ca0cac95101d2a36c8b186b40d4fc7311 (patch) | |
tree | 002e25689ba79cab63cdcde606c0f7f9e6b1d1da /drivers/net/can | |
parent | can: flexcan: Fix CAN_RAW_RECV_OWN_MSGS and CAN_RAW_LOOPBACK (diff) | |
download | linux-2ee6850ca0cac95101d2a36c8b186b40d4fc7311.tar.xz linux-2ee6850ca0cac95101d2a36c8b186b40d4fc7311.zip |
can: ems_usb: Improved memory handling on ems_usb_start
Do not return from ems_usb_start if allocation fails. If not all URBs
could be allocated use the one already submitted.
Signed-off-by: Sebastian Haas <dev@sebastianhaas.info>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Diffstat (limited to 'drivers/net/can')
-rw-r--r-- | drivers/net/can/usb/ems_usb.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/can/usb/ems_usb.c b/drivers/net/can/usb/ems_usb.c index 7dae64d44e83..9783e02fbc26 100644 --- a/drivers/net/can/usb/ems_usb.c +++ b/drivers/net/can/usb/ems_usb.c @@ -607,7 +607,8 @@ static int ems_usb_start(struct ems_usb *dev) if (!urb) { dev_err(netdev->dev.parent, "No memory left for URBs\n"); - return -ENOMEM; + err = -ENOMEM; + break; } buf = usb_alloc_coherent(dev->udev, RX_BUFFER_SIZE, GFP_KERNEL, @@ -616,7 +617,8 @@ static int ems_usb_start(struct ems_usb *dev) dev_err(netdev->dev.parent, "No memory left for USB buffer\n"); usb_free_urb(urb); - return -ENOMEM; + err = -ENOMEM; + break; } usb_fill_bulk_urb(urb, dev->udev, usb_rcvbulkpipe(dev->udev, 2), |