From: Titus Rwantare <tit...@google.com> This patch fixes a bug that causes a kernel panic when calling ADM1266_BLACKBOX_INFORMATION.
Log Message: adm1266 5-0042: Could not read blackbox! Kernel panic - not syncing: stack-protector: Kernel stack is corrupted in: adm1266_nvmem_read+0x168/0x170 Signed-off-by: Titus Rwantare <tit...@google.com> --- hw/sensor/adm1266.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/hw/sensor/adm1266.c b/hw/sensor/adm1266.c index 9017ce6116..cd11526c2b 100644 --- a/hw/sensor/adm1266.c +++ b/hw/sensor/adm1266.c @@ -75,6 +75,7 @@ typedef struct ADM1266State { static const uint8_t adm1266_ic_device_id[] = {0x03, 0x41, 0x12, 0x66}; static const uint8_t adm1266_ic_device_rev[] = {0x08, 0x01, 0x08, 0x07, 0x0, 0x0, 0x07, 0x41, 0x30}; +static const uint8_t adm1266_blackbox_info[] = {0x04, 0x00, 0x00, 0x00, 0x00}; static void adm1266_exit_reset(Object *obj, ResetType type) { @@ -125,6 +126,17 @@ static uint8_t adm1266_read_byte(PMBusDevice *pmdev) pmbus_send(pmdev, adm1266_ic_device_rev, sizeof(adm1266_ic_device_rev)); break; + case ADM1266_BLACKBOX_CONFIG: + return 0; + + case ADM1266_READ_BLACKBOX: + return 0; + + case ADM1266_BLACKBOX_INFORMATION: + pmbus_send(pmdev, adm1266_blackbox_info, + sizeof(adm1266_blackbox_info)); + break; + default: qemu_log_mask(LOG_UNIMP, "%s: reading from unimplemented register: 0x%02x\n", @@ -154,6 +166,9 @@ static int adm1266_write_data(PMBusDevice *pmdev, const uint8_t *buf, pmbus_receive_block(pmdev, (uint8_t *)s->mfr_rev, sizeof(s->mfr_rev)); break; + case ADM1266_BLACKBOX_CONFIG: + case ADM1266_READ_BLACKBOX: + case ADM1266_BLACKBOX_INFORMATION: case ADM1266_SET_RTC: /* do nothing */ break; -- 2.51.0.rc0.155.g4a0f42376b-goog