diff --git a/include/amd_smi/amdsmi.h b/include/amd_smi/amdsmi.h index b2ed9bbf39..da340d5704 100644 --- a/include/amd_smi/amdsmi.h +++ b/include/amd_smi/amdsmi.h @@ -1506,7 +1506,7 @@ typedef struct { /** * @brief Metrics table (supported only with hsmp proto version 6). */ -typedef struct { +typedef struct __attribute__((__packed__)){ uint32_t accumulation_counter; /* TEMPERATURE */ diff --git a/src/amd_smi/amd_smi.cc b/src/amd_smi/amd_smi.cc index 283496badb..fec0101bdd 100644 --- a/src/amd_smi/amd_smi.cc +++ b/src/amd_smi/amd_smi.cc @@ -3653,6 +3653,9 @@ amdsmi_status_t amdsmi_get_metrics_table(amdsmi_processor_handle processor_handl if (processor_handle == nullptr) return AMDSMI_STATUS_INVAL; + if(sizeof(amdsmi_hsmp_metric_table_t) != sizeof(struct hsmp_metric_table)) + return AMDSMI_STATUS_UNEXPECTED_SIZE; + amdsmi_status_t r = amdsmi_get_processor_info(processor_handle, SIZE, proc_id); if (r != AMDSMI_STATUS_SUCCESS) return r;