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:
Dmitry Torokhov 2009-08-08 00:26:25 -07:00 коммит произвёл Len Brown
Родитель 4e231fa4cb
Коммит 4b4fe3b62e
1 изменённых файлов: 11 добавлений и 1 удалений

Просмотреть файл

@ -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);