Commit deb85f6c authored by Erik Schmauss's avatar Erik Schmauss Committed by Rafael J. Wysocki

ACPICA: Explicitly cast 1 to u32

ACPICA commit 4091360d6526c8d4f1e6bccb6b1c3123bda9ac33

The runtime errors caused when acpica tools are compiled with
-fsanitize=shift imply that these 1s are stored in integers.
This cast insures that 1 is stored in unsigned integers.

Link: https://github.com/acpica/acpica/commit/4091360dSigned-off-by: default avatarErik Schmauss <erik.schmauss@intel.com>
Signed-off-by: default avatarBob Moore <robert.moore@intel.com>
Signed-off-by: default avatarLv Zheng <lv.zheng@intel.com>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 5e2d9e91
...@@ -104,13 +104,19 @@ acpi_status acpi_ut_allocate_owner_id(acpi_owner_id *owner_id) ...@@ -104,13 +104,19 @@ acpi_status acpi_ut_allocate_owner_id(acpi_owner_id *owner_id)
break; break;
} }
if (!(acpi_gbl_owner_id_mask[j] & (1 << k))) { /*
* Note: the u32 cast ensures that 1 is stored as a unsigned
* integer. Omitting the cast may result in 1 being stored as an
* int. Some compilers or runtime error detection may flag this as
* an error.
*/
if (!(acpi_gbl_owner_id_mask[j] & ((u32)1 << k))) {
/* /*
* Found a free ID. The actual ID is the bit index plus one, * Found a free ID. The actual ID is the bit index plus one,
* making zero an invalid Owner ID. Save this as the last ID * making zero an invalid Owner ID. Save this as the last ID
* allocated and update the global ID mask. * allocated and update the global ID mask.
*/ */
acpi_gbl_owner_id_mask[j] |= (1 << k); acpi_gbl_owner_id_mask[j] |= ((u32)1 << k);
acpi_gbl_last_owner_id_index = (u8)j; acpi_gbl_last_owner_id_index = (u8)j;
acpi_gbl_next_owner_id_offset = (u8)(k + 1); acpi_gbl_next_owner_id_offset = (u8)(k + 1);
...@@ -201,7 +207,7 @@ void acpi_ut_release_owner_id(acpi_owner_id *owner_id_ptr) ...@@ -201,7 +207,7 @@ void acpi_ut_release_owner_id(acpi_owner_id *owner_id_ptr)
/* Decode ID to index/offset pair */ /* Decode ID to index/offset pair */
index = ACPI_DIV_32(owner_id); index = ACPI_DIV_32(owner_id);
bit = 1 << ACPI_MOD_32(owner_id); bit = (u32)1 << ACPI_MOD_32(owner_id);
/* Free the owner ID only if it is valid */ /* Free the owner ID only if it is valid */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment