From: Dmitry Torokhov Date: Sat, 8 Aug 2009 07:26:25 +0000 (-0700) Subject: ACPI: video - fix potential crash when unloading X-Git-Tag: v2.6.32-rc1~171^2^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4b4fe3b62e8d88068083218d3e42c45223b51d29;p=thirdparty%2Flinux.git 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 Acked-by: Zhang Rui Signed-off-by: Len Brown --- diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c index 2020907921cc3..aab3851885996 100644 --- a/drivers/acpi/video.c +++ b/drivers/acpi/video.c @@ -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);