From a2aae5e8a9e3f0c8a9f153de0f99163ceb9ad62d Mon Sep 17 00:00:00 2001 From: Bindhiya Kanangot Balakrishnan Date: Wed, 29 Oct 2025 18:19:32 -0500 Subject: [PATCH] [SWDEV-558046] Fix topology weight corruption due to casting The out of bound writes caused corruption in next field, which was weight. Fixed by reading to a temp and then assigning safely. Signed-off-by: Bindhiya Kanangot Balakrishnan --- rocm_smi/src/rocm_smi_io_link.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rocm_smi/src/rocm_smi_io_link.cc b/rocm_smi/src/rocm_smi_io_link.cc index 5d8c4f6a0d..26ce3a95bc 100644 --- a/rocm_smi/src/rocm_smi_io_link.cc +++ b/rocm_smi/src/rocm_smi_io_link.cc @@ -351,6 +351,7 @@ int IOLink::ReadProperties(void) { int IOLink::Initialize(void) { int ret = 0; + uint64_t tmp64 = 0; ret = ReadProperties(); if (ret) {return ret;} @@ -369,8 +370,9 @@ IOLink::Initialize(void) { ret = get_property_value(kIOLinkPropWEIGHTStr, &weight_); if (ret) {return ret;} - ret = get_property_value(kIOLinkPropFLAGSStr, reinterpret_cast(&flags_)); + ret = get_property_value(kIOLinkPropFLAGSStr, &tmp64); if (ret) {return ret;} + flags_ = static_cast(tmp64); ret = UpdateP2pCapability(); if (ret) {return ret;}