From 0ef4c3e2540722e56fb7c5efb9768eedc333be58 Mon Sep 17 00:00:00 2001 From: Jim Mankovich Date: Mon, 23 Jul 2012 14:52:57 +0000 Subject: [PATCH] The unified sensor reading code was incorrectly returning and converting a sensor reading when the reading/state unavailable bit was set. This change makes sure a valid readiing is never returned for a sensor marked reading/state unavailable. --- ipmitool/lib/ipmi_sdr.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/ipmitool/lib/ipmi_sdr.c b/ipmitool/lib/ipmi_sdr.c index 9ea2526..057ed5f 100644 --- a/ipmitool/lib/ipmi_sdr.c +++ b/ipmitool/lib/ipmi_sdr.c @@ -1464,15 +1464,19 @@ ipmi_sdr_read_sensor_value(struct ipmi_intf *intf, sr.s_id, sensor->keys.sensor_num); return &sr; } - sr.s_reading_valid = 1; - sr.s_reading = rsp->data[0]; + if ( !sr.s_reading_unavailable ) { + sr.s_reading_valid = 1; + sr.s_reading = rsp->data[0]; + } if (rsp->data_len > 2) sr.s_data2 = rsp->data[2]; if (rsp->data_len > 3) sr.s_data3 = rsp->data[3]; if (sdr_sensor_has_analog_reading(intf, &sr)) { sr.s_has_analog_value = 1; - sr.s_a_val = sdr_convert_sensor_reading(sr.full, sr.s_reading); + if (sr.s_reading_valid) { + sr.s_a_val = sdr_convert_sensor_reading(sr.full, sr.s_reading); + } /* determine units string with possible modifiers */ sr.s_a_units = ipmi_sdr_get_unit_string(sr.full->cmn.unit.pct, sr.full->cmn.unit.modifier,