diff mbox series

[1/3] ipmi: Fix SEL get/set time commands

Message ID 1503178840-21512-2-git-send-email-minyard@acm.org
State New
Headers show
Series [1/3] ipmi: Fix SEL get/set time commands | expand

Commit Message

Corey Minyard Aug. 19, 2017, 9:40 p.m. UTC
From: Corey Minyard <cminyard@mvista.com>


The minimum message size was wrong for both commands, for getting
the time it's zero and for setting the time it's 4.  And the data
was being pulled from the wrong place in the set time message, it
should be the first four bytes.

Signed-off-by: Corey Minyard <cminyard@mvista.com>

---
 hw/ipmi/ipmi_bmc_sim.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

-- 
2.7.4

Comments

Cédric Le Goater Aug. 20, 2017, 7:45 a.m. UTC | #1
On 08/19/2017 11:40 PM, minyard@acm.org wrote:
> From: Corey Minyard <cminyard@mvista.com>

> 

> The minimum message size was wrong for both commands, for getting

> the time it's zero and for setting the time it's 4.  And the data

> was being pulled from the wrong place in the set time message, it

> should be the first four bytes.

> 

> Signed-off-by: Corey Minyard <cminyard@mvista.com>

> ---

>  hw/ipmi/ipmi_bmc_sim.c | 6 +++---

>  1 file changed, 3 insertions(+), 3 deletions(-)

> 

> diff --git a/hw/ipmi/ipmi_bmc_sim.c b/hw/ipmi/ipmi_bmc_sim.c

> index 277c28c..1c732aa 100644

> --- a/hw/ipmi/ipmi_bmc_sim.c

> +++ b/hw/ipmi/ipmi_bmc_sim.c

> @@ -1571,7 +1571,7 @@ static void set_sel_time(IPMIBmcSim *ibs,

>      uint32_t val;

>      struct ipmi_time now;

>  

> -    val = cmd[2] | (cmd[3] << 8) | (cmd[4] << 16) | (cmd[5] << 24);

> +    val = cmd[0] | (cmd[1] << 8) | (cmd[2] << 16) | (cmd[3] << 24);


I am confused. I thought cmd[0] and cmd[1] were the 'netfun' and 
'cmd' bytes, data beginning at byte 2. Isn't it the case for this
command also ? 

C.


>      ipmi_gettime(&now);

>      ibs->sel.time_offset = now.tv_sec - ((long) val);

>  }

> @@ -1802,8 +1802,8 @@ static const IPMICmdHandler storage_cmds[] = {

>      [IPMI_CMD_GET_SEL_ENTRY] = { get_sel_entry, 8 },

>      [IPMI_CMD_ADD_SEL_ENTRY] = { add_sel_entry, 18 },

>      [IPMI_CMD_CLEAR_SEL] = { clear_sel, 8 },

> -    [IPMI_CMD_GET_SEL_TIME] = { get_sel_time, 6 },

> -    [IPMI_CMD_SET_SEL_TIME] = { set_sel_time },

> +    [IPMI_CMD_GET_SEL_TIME] = { get_sel_time },

> +    [IPMI_CMD_SET_SEL_TIME] = { set_sel_time, 4 },

>  };

>  

>  static const IPMINetfn storage_netfn = {

>
diff mbox series

Patch

diff --git a/hw/ipmi/ipmi_bmc_sim.c b/hw/ipmi/ipmi_bmc_sim.c
index 277c28c..1c732aa 100644
--- a/hw/ipmi/ipmi_bmc_sim.c
+++ b/hw/ipmi/ipmi_bmc_sim.c
@@ -1571,7 +1571,7 @@  static void set_sel_time(IPMIBmcSim *ibs,
     uint32_t val;
     struct ipmi_time now;
 
-    val = cmd[2] | (cmd[3] << 8) | (cmd[4] << 16) | (cmd[5] << 24);
+    val = cmd[0] | (cmd[1] << 8) | (cmd[2] << 16) | (cmd[3] << 24);
     ipmi_gettime(&now);
     ibs->sel.time_offset = now.tv_sec - ((long) val);
 }
@@ -1802,8 +1802,8 @@  static const IPMICmdHandler storage_cmds[] = {
     [IPMI_CMD_GET_SEL_ENTRY] = { get_sel_entry, 8 },
     [IPMI_CMD_ADD_SEL_ENTRY] = { add_sel_entry, 18 },
     [IPMI_CMD_CLEAR_SEL] = { clear_sel, 8 },
-    [IPMI_CMD_GET_SEL_TIME] = { get_sel_time, 6 },
-    [IPMI_CMD_SET_SEL_TIME] = { set_sel_time },
+    [IPMI_CMD_GET_SEL_TIME] = { get_sel_time },
+    [IPMI_CMD_SET_SEL_TIME] = { set_sel_time, 4 },
 };
 
 static const IPMINetfn storage_netfn = {