Skip to content

Commit 1e97426

Browse files
committed
Merge tag 'linux-can-fixes-for-4.9-20161208' of git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can
Marc Kleine-Budde says: ==================== pull-request: can 2016-12-08 this is a pull request for one patch. Jiho Chu found and fixed a use-after-free error in the cleanup path in the peak pcan USB CAN driver. ==================== Signed-off-by: David S. Miller <[email protected]>
2 parents d2a007a + b67d0dd commit 1e97426

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

drivers/net/can/usb/peak_usb/pcan_usb_core.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -870,23 +870,25 @@ static int peak_usb_create_dev(const struct peak_usb_adapter *peak_usb_adapter,
870870
static void peak_usb_disconnect(struct usb_interface *intf)
871871
{
872872
struct peak_usb_device *dev;
873+
struct peak_usb_device *dev_prev_siblings;
873874

874875
/* unregister as many netdev devices as siblings */
875-
for (dev = usb_get_intfdata(intf); dev; dev = dev->prev_siblings) {
876+
for (dev = usb_get_intfdata(intf); dev; dev = dev_prev_siblings) {
876877
struct net_device *netdev = dev->netdev;
877878
char name[IFNAMSIZ];
878879

880+
dev_prev_siblings = dev->prev_siblings;
879881
dev->state &= ~PCAN_USB_STATE_CONNECTED;
880882
strncpy(name, netdev->name, IFNAMSIZ);
881883

882884
unregister_netdev(netdev);
883-
free_candev(netdev);
884885

885886
kfree(dev->cmd_buf);
886887
dev->next_siblings = NULL;
887888
if (dev->adapter->dev_free)
888889
dev->adapter->dev_free(dev);
889890

891+
free_candev(netdev);
890892
dev_info(&intf->dev, "%s removed\n", name);
891893
}
892894

0 commit comments

Comments
 (0)