--- x/drivers/media/usb/hackrf/hackrf.c +++ y/drivers/media/usb/hackrf/hackrf.c @@ -1345,7 +1345,7 @@ static int hackrf_probe(struct usb_inter const struct usb_device_id *id) { struct hackrf_dev *dev; - int ret; + int ret, registered = 0; u8 u8tmp, buf[BUF_SIZE]; dev = kzalloc(sizeof(*dev), GFP_KERNEL); @@ -1487,6 +1487,7 @@ static int hackrf_probe(struct usb_inter "Failed to register as video device (%d)\n", ret); goto err_v4l2_device_unregister; } + registered++; dev_info(dev->dev, "Registered as %s\n", video_device_node_name(&dev->rx_vdev)); @@ -1520,7 +1521,8 @@ err_v4l2_ctrl_handler_free_tx: err_v4l2_ctrl_handler_free_rx: v4l2_ctrl_handler_free(&dev->rx_ctrl_handler); err_kfree: - kfree(dev); + if (!registered) + kfree(dev); err: dev_dbg(&intf->dev, "failed=%d\n", ret); return ret;