Merge git://git.infradead.org/mtd-2.6
[pandora-kernel.git] / drivers / acpi / utils.c
index 34f1575..1009261 100644 (file)
@@ -36,16 +36,20 @@ ACPI_MODULE_NAME("utils");
 /* --------------------------------------------------------------------------
                             Object Evaluation Helpers
    -------------------------------------------------------------------------- */
+static void
+acpi_util_eval_error(acpi_handle h, acpi_string p, acpi_status s)
+{
 #ifdef ACPI_DEBUG_OUTPUT
-#define acpi_util_eval_error(h,p,s) {\
-       char prefix[80] = {'\0'};\
-       struct acpi_buffer buffer = {sizeof(prefix), prefix};\
-       acpi_get_name(h, ACPI_FULL_PATHNAME, &buffer);\
-       ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Evaluate [%s.%s]: %s\n",\
-               (char *) prefix, p, acpi_format_exception(s))); }
+       char prefix[80] = {'\0'};
+       struct acpi_buffer buffer = {sizeof(prefix), prefix};
+       acpi_get_name(h, ACPI_FULL_PATHNAME, &buffer);
+       ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Evaluate [%s.%s]: %s\n",
+               (char *) prefix, p, acpi_format_exception(s)));
 #else
-#define acpi_util_eval_error(h,p,s)
+       return;
 #endif
+}
+
 acpi_status
 acpi_extract_package(union acpi_object *package,
                     struct acpi_buffer *format, struct acpi_buffer *buffer)
@@ -394,7 +398,7 @@ acpi_evaluate_reference(acpi_handle handle,
 
                element = &(package->package.elements[i]);
 
-               if (element->type != ACPI_TYPE_ANY) {
+               if (element->type != ACPI_TYPE_LOCAL_REFERENCE) {
                        status = AE_BAD_DATA;
                        printk(KERN_ERR PREFIX
                                    "Expecting a [Reference] package element, found type %X\n",
@@ -403,6 +407,12 @@ acpi_evaluate_reference(acpi_handle handle,
                        break;
                }
 
+               if (!element->reference.handle) {
+                       printk(KERN_WARNING PREFIX "Invalid reference in"
+                              " package %s\n", pathname);
+                       status = AE_NULL_ENTRY;
+                       break;
+               }
                /* Get the  acpi_handle. */
 
                list->handles[i] = element->reference.handle;