[PATCH 2/3] liveupdate: keep sessions retrievable after release failures
From: Leo Timmins
Date: Tue Mar 24 2026 - 14:03:25 EST
When automatic finish-on-release fails for an incoming session,
luo_session_release() cannot report that error back through close(). The
VFS ignores ->release() return values during __fput().
Returning with session->retrieved still set leaves the session on the
incoming list but impossible to retrieve again after the file descriptor
is gone. Clear the retrieved flag so userspace can reopen the session and
retry finishing it later.
Fixes: 16cec0d26521 ("liveupdate: luo_session: add ioctls for file preservation")
Signed-off-by: Leo Timmins <leotimmins1974@xxxxxxxxx>
---
kernel/liveupdate/luo_session.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/kernel/liveupdate/luo_session.c b/kernel/liveupdate/luo_session.c
index 25ae704d7787..7016d96ee960 100644
--- a/kernel/liveupdate/luo_session.c
+++ b/kernel/liveupdate/luo_session.c
@@ -210,9 +210,11 @@ static int luo_session_release(struct inode *inodep, struct file *filep)
int err = luo_session_finish_one(session);
if (err) {
+ scoped_guard(mutex, &session->mutex)
+ session->retrieved = false;
pr_warn("Unable to finish session [%s] on release\n",
session->name);
- return err;
+ return 0;
}
sh = &luo_session_global.incoming;
} else {
--
2.53.0