aboutsummaryrefslogtreecommitdiff
path: root/hw/ipmi
diff options
context:
space:
mode:
authorCédric Le Goater <clg@fr.ibm.com>2016-03-10 15:04:00 +0100
committerMichael S. Tsirkin <mst@redhat.com>2016-03-11 16:59:13 +0200
commit52fc01d9739d90086bf81987af5ed414ce89bbc4 (patch)
treec03c2554e3e47526aaffb92711a13d362e5af66a /hw/ipmi
parent4fa9f08e968db4d40fe6faf3ebd1adfdfb816a16 (diff)
ipmi: remove the need of an ending record in the SDR table
Currently, the code initializing the sdr table relies on an ending record with a recid of 0xffff. This patch changes the loop to use the sdr size as a breaking condition. Signed-off-by: Cédric Le Goater <clg@fr.ibm.com> Acked-by: Corey Minyard <cminyard@mvista.com> Reviewed-by: Marcel Apfelbaum <marcel@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'hw/ipmi')
-rw-r--r--hw/ipmi/ipmi_bmc_sim.c13
1 files changed, 3 insertions, 10 deletions
diff --git a/hw/ipmi/ipmi_bmc_sim.c b/hw/ipmi/ipmi_bmc_sim.c
index 0d4d74881b..9176f8aff9 100644
--- a/hw/ipmi/ipmi_bmc_sim.c
+++ b/hw/ipmi/ipmi_bmc_sim.c
@@ -1690,34 +1690,27 @@ static const uint8_t init_sdrs[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8,
'W', 'a', 't', 'c', 'h', 'd', 'o', 'g',
- /* End */
- 0xff, 0xff, 0x00, 0x00, 0x00
};
static void ipmi_sdr_init(IPMIBmcSim *ibs)
{
unsigned int i;
- unsigned int recid;
+ int len;
- for (i = 0;;) {
+ for (i = 0; i < sizeof(init_sdrs); i += len) {
struct ipmi_sdr_header *sdrh;
- int len;
+
if ((i + IPMI_SDR_HEADER_SIZE) > sizeof(init_sdrs)) {
error_report("Problem with recid 0x%4.4x", i);
return;
}
sdrh = (struct ipmi_sdr_header *) &init_sdrs[i];
len = ipmi_sdr_length(sdrh);
- recid = ipmi_sdr_recid(sdrh);
- if (recid == 0xffff) {
- break;
- }
if ((i + len) > sizeof(init_sdrs)) {
error_report("Problem with recid 0x%4.4x", i);
return;
}
sdr_add_entry(ibs, sdrh, len, NULL);
- i += len;
}
}