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 |
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 --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 = {