Commit 52fc01d9 authored by Cédric Le Goater's avatar Cédric Le Goater Committed by Michael S. Tsirkin
Browse files

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: default avatarCédric Le Goater <clg@fr.ibm.com>
Acked-by: default avatarCorey Minyard <cminyard@mvista.com>
Reviewed-by: default avatarMarcel Apfelbaum <marcel@redhat.com>
Reviewed-by: default avatarMichael S. Tsirkin <mst@redhat.com>
Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
parent 4fa9f08e
Loading
Loading
Loading
Loading
+3 −10
Original line number Diff line number Diff line
@@ -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;
    }
}