summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorLen Brown <len.brown@intel.com>2006-06-15 21:30:59 -0400
committerLen Brown <len.brown@intel.com>2006-06-15 21:30:59 -0400
commitde59e3aa6eda7fc7cd6c717f084930f6a841b602 (patch)
tree0b763a7992a75885ca74f130b0807b4def2c341a /drivers
parent69cd291c6bbc6647fe3783257c5a2e076e808f71 (diff)
parent973bf491a55b825740f0d8d300b50bcd3d6fb8de (diff)
downloadlinux-0-day-de59e3aa6eda7fc7cd6c717f084930f6a841b602.tar.gz
linux-0-day-de59e3aa6eda7fc7cd6c717f084930f6a841b602.tar.xz
Pull video into release branch
Diffstat (limited to 'drivers')
-rw-r--r--drivers/acpi/video.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
index 724149d72d91a..86531ab4ee551 100644
--- a/drivers/acpi/video.c
+++ b/drivers/acpi/video.c
@@ -1294,7 +1294,7 @@ acpi_video_bus_get_one_device(struct acpi_device *device,
struct acpi_video_bus *video)
{
unsigned long device_id;
- int status, result;
+ int status;
struct acpi_video_device *data;
ACPI_FUNCTION_TRACE("acpi_video_bus_get_one_device");
@@ -1346,8 +1346,11 @@ acpi_video_bus_get_one_device(struct acpi_device *device,
if (ACPI_FAILURE(status)) {
ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
"Error installing notify handler\n"));
- result = -ENODEV;
- goto end;
+ if(data->brightness)
+ kfree(data->brightness->levels);
+ kfree(data->brightness);
+ kfree(data);
+ return -ENODEV;
}
down(&video->sem);
@@ -1359,7 +1362,6 @@ acpi_video_bus_get_one_device(struct acpi_device *device,
return_VALUE(0);
}
- end:
return_VALUE(-ENOENT);
}
@@ -1643,8 +1645,9 @@ static int acpi_video_bus_put_devices(struct acpi_video_bus *video)
printk(KERN_WARNING PREFIX
"hhuuhhuu bug in acpi video driver.\n");
+ if (data->brightness);
+ kfree(data->brightness->levels);
kfree(data->brightness);
-
kfree(data);
}
@@ -1785,6 +1788,10 @@ static int acpi_video_bus_add(struct acpi_device *device)
if (ACPI_FAILURE(status)) {
ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
"Error installing notify handler\n"));
+ acpi_video_bus_stop_devices(video);
+ acpi_video_bus_put_devices(video);
+ kfree(video->attached_array);
+ acpi_video_bus_remove_fs(device);
result = -ENODEV;
goto end;
}
@@ -1796,10 +1803,8 @@ static int acpi_video_bus_add(struct acpi_device *device)
video->flags.post ? "yes" : "no");
end:
- if (result) {
- acpi_video_bus_remove_fs(device);
+ if (result)
kfree(video);
- }
return_VALUE(result);
}