diff options
author | David S. Miller <davem@davemloft.net> | 2016-03-08 12:34:12 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-03-08 12:34:12 -0500 |
commit | 810813c47a564416f6306ae214e2661366c987a7 (patch) | |
tree | f0d1f856d4b0024324f642fe519963248828b83f /drivers/net/can | |
parent | d66ab51442211158b677c2f12310c314d9587f74 (diff) | |
parent | e2857b8f11a289ed2b61d18d0665e05c1053c446 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Several cases of overlapping changes, as well as one instance
(vxlan) of a bug fix in 'net' overlapping with code movement
in 'net-next'.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/can')
-rw-r--r-- | drivers/net/can/spi/mcp251x.c | 2 | ||||
-rw-r--r-- | drivers/net/can/usb/gs_usb.c | 24 |
2 files changed, 12 insertions, 14 deletions
diff --git a/drivers/net/can/spi/mcp251x.c b/drivers/net/can/spi/mcp251x.c index 575790e8a75a..74a7dfecee27 100644 --- a/drivers/net/can/spi/mcp251x.c +++ b/drivers/net/can/spi/mcp251x.c | |||
@@ -843,7 +843,7 @@ static irqreturn_t mcp251x_can_ist(int irq, void *dev_id) | |||
843 | if (clear_intf) | 843 | if (clear_intf) |
844 | mcp251x_write_bits(spi, CANINTF, clear_intf, 0x00); | 844 | mcp251x_write_bits(spi, CANINTF, clear_intf, 0x00); |
845 | 845 | ||
846 | if (eflag) | 846 | if (eflag & (EFLG_RX0OVR | EFLG_RX1OVR)) |
847 | mcp251x_write_bits(spi, EFLG, eflag, 0x00); | 847 | mcp251x_write_bits(spi, EFLG, eflag, 0x00); |
848 | 848 | ||
849 | /* Update can state */ | 849 | /* Update can state */ |
diff --git a/drivers/net/can/usb/gs_usb.c b/drivers/net/can/usb/gs_usb.c index 5eee62badf45..cbc99d5649af 100644 --- a/drivers/net/can/usb/gs_usb.c +++ b/drivers/net/can/usb/gs_usb.c | |||
@@ -826,9 +826,8 @@ static struct gs_can *gs_make_candev(unsigned int channel, struct usb_interface | |||
826 | static void gs_destroy_candev(struct gs_can *dev) | 826 | static void gs_destroy_candev(struct gs_can *dev) |
827 | { | 827 | { |
828 | unregister_candev(dev->netdev); | 828 | unregister_candev(dev->netdev); |
829 | free_candev(dev->netdev); | ||
830 | usb_kill_anchored_urbs(&dev->tx_submitted); | 829 | usb_kill_anchored_urbs(&dev->tx_submitted); |
831 | kfree(dev); | 830 | free_candev(dev->netdev); |
832 | } | 831 | } |
833 | 832 | ||
834 | static int gs_usb_probe(struct usb_interface *intf, const struct usb_device_id *id) | 833 | static int gs_usb_probe(struct usb_interface *intf, const struct usb_device_id *id) |
@@ -913,12 +912,15 @@ static int gs_usb_probe(struct usb_interface *intf, const struct usb_device_id * | |||
913 | for (i = 0; i < icount; i++) { | 912 | for (i = 0; i < icount; i++) { |
914 | dev->canch[i] = gs_make_candev(i, intf); | 913 | dev->canch[i] = gs_make_candev(i, intf); |
915 | if (IS_ERR_OR_NULL(dev->canch[i])) { | 914 | if (IS_ERR_OR_NULL(dev->canch[i])) { |
915 | /* save error code to return later */ | ||
916 | rc = PTR_ERR(dev->canch[i]); | ||
917 | |||
916 | /* on failure destroy previously created candevs */ | 918 | /* on failure destroy previously created candevs */ |
917 | icount = i; | 919 | icount = i; |
918 | for (i = 0; i < icount; i++) { | 920 | for (i = 0; i < icount; i++) |
919 | gs_destroy_candev(dev->canch[i]); | 921 | gs_destroy_candev(dev->canch[i]); |
920 | dev->canch[i] = NULL; | 922 | |
921 | } | 923 | usb_kill_anchored_urbs(&dev->rx_submitted); |
922 | kfree(dev); | 924 | kfree(dev); |
923 | return rc; | 925 | return rc; |
924 | } | 926 | } |
@@ -939,16 +941,12 @@ static void gs_usb_disconnect(struct usb_interface *intf) | |||
939 | return; | 941 | return; |
940 | } | 942 | } |
941 | 943 | ||
942 | for (i = 0; i < GS_MAX_INTF; i++) { | 944 | for (i = 0; i < GS_MAX_INTF; i++) |
943 | struct gs_can *can = dev->canch[i]; | 945 | if (dev->canch[i]) |
944 | 946 | gs_destroy_candev(dev->canch[i]); | |
945 | if (!can) | ||
946 | continue; | ||
947 | |||
948 | gs_destroy_candev(can); | ||
949 | } | ||
950 | 947 | ||
951 | usb_kill_anchored_urbs(&dev->rx_submitted); | 948 | usb_kill_anchored_urbs(&dev->rx_submitted); |
949 | kfree(dev); | ||
952 | } | 950 | } |
953 | 951 | ||
954 | static const struct usb_device_id gs_usb_table[] = { | 952 | static const struct usb_device_id gs_usb_table[] = { |