[PATCH v2 1/2] liveupdate: propagate file deserialization failures

Leo Timmins posted 2 patches 1 week, 1 day ago
There is a newer version of this series
[PATCH v2 1/2] liveupdate: propagate file deserialization failures
Posted by Leo Timmins 1 week, 1 day ago
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
Re: [PATCH v2 1/2] liveupdate: propagate file deserialization failures
Posted by Andrew Morton 1 week ago
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.
Re: [PATCH v2 1/2] liveupdate: propagate file deserialization failures
Posted by Pasha Tatashin 1 week, 1 day ago
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
>