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

Commit 4b4fe3b6 authored by Dmitry Torokhov's avatar Dmitry Torokhov Committed by Len Brown
Browse files

ACPI: video - fix potential crash when unloading



thermal_cooling_device_register() returns error encoded in a pointer
when it fails in which case we need to explictly set device->cdev
to NULL so we don't try to unregister it when unloading.

Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
Acked-by: default avatarZhang Rui <rui.zhang@intel.com>
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent 4e231fa4
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -997,8 +997,18 @@ static void acpi_video_device_find_cap(struct acpi_video_device *device)

		device->cdev = thermal_cooling_device_register("LCD",
					device->dev, &video_cooling_ops);
		if (IS_ERR(device->cdev))
		if (IS_ERR(device->cdev)) {
			/*
			 * Set cdev to NULL so we don't crash trying to
			 * free it.
			 * Also, why the hell we are returning early and
			 * not attempt to register video output if cooling
			 * device registration failed?
			 * -- dtor
			 */
			device->cdev = NULL;
			return;
		}

		dev_info(&device->dev->dev, "registered as cooling_device%d\n",
			 device->cdev->id);