soc/amd/common/lpc/espi_util: handle espi_get_configuration error
In espi_wait_channel_ready the return value of espi_get_configuration didn't get checked before. In the case of the espi_send_command call in espi_get_configuration returning CB_ERR, espi_get_configuration didn't write to the local config variable, so if this happens in the first pass of the do-while loop, the following espi_slave_is_channel_ready call would use the uninitialized local config variable as parameter. Fix this by checking the return value of espi_get_configuration. TEST=None Signed-off-by: Felix Held <felix-coreboot@felixheld.de> Change-Id: Iff1a0670e17b9d6c6f4daf2ea56badf6c428b8c9 Reviewed-on: https://review.coreboot.org/c/coreboot/+/60209 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Raul Rangel <rrangel@chromium.org>
This commit is contained in:
parent
e2192e6a82
commit
5ba87a8092
|
@ -772,7 +772,8 @@ static enum cb_err espi_wait_channel_ready(uint16_t slave_reg_addr)
|
|||
|
||||
stopwatch_init_usecs_expire(&sw, ESPI_CH_READY_TIMEOUT_US);
|
||||
do {
|
||||
espi_get_configuration(slave_reg_addr, &config);
|
||||
if (espi_get_configuration(slave_reg_addr, &config) != CB_SUCCESS)
|
||||
return CB_ERR;
|
||||
if (espi_slave_is_channel_ready(config))
|
||||
return CB_SUCCESS;
|
||||
} while (!stopwatch_expired(&sw));
|
||||
|
|
Loading…
Reference in New Issue