2008-10-13 21:29:21

by Dugger, Donald D

[permalink] [raw]
Subject: [PATCH] Fix possible NULL ptr dereference in ACPI code

Code in file `drivers/acpi/pci_link.c' is attempting to evaluate the _DIS
method to disable a link. Unfortunately, the method code unconditionally
uses the last argument as a pointer on success so passing a NULL could
wind up dereferencing 0. This patch just passes an appropriate pointer
to avoid this issue.

Signed-off-by: Don Dugger <[email protected]>

----- cut here for acpi-1013.patch -----
diff --git a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c
index cf47805..1d03a1f 100644
--- a/drivers/acpi/pci_link.c
+++ b/drivers/acpi/pci_link.c
@@ -671,6 +671,7 @@ int acpi_pci_link_free_irq(acpi_handle handle)
{
struct acpi_device *device = NULL;
struct acpi_pci_link *link = NULL;
+ union acpi_operand_object *dummy;
acpi_status result;


@@ -709,7 +710,7 @@ int acpi_pci_link_free_irq(acpi_handle handle)
acpi_device_bid(link->device)));

if (link->refcnt == 0) {
- acpi_ut_evaluate_object(link->device->handle, "_DIS", 0, NULL);
+ acpi_ut_evaluate_object(link->device->handle, "_DIS", 0, &dummy);
}
mutex_unlock(&acpi_link_lock);
return (link->irq.active);
@@ -721,6 +722,7 @@ int acpi_pci_link_free_irq(acpi_handle handle)

static int acpi_pci_link_add(struct acpi_device *device)
{
+ union acpi_operand_object *dummy;
int result = 0;
struct acpi_pci_link *link = NULL;
int i = 0;
@@ -773,7 +775,7 @@ static int acpi_pci_link_add(struct acpi_device *device)

end:
/* disable all links -- to be activated on use */
- acpi_ut_evaluate_object(device->handle, "_DIS", 0, NULL);
+ acpi_ut_evaluate_object(device->handle, "_DIS", 0, &dummy);
mutex_unlock(&acpi_link_lock);

if (result)