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
[ROCm/ROCR-Runtime commit: 1d6691e06b]
This commit is contained in:
committed by
David Yat Sin
parent
d9d10761f5
commit
30a05ed11e
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user