Fix undefined behavior in definition of hsa_amd_memory_fault_reason_t

Currently, the definition of hsa_amd_memory_fault_reason_t tries to
set a constant of 0x8000_0000 by using the definition "1 << 31".

However, the 1 in this definition is a signed integer by C++ rules.
On our architectures, shifting a signed integer by 31 results in
signed integer overflow. Signed integer overflow results in
undefined behavior.

Forcing the 1 to be unsigned avoids this.

Change-Id: I860431eeede4eff29598f646abf3c1337b048d71
This commit is contained in:
Joseph Greathouse
2024-01-29 08:56:26 -06:00
committed by David Yat Sin
parent 1dd4a7dc18
commit 1d6691e06b
+1 -1
View File
@@ -2296,7 +2296,7 @@ typedef enum {
// SRAM ECC failure (ie registers, no fault address).
HSA_AMD_MEMORY_FAULT_SRAMECC = 1 << 6,
// GPU reset following unspecified hang.
HSA_AMD_MEMORY_FAULT_HANG = 1 << 31
HSA_AMD_MEMORY_FAULT_HANG = 1U << 31
} hsa_amd_memory_fault_reason_t;
/**