summaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorMarco Felsch <m.felsch@pengutronix.de>2021-08-25 16:49:04 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2021-10-05 13:51:12 +0200
commit9866966ef9b38bf49276c67f7e258bc2a8df55eb (patch)
tree82d535268b9e7db348d139f1c64c4f7a9b7d1888 /common
parent096c889c7502fc87f446388493f5673656fffa31 (diff)
downloadbarebox-9866966ef9b38bf49276c67f7e258bc2a8df55eb.tar.gz
barebox-9866966ef9b38bf49276c67f7e258bc2a8df55eb.tar.xz
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.felsch@pengutronix.de> Link: https://lore.barebox.org/20210825144904.4929-1-m.felsch@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'common')
-rw-r--r--common/state/backend_format_raw.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/common/state/backend_format_raw.c b/common/state/backend_format_raw.c
index 5a71149d34..ea962606cc 100644
--- a/common/state/backend_format_raw.c
+++ b/common/state/backend_format_raw.c
@@ -183,6 +183,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);
@@ -191,12 +192,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,