ACPI: PRM: Find PRMT table before parsing it
[linux-2.6-microblaze.git] / drivers / acpi / prmt.c
index 31cf9ae..89c22bc 100644 (file)
@@ -288,10 +288,24 @@ invalid_guid:
 
 void __init init_prmt(void)
 {
+       struct acpi_table_header *tbl;
        acpi_status status;
-       int mc = acpi_table_parse_entries(ACPI_SIG_PRMT, sizeof(struct acpi_table_prmt) +
+       int mc;
+
+       status = acpi_get_table(ACPI_SIG_PRMT, 0, &tbl);
+       if (ACPI_FAILURE(status))
+               return;
+
+       mc = acpi_table_parse_entries(ACPI_SIG_PRMT, sizeof(struct acpi_table_prmt) +
                                          sizeof (struct acpi_table_prmt_header),
                                          0, acpi_parse_prmt, 0);
+       acpi_put_table(tbl);
+       /*
+        * Return immediately if PRMT table is not present or no PRM module found.
+        */
+       if (mc <= 0)
+               return;
+
        pr_info("PRM: found %u modules\n", mc);
 
        status = acpi_install_address_space_handler(ACPI_ROOT_OBJECT,