This ports the following barebox commit | commit 9866966ef9b38bf49276c67f7e258bc2a8df55eb | Author: Marco Felsch <m.fel...@pengutronix.de> | Date: Wed Aug 25 16:49:04 2021 +0200 | | state: backend_raw: fix ignoring unpack failures | | This is required to inform the state framework that the state variable | set have changed and we need to write the new variable set. Without this | fix the new variable set is never written since the state never sets | dirty=1 and so state_save() will return early without saving the new | variable set. | | Signed-off-by: Marco Felsch <m.fel...@pengutronix.de> | Link: https://lore.barebox.org/20210825144904.4929-1-m.fel...@pengutronix.de | Signed-off-by: Sascha Hauer <s.ha...@pengutronix.de>
Signed-off-by: Marco Felsch <m.fel...@pengutronix.de> --- src/barebox-state/backend_format_raw.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/barebox-state/backend_format_raw.c b/src/barebox-state/backend_format_raw.c index 9fade5d..982df12 100644 --- a/src/barebox-state/backend_format_raw.c +++ b/src/barebox-state/backend_format_raw.c @@ -181,6 +181,7 @@ static int backend_format_raw_unpack(struct state_backend_format *format, const struct backend_raw_header *header; const void *data; struct state_backend_format_raw *backend_raw = get_format_raw(format); + int ret = 0; header = (const struct backend_raw_header *)buf; data = buf + sizeof(*header); @@ -189,12 +190,13 @@ static int backend_format_raw_unpack(struct state_backend_format *format, if (sv->start + sv->size > header->data_len) { dev_err(backend_raw->dev, "State variable ends behind valid data, %s\n", sv->name); + ret = -ENOSPC; continue; } memcpy(sv->raw, data + sv->start, sv->size); } - return 0; + return ret; } static int backend_format_raw_pack(struct state_backend_format *format, -- 2.30.2