Extract the logic for deserializing single entries for sessions into
separate helper functions. In preparation to a linked-block
serialization for sessions.

This is a pure code movement, no other changes intended.

Acked-by: Mike Rapoport (Microsoft) <[email protected]>
Reviewed-by: Pratyush Yadav (Google) <[email protected]>
Signed-off-by: Pasha Tatashin <[email protected]>
---
 kernel/liveupdate/luo_session.c | 62 +++++++++++++++++++--------------
 1 file changed, 36 insertions(+), 26 deletions(-)

diff --git a/kernel/liveupdate/luo_session.c b/kernel/liveupdate/luo_session.c
index 1cad54ea8209..5c092c71797e 100644
--- a/kernel/liveupdate/luo_session.c
+++ b/kernel/liveupdate/luo_session.c
@@ -526,6 +526,40 @@ int __init luo_session_setup_incoming(u64 sessions_pa)
        return 0;
 }
 
+static int luo_session_deserialize_one(struct luo_session_header *sh,
+                                      struct luo_session_ser *ser)
+{
+       struct luo_session *session;
+       int err;
+
+       session = luo_session_alloc(ser->name);
+       if (IS_ERR(session)) {
+               pr_warn("Failed to allocate session [%.*s] during 
deserialization %pe\n",
+                       (int)sizeof(ser->name), ser->name, session);
+               return PTR_ERR(session);
+       }
+
+       err = luo_session_insert(sh, session);
+       if (err) {
+               pr_warn("Failed to insert session [%s] %pe\n",
+                       session->name, ERR_PTR(err));
+               luo_session_free(session);
+               return err;
+       }
+
+       scoped_guard(mutex, &session->mutex) {
+               err = luo_file_deserialize(&session->file_set,
+                                          &ser->file_set_ser);
+       }
+       if (err) {
+               pr_warn("Failed to deserialize files for session [%s] %pe\n",
+                       session->name, ERR_PTR(err));
+               return err;
+       }
+
+       return 0;
+}
+
 int luo_session_deserialize(void)
 {
        struct luo_session_header *sh = &luo_session_global.incoming;
@@ -556,33 +590,9 @@ int luo_session_deserialize(void)
         * reliably reset devices and reclaim memory.
         */
        for (int i = 0; i < sh->header_ser->count; i++) {
-               struct luo_session *session;
-
-               session = luo_session_alloc(sh->ser[i].name);
-               if (IS_ERR(session)) {
-                       pr_warn("Failed to allocate session [%.*s] during 
deserialization %pe\n",
-                               (int)sizeof(sh->ser[i].name),
-                               sh->ser[i].name, session);
-                       return PTR_ERR(session);
-               }
-
-               err = luo_session_insert(sh, session);
-               if (err) {
-                       pr_warn("Failed to insert session [%s] %pe\n",
-                               session->name, ERR_PTR(err));
-                       luo_session_free(session);
-                       return err;
-               }
-
-               scoped_guard(mutex, &session->mutex) {
-                       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));
+               err = luo_session_deserialize_one(sh, &sh->ser[i]);
+               if (err)
                        return err;
-               }
        }
 
        kho_restore_free(sh->header_ser);
-- 
2.53.0


Reply via email to