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>
This commit is contained in:
		
							parent
							
								
									4fa9f08e96
								
							
						
					
					
						commit
						52fc01d973
					
				| 
						 | 
					@ -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, 0x00,
 | 
				
			||||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8,
 | 
					    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8,
 | 
				
			||||||
    'W',  'a',  't',  'c',  'h',  'd',  'o',  'g',
 | 
					    'W',  'a',  't',  'c',  'h',  'd',  'o',  'g',
 | 
				
			||||||
    /* End */
 | 
					 | 
				
			||||||
    0xff, 0xff, 0x00, 0x00, 0x00
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void ipmi_sdr_init(IPMIBmcSim *ibs)
 | 
					static void ipmi_sdr_init(IPMIBmcSim *ibs)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    unsigned int i;
 | 
					    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;
 | 
					        struct ipmi_sdr_header *sdrh;
 | 
				
			||||||
        int len;
 | 
					
 | 
				
			||||||
        if ((i + IPMI_SDR_HEADER_SIZE) > sizeof(init_sdrs)) {
 | 
					        if ((i + IPMI_SDR_HEADER_SIZE) > sizeof(init_sdrs)) {
 | 
				
			||||||
            error_report("Problem with recid 0x%4.4x", i);
 | 
					            error_report("Problem with recid 0x%4.4x", i);
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        sdrh = (struct ipmi_sdr_header *) &init_sdrs[i];
 | 
					        sdrh = (struct ipmi_sdr_header *) &init_sdrs[i];
 | 
				
			||||||
        len = ipmi_sdr_length(sdrh);
 | 
					        len = ipmi_sdr_length(sdrh);
 | 
				
			||||||
        recid = ipmi_sdr_recid(sdrh);
 | 
					 | 
				
			||||||
        if (recid == 0xffff) {
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if ((i + len) > sizeof(init_sdrs)) {
 | 
					        if ((i + len) > sizeof(init_sdrs)) {
 | 
				
			||||||
            error_report("Problem with recid 0x%4.4x", i);
 | 
					            error_report("Problem with recid 0x%4.4x", i);
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        sdr_add_entry(ibs, sdrh, len, NULL);
 | 
					        sdr_add_entry(ibs, sdrh, len, NULL);
 | 
				
			||||||
        i += len;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue