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:
committed by
David Yat Sin
parent
1dd4a7dc18
commit
1d6691e06b
@@ -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