Thread (92 messages) 92 messages, 6 authors, 2025-11-24

Re: [PATCH v6 04/20] liveupdate: luo_session: add sessions support

From: Mike Rapoport <rppt@kernel.org>
Date: 2025-11-17 21:11:42
Also in: linux-doc, linux-fsdevel, linux-mm, lkml

On Mon, Nov 17, 2025 at 10:09:28AM -0500, Pasha Tatashin wrote:
quoted
quoted
+     }
+
+     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",
+                             sh->ser[i].name, session);
+                     return PTR_ERR(session);
+             }
The allocated sessions still need to be freed if an insert fails ;-)
No. We have failed to deserialize, so anyways the machine will need to
be rebooted by the user in order to release the preserved resources.

This is something that Jason Gunthrope also mentioned regarding IOMMU:
if something is not correct (i.e., if a session cannot finish for some
reason), don't add complicated "undo" code that cleans up all
resources. Instead, treat them as a memory leak and allow a reboot to
perform the cleanup.

While in this particular patch the clean-up looks simple, later in the
series we are adding file deserialization to each session to this
function. So, the clean-up will look like this: we would have to free
the resources for each session we deserialized, and also free the
resources for files that were deserialized for those sessions, only to
still boot into a "maintenance" mode where bunch of resources are not
accessible from which the machine would have to be rebooted to get
back to a normal state. This code will never be tested, and never be
used, so let's use reboot to solve this problem, where devices are
going to be properly reset, and memory is going to be properly freed.
A part of this explanation should be a comment in the code.

-- 
Sincerely yours,
Mike.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help