ACPICA: iASL/disassembler - fix possible fault for -e option.
authorBob Moore <robert.moore@intel.com>
Thu, 21 May 2015 02:31:44 +0000 (10:31 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 22 May 2015 01:22:21 +0000 (03:22 +0200)
ACPICA commit 403b8b0023fd7549b2f9bf818fcc1ba481047b69

If non-AML files are used with the -e option, the disassembler
can fault. The fix is to ensure that all -e files are either
SSDTs or a DSDT. ACPICA BZ 1158.

Link: https://github.com/acpica/acpica/commit/403b8b00
Reference: https://bugs.acpica.org/show_bug.cgi?id=1158
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/acpica/acdebug.h
drivers/acpi/acpica/utfileio.c
drivers/acpi/acpica/utxferror.c

index 4169bb8..43685dd 100644 (file)
@@ -231,7 +231,9 @@ void acpi_db_open_debug_file(char *name);
 acpi_status acpi_db_load_acpi_table(char *filename);
 
 acpi_status
-acpi_db_get_table_from_file(char *filename, struct acpi_table_header **table);
+acpi_db_get_table_from_file(char *filename,
+                           struct acpi_table_header **table,
+                           u8 must_be_aml_table);
 
 /*
  * dbhistry - debugger HISTORY command
index f72c53c..857af82 100644 (file)
@@ -312,7 +312,7 @@ acpi_ut_read_table_from_file(char *filename, struct acpi_table_header ** table)
        /* Get the entire file */
 
        fprintf(stderr,
-               "Loading Acpi table from file %10s - Length %.8u (%06X)\n",
+               "Reading ACPI table from file %10s - Length %.8u (0x%06X)\n",
                filename, file_size, file_size);
 
        status = acpi_ut_read_table(file, table, &table_length);
index 306e785..98d5787 100644 (file)
@@ -107,9 +107,16 @@ acpi_exception(const char *module_name,
        va_list arg_list;
 
        ACPI_MSG_REDIRECT_BEGIN;
-       acpi_os_printf(ACPI_MSG_EXCEPTION "%s, ",
-                      acpi_format_exception(status));
 
+       /* For AE_OK, just print the message */
+
+       if (ACPI_SUCCESS(status)) {
+               acpi_os_printf(ACPI_MSG_EXCEPTION);
+
+       } else {
+               acpi_os_printf(ACPI_MSG_EXCEPTION "%s, ",
+                              acpi_format_exception(status));
+       }
        va_start(arg_list, format);
        acpi_os_vprintf(format, arg_list);
        ACPI_MSG_SUFFIX;