Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4afe2156 authored by Marc Kleine-Budde's avatar Marc Kleine-Budde
Browse files

can: usb_8dev: unregister netdev before free()ing



The usb_8dev hardware has problems on some xhci USB hosts. The driver fails to
read the firmware revision in the probe function. This leads to the following
Oops:

    [ 3356.635912] kernel BUG at net/core/dev.c:5701!

The driver tries to free the netdev, which has already been registered, without
unregistering it.

This patch fixes the problem by unregistering the netdev in the error path.

Reported-by: default avatarMichael Olbrich <m.olbrich@pengutronix.de>
Reviewed-by: default avatarBernd Krumboeck <krumboeck@universalnet.at>
Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
parent 33be081a
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -977,7 +977,7 @@ static int usb_8dev_probe(struct usb_interface *intf,
	err = usb_8dev_cmd_version(priv, &version);
	if (err) {
		netdev_err(netdev, "can't get firmware version\n");
		goto cleanup_cmd_msg_buffer;
		goto cleanup_unregister_candev;
	} else {
		netdev_info(netdev,
			 "firmware: %d.%d, hardware: %d.%d\n",
@@ -989,6 +989,9 @@ static int usb_8dev_probe(struct usb_interface *intf,

	return 0;

cleanup_unregister_candev:
	unregister_netdev(priv->netdev);

cleanup_cmd_msg_buffer:
	kfree(priv->cmd_msg_buffer);