diff options
| author | David S. Miller <davem@davemloft.net> | 2013-09-27 02:08:03 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2013-09-27 02:08:03 -0400 |
| commit | f875691640cd3fa67f7ad1d3130ff9fa7fdca042 (patch) | |
| tree | b33a56d240b32ad2d68a9ed88bda57474d0e1d52 | |
| parent | 207070f5221e2a901d56a49df9cde47d9b716cd7 (diff) | |
| parent | f37d6e701f2a3a04e66690397340a6417f6e053f (diff) | |
Merge branch 'fixes-for-3.12' of git://gitorious.org/linux-can/linux-can
| -rw-r--r-- | drivers/net/can/usb/peak_usb/pcan_usb_core.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/net/can/usb/peak_usb/pcan_usb_core.c b/drivers/net/can/usb/peak_usb/pcan_usb_core.c index a0f647f92bf5..0b7a4c3b01a2 100644 --- a/drivers/net/can/usb/peak_usb/pcan_usb_core.c +++ b/drivers/net/can/usb/peak_usb/pcan_usb_core.c | |||
| @@ -463,7 +463,7 @@ static int peak_usb_start(struct peak_usb_device *dev) | |||
| 463 | if (i < PCAN_USB_MAX_TX_URBS) { | 463 | if (i < PCAN_USB_MAX_TX_URBS) { |
| 464 | if (i == 0) { | 464 | if (i == 0) { |
| 465 | netdev_err(netdev, "couldn't setup any tx URB\n"); | 465 | netdev_err(netdev, "couldn't setup any tx URB\n"); |
| 466 | return err; | 466 | goto err_tx; |
| 467 | } | 467 | } |
| 468 | 468 | ||
| 469 | netdev_warn(netdev, "tx performance may be slow\n"); | 469 | netdev_warn(netdev, "tx performance may be slow\n"); |
| @@ -472,7 +472,7 @@ static int peak_usb_start(struct peak_usb_device *dev) | |||
| 472 | if (dev->adapter->dev_start) { | 472 | if (dev->adapter->dev_start) { |
| 473 | err = dev->adapter->dev_start(dev); | 473 | err = dev->adapter->dev_start(dev); |
| 474 | if (err) | 474 | if (err) |
| 475 | goto failed; | 475 | goto err_adapter; |
| 476 | } | 476 | } |
| 477 | 477 | ||
| 478 | dev->state |= PCAN_USB_STATE_STARTED; | 478 | dev->state |= PCAN_USB_STATE_STARTED; |
| @@ -481,19 +481,26 @@ static int peak_usb_start(struct peak_usb_device *dev) | |||
| 481 | if (dev->adapter->dev_set_bus) { | 481 | if (dev->adapter->dev_set_bus) { |
| 482 | err = dev->adapter->dev_set_bus(dev, 1); | 482 | err = dev->adapter->dev_set_bus(dev, 1); |
| 483 | if (err) | 483 | if (err) |
| 484 | goto failed; | 484 | goto err_adapter; |
| 485 | } | 485 | } |
| 486 | 486 | ||
| 487 | dev->can.state = CAN_STATE_ERROR_ACTIVE; | 487 | dev->can.state = CAN_STATE_ERROR_ACTIVE; |
| 488 | 488 | ||
| 489 | return 0; | 489 | return 0; |
| 490 | 490 | ||
| 491 | failed: | 491 | err_adapter: |
| 492 | if (err == -ENODEV) | 492 | if (err == -ENODEV) |
| 493 | netif_device_detach(dev->netdev); | 493 | netif_device_detach(dev->netdev); |
| 494 | 494 | ||
| 495 | netdev_warn(netdev, "couldn't submit control: %d\n", err); | 495 | netdev_warn(netdev, "couldn't submit control: %d\n", err); |
| 496 | 496 | ||
| 497 | for (i = 0; i < PCAN_USB_MAX_TX_URBS; i++) { | ||
| 498 | usb_free_urb(dev->tx_contexts[i].urb); | ||
| 499 | dev->tx_contexts[i].urb = NULL; | ||
| 500 | } | ||
| 501 | err_tx: | ||
| 502 | usb_kill_anchored_urbs(&dev->rx_submitted); | ||
| 503 | |||
| 497 | return err; | 504 | return err; |
| 498 | } | 505 | } |
| 499 | 506 | ||
