ACPICA: Fix unalignment in acpi_ut_repair_name
Update interface to acpi_ut_repair_name() to avoid alignment issues on IA64 Signed-off-by: Alexey Starikovskiy <alexey.y.starikovskiy@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
@@ -205,7 +205,7 @@ acpi_ns_dump_one_object(acpi_handle obj_handle,
|
|||||||
|
|
||||||
if (!acpi_ut_valid_acpi_name(this_node->name.integer)) {
|
if (!acpi_ut_valid_acpi_name(this_node->name.integer)) {
|
||||||
this_node->name.integer =
|
this_node->name.integer =
|
||||||
acpi_ut_repair_name(this_node->name.integer);
|
acpi_ut_repair_name(this_node->name.ascii);
|
||||||
|
|
||||||
ACPI_WARNING((AE_INFO, "Invalid ACPI Name %08X",
|
ACPI_WARNING((AE_INFO, "Invalid ACPI Name %08X",
|
||||||
this_node->name.integer));
|
this_node->name.integer));
|
||||||
|
@@ -321,7 +321,8 @@ acpi_ns_search_and_enter(u32 target_name,
|
|||||||
* even though there are a few bad names.
|
* even though there are a few bad names.
|
||||||
*/
|
*/
|
||||||
if (!acpi_ut_valid_acpi_name(target_name)) {
|
if (!acpi_ut_valid_acpi_name(target_name)) {
|
||||||
target_name = acpi_ut_repair_name(target_name);
|
target_name =
|
||||||
|
acpi_ut_repair_name(ACPI_CAST_PTR(char, &target_name));
|
||||||
|
|
||||||
/* Report warning only if in strict mode or debug mode */
|
/* Report warning only if in strict mode or debug mode */
|
||||||
|
|
||||||
|
@@ -566,7 +566,7 @@ char *acpi_ut_get_node_name(void *object)
|
|||||||
/* Name must be a valid ACPI name */
|
/* Name must be a valid ACPI name */
|
||||||
|
|
||||||
if (!acpi_ut_valid_acpi_name(node->name.integer)) {
|
if (!acpi_ut_valid_acpi_name(node->name.integer)) {
|
||||||
node->name.integer = acpi_ut_repair_name(node->name.integer);
|
node->name.integer = acpi_ut_repair_name(node->name.ascii);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return the name */
|
/* Return the name */
|
||||||
|
@@ -582,26 +582,25 @@ u8 acpi_ut_valid_acpi_name(u32 name)
|
|||||||
*
|
*
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
acpi_name acpi_ut_repair_name(acpi_name name)
|
acpi_name acpi_ut_repair_name(char *name)
|
||||||
{
|
{
|
||||||
char *name_ptr = ACPI_CAST_PTR(char, &name);
|
|
||||||
char new_name[ACPI_NAME_SIZE];
|
|
||||||
acpi_native_uint i;
|
acpi_native_uint i;
|
||||||
|
char new_name[ACPI_NAME_SIZE];
|
||||||
|
|
||||||
for (i = 0; i < ACPI_NAME_SIZE; i++) {
|
for (i = 0; i < ACPI_NAME_SIZE; i++) {
|
||||||
new_name[i] = name_ptr[i];
|
new_name[i] = name[i];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Replace a bad character with something printable, yet technically
|
* Replace a bad character with something printable, yet technically
|
||||||
* still invalid. This prevents any collisions with existing "good"
|
* still invalid. This prevents any collisions with existing "good"
|
||||||
* names in the namespace.
|
* names in the namespace.
|
||||||
*/
|
*/
|
||||||
if (!acpi_ut_valid_acpi_char(name_ptr[i], i)) {
|
if (!acpi_ut_valid_acpi_char(name[i], i)) {
|
||||||
new_name[i] = '*';
|
new_name[i] = '*';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (*ACPI_CAST_PTR(u32, new_name));
|
return (*(u32 *) new_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
|
@@ -470,7 +470,7 @@ void acpi_ut_print_string(char *string, u8 max_length);
|
|||||||
|
|
||||||
u8 acpi_ut_valid_acpi_name(u32 name);
|
u8 acpi_ut_valid_acpi_name(u32 name);
|
||||||
|
|
||||||
acpi_name acpi_ut_repair_name(acpi_name name);
|
acpi_name acpi_ut_repair_name(char *name);
|
||||||
|
|
||||||
u8 acpi_ut_valid_acpi_char(char character, acpi_native_uint position);
|
u8 acpi_ut_valid_acpi_char(char character, acpi_native_uint position);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user