Commit 5555b7c5 authored by Ofir Bitton's avatar Ofir Bitton Committed by Oded Gabbay
Browse files

habanalabs: put devices before driver removal



Driver never puts its device and control_device objects, hence
a memory leak is introduced every driver removal.

Signed-off-by: default avatarOfir Bitton <obitton@habana.ai>
Reviewed-by: default avatarOded Gabbay <ogabbay@kernel.org>
Signed-off-by: default avatarOded Gabbay <ogabbay@kernel.org>
parent c8c39fbd
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -231,16 +231,16 @@ delete_cdev_device:

static void device_cdev_sysfs_del(struct hl_device *hdev)
{
	/* device_release() won't be called so must free devices explicitly */
	if (!hdev->cdev_sysfs_created) {
		kfree(hdev->dev_ctrl);
		kfree(hdev->dev);
		return;
	}
	if (!hdev->cdev_sysfs_created)
		goto put_devices;

	hl_sysfs_fini(hdev);
	cdev_device_del(&hdev->cdev_ctrl, hdev->dev_ctrl);
	cdev_device_del(&hdev->cdev, hdev->dev);

put_devices:
	put_device(hdev->dev);
	put_device(hdev->dev_ctrl);
}

/*
@@ -1371,9 +1371,9 @@ sw_fini:
early_fini:
	device_early_fini(hdev);
free_dev_ctrl:
	kfree(hdev->dev_ctrl);
	put_device(hdev->dev_ctrl);
free_dev:
	kfree(hdev->dev);
	put_device(hdev->dev);
out_disabled:
	hdev->disabled = true;
	if (add_cdev_sysfs_on_err)