luo_session_deserialize() ignored the return value from
luo_file_deserialize(). As a result, a session could be left partially
restored even though the /dev/liveupdate open path treats deserialization
failures as fatal.
Propagate the error so a failed file deserialization aborts session
deserialization instead of silently continuing.
Fixes: 16cec0d26521 ("liveupdate: luo_session: add ioctls for file preservation")
Signed-off-by: Leo Timmins <leotimmins1974@gmail.com>
---
kernel/liveupdate/luo_session.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/kernel/liveupdate/luo_session.c b/kernel/liveupdate/luo_session.c
index 783677295640..25ae704d7787 100644
--- a/kernel/liveupdate/luo_session.c
+++ b/kernel/liveupdate/luo_session.c
@@ -558,8 +558,13 @@ int luo_session_deserialize(void)
}
scoped_guard(mutex, &session->mutex) {
- luo_file_deserialize(&session->file_set,
- &sh->ser[i].file_set_ser);
+ err = luo_file_deserialize(&session->file_set,
+ &sh->ser[i].file_set_ser);
+ }
+ if (err) {
+ pr_warn("Failed to deserialize files for session [%s] %pe\n",
+ session->name, ERR_PTR(err));
+ return err;
}
}
--
2.53.0
On Wed, 25 Mar 2026 12:46:07 +0800 Leo Timmins <leotimmins1974@gmail.com> wrote:
> luo_session_deserialize() ignored the return value from
> luo_file_deserialize(). As a result, a session could be left partially
> restored even though the /dev/liveupdate open path treats deserialization
> failures as fatal.
>
> Propagate the error so a failed file deserialization aborts session
> deserialization instead of silently continuing.
>
> Fixes: 16cec0d26521 ("liveupdate: luo_session: add ioctls for file preservation")
Present in 6.19. Is this serious enough for a -stable backport?
Leo, I'll add this to mm.git's mm-hotfixes branch because "fix".
Please do send along a v2 which addresses Pasha's comments.
On Wed, Mar 25, 2026 at 12:46 AM Leo Timmins <leotimmins1974@gmail.com> wrote:
>
> luo_session_deserialize() ignored the return value from
> luo_file_deserialize(). As a result, a session could be left partially
> restored even though the /dev/liveupdate open path treats deserialization
> failures as fatal.
>
> Propagate the error so a failed file deserialization aborts session
> deserialization instead of silently continuing.
>
> Fixes: 16cec0d26521 ("liveupdate: luo_session: add ioctls for file preservation")
>
> Signed-off-by: Leo Timmins <leotimmins1974@gmail.com>
Please preserve the tags.
Reviewed-by: Pasha Tatashin <pasha.tatashin@soleen.com>
> ---
> kernel/liveupdate/luo_session.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/kernel/liveupdate/luo_session.c b/kernel/liveupdate/luo_session.c
> index 783677295640..25ae704d7787 100644
> --- a/kernel/liveupdate/luo_session.c
> +++ b/kernel/liveupdate/luo_session.c
> @@ -558,8 +558,13 @@ int luo_session_deserialize(void)
> }
>
> scoped_guard(mutex, &session->mutex) {
> - luo_file_deserialize(&session->file_set,
> - &sh->ser[i].file_set_ser);
> + err = luo_file_deserialize(&session->file_set,
> + &sh->ser[i].file_set_ser);
> + }
> + if (err) {
> + pr_warn("Failed to deserialize files for session [%s] %pe\n",
> + session->name, ERR_PTR(err));
> + return err;
> }
> }
>
> --
> 2.53.0
>
© 2016 - 2026 Red Hat, Inc.