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: Dmitry Torokhov <dtor@mail.ru> Acked-by: Zhang Rui <rui.zhang@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
parent
4e231fa4cb
commit
4b4fe3b62e
@ -997,8 +997,18 @@ static void acpi_video_device_find_cap(struct acpi_video_device *device)
|
|||||||
|
|
||||||
device->cdev = thermal_cooling_device_register("LCD",
|
device->cdev = thermal_cooling_device_register("LCD",
|
||||||
device->dev, &video_cooling_ops);
|
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;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
dev_info(&device->dev->dev, "registered as cooling_device%d\n",
|
dev_info(&device->dev->dev, "registered as cooling_device%d\n",
|
||||||
device->cdev->id);
|
device->cdev->id);
|
||||||
|
Loading…
Reference in New Issue
Block a user