]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
liveupdate: propagate file deserialization failures
authorLeo Timmins <leotimmins1974@gmail.com>
Wed, 25 Mar 2026 04:46:07 +0000 (12:46 +0800)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 6 Apr 2026 18:13:42 +0000 (11:13 -0700)
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.

Link: https://lkml.kernel.org/r/20260325044608.8407-1-leotimmins1974@gmail.com
Link: https://lkml.kernel.org/r/20260325044608.8407-2-leotimmins1974@gmail.com
Fixes: 16cec0d26521 ("liveupdate: luo_session: add ioctls for file preservation")
Signed-off-by: Leo Timmins <leotimmins1974@gmail.com>
Reviewed-by: Pasha Tatashin <pasha.tatashin@soleen.com>
Reviewed-by: Pratyush Yadav <pratyush@kernel.org>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
kernel/liveupdate/luo_session.c

index 7836772956406796db05722afe43ed35745078d1..25ae704d7787340e0bf8a2e5e0c2e36c66405876 100644 (file)
@@ -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;
                }
        }