cros_ec: Fix issue with cros_ec_flash_write command
This commit fixes an issue where data is written to an
invalid memory location.
The issue has been introduced in commit
(88364387
cros: add cros_ec_driver)
Cc: Simon Glass <sjg@chromium.org>
Cc: u-boot@lists.denx.de
Signed-off-by: Moritz Fischer <moritz.fischer@ettus.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
7a71e4891d
commit
bae5b97e8e
|
@ -750,15 +750,24 @@ int cros_ec_flash_erase(struct cros_ec_dev *dev, uint32_t offset, uint32_t size)
|
|||
static int cros_ec_flash_write_block(struct cros_ec_dev *dev,
|
||||
const uint8_t *data, uint32_t offset, uint32_t size)
|
||||
{
|
||||
struct ec_params_flash_write p;
|
||||
struct ec_params_flash_write *p;
|
||||
int ret;
|
||||
|
||||
p.offset = offset;
|
||||
p.size = size;
|
||||
assert(data && p.size <= EC_FLASH_WRITE_VER0_SIZE);
|
||||
memcpy(&p + 1, data, p.size);
|
||||
p = malloc(sizeof(*p) + size);
|
||||
if (!p)
|
||||
return -ENOMEM;
|
||||
|
||||
return ec_command_inptr(dev, EC_CMD_FLASH_WRITE, 0,
|
||||
&p, sizeof(p), NULL, 0) >= 0 ? 0 : -1;
|
||||
p->offset = offset;
|
||||
p->size = size;
|
||||
assert(data && p->size <= EC_FLASH_WRITE_VER0_SIZE);
|
||||
memcpy(p + 1, data, p->size);
|
||||
|
||||
ret = ec_command_inptr(dev, EC_CMD_FLASH_WRITE, 0,
|
||||
p, sizeof(*p) + size, NULL, 0) >= 0 ? 0 : -1;
|
||||
|
||||
free(p);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue