* [PATCH v2 1/2] liveupdate: fix GET_NAME ioctl argument validation
@ 2026-07-16 1:26 Jackie Liu
2026-07-16 1:26 ` [PATCH v2 2/2] liveupdate: reject nonzero reserved value for SESSION_FINISH Jackie Liu
2026-07-16 10:08 ` [PATCH v2 1/2] liveupdate: fix GET_NAME ioctl argument validation Mike Rapoport
0 siblings, 2 replies; 3+ messages in thread
From: Jackie Liu @ 2026-07-16 1:26 UTC (permalink / raw)
To: pratyush; +Cc: pasha.tatashin, rppt, kpm, kexec, linux-kernel
From: Jackie Liu <liuyun01@kylinos.cn>
LIVEUPDATE_SESSION_GET_NAME was developed in the liveupdate/next branch
while the session type validation change was carried in liveupdate-fixes.
When the conflict between the two branches was resolved, the GET_NAME
operation descriptor picked up the structure and last member from
RETRIEVE_FD.
This makes both its known size and minimum size 16 bytes rather than 72.
A zero-initialized request still succeeds because luo_session_get_name()
writes the full name before luo_ucmd_respond() copies the full GET_NAME
response to userspace. However, copy_struct_from_user() treats the
output-only name field as unknown trailing data and rejects the request
with -E2BIG if any byte in that field is nonzero.
Use the GET_NAME structure and its name field in the descriptor.
Link: https://lore.kernel.org/all/ahWlYXNjGUbkKoHy@sirena.org.uk/
Assisted-by: Codex:gpt-5.6-sol
Reviewed-by: Pratyush Yadav (Google) <pratyush@kernel.org>
Signed-off-by: Jackie Liu <liuyun01@kylinos.cn>
---
kernel/liveupdate/luo_session.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/liveupdate/luo_session.c b/kernel/liveupdate/luo_session.c
index b79b2a488974..f38b5b18f3f8 100644
--- a/kernel/liveupdate/luo_session.c
+++ b/kernel/liveupdate/luo_session.c
@@ -378,7 +378,7 @@ static const struct luo_ioctl_op luo_session_ioctl_ops[] = {
IOCTL_OP(LIVEUPDATE_SESSION_RETRIEVE_FD, luo_session_retrieve_fd,
struct liveupdate_session_retrieve_fd, token, LUO_IOCTL_INCOMING),
IOCTL_OP(LIVEUPDATE_SESSION_GET_NAME, luo_session_get_name,
- struct liveupdate_session_retrieve_fd, token, LUO_IOCTL_ALL),
+ struct liveupdate_session_get_name, name, LUO_IOCTL_ALL),
};
static bool luo_ioctl_type_valid(struct luo_session *session,
--
2.54.0
^ permalink raw reply related [flat|nested] 3+ messages in thread* [PATCH v2 2/2] liveupdate: reject nonzero reserved value for SESSION_FINISH
2026-07-16 1:26 [PATCH v2 1/2] liveupdate: fix GET_NAME ioctl argument validation Jackie Liu
@ 2026-07-16 1:26 ` Jackie Liu
2026-07-16 10:08 ` [PATCH v2 1/2] liveupdate: fix GET_NAME ioctl argument validation Mike Rapoport
1 sibling, 0 replies; 3+ messages in thread
From: Jackie Liu @ 2026-07-16 1:26 UTC (permalink / raw)
To: pratyush; +Cc: pasha.tatashin, rppt, kpm, kexec, linux-kernel
From: Jackie Liu <liuyun01@kylinos.cn>
The UAPI documents liveupdate_session_finish::reserved as requiring zero,
but luo_session_finish() currently ignores it and finishes the session.
Accepting nonzero values prevents the field from being safely repurposed
by a future extension.
Reject nonzero reserved values before changing session state, matching
LIVEUPDATE_SESSION_GET_NAME.
Fixes: 16cec0d26521 ("liveupdate: luo_session: add ioctls for file preservation")
Assisted-by: Codex:gpt-5.6-sol
Reviewed-by: Pratyush Yadav (Google) <pratyush@kernel.org>
Signed-off-by: Jackie Liu <liuyun01@kylinos.cn>
---
kernel/liveupdate/luo_session.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/kernel/liveupdate/luo_session.c b/kernel/liveupdate/luo_session.c
index f38b5b18f3f8..15342c0783b5 100644
--- a/kernel/liveupdate/luo_session.c
+++ b/kernel/liveupdate/luo_session.c
@@ -316,7 +316,12 @@ static int luo_session_finish(struct luo_session *session,
struct luo_ucmd *ucmd)
{
struct liveupdate_session_finish *argp = ucmd->cmd;
- int err = luo_session_finish_one(session);
+ int err;
+
+ if (argp->reserved)
+ return -EINVAL;
+
+ err = luo_session_finish_one(session);
if (err)
return err;
--
2.54.0
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH v2 1/2] liveupdate: fix GET_NAME ioctl argument validation
2026-07-16 1:26 [PATCH v2 1/2] liveupdate: fix GET_NAME ioctl argument validation Jackie Liu
2026-07-16 1:26 ` [PATCH v2 2/2] liveupdate: reject nonzero reserved value for SESSION_FINISH Jackie Liu
@ 2026-07-16 10:08 ` Mike Rapoport
1 sibling, 0 replies; 3+ messages in thread
From: Mike Rapoport @ 2026-07-16 10:08 UTC (permalink / raw)
To: pratyush, Jackie Liu; +Cc: pasha.tatashin, kpm, kexec, linux-kernel
On Thu, 16 Jul 2026 09:26:06 +0800, Jackie Liu wrote:
> liveupdate: fix GET_NAME ioctl argument validation
Applied to fixes branch of liveupdate/linux.git tree, thanks!
[1/2] liveupdate: fix GET_NAME ioctl argument validation
commit: 4416f8a9ed5f49256dc69c664f1386b496ca16a1
[2/2] liveupdate: reject nonzero reserved value for SESSION_FINISH
commit: 987de63719faed20741e3c4e1799d7a170e6a306
tree: https://git.kernel.org/pub/scm/linux/kernel/git/liveupdate/linux
branch: fixes
--
Sincerely yours,
Mike.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-07-16 10:08 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-16 1:26 [PATCH v2 1/2] liveupdate: fix GET_NAME ioctl argument validation Jackie Liu
2026-07-16 1:26 ` [PATCH v2 2/2] liveupdate: reject nonzero reserved value for SESSION_FINISH Jackie Liu
2026-07-16 10:08 ` [PATCH v2 1/2] liveupdate: fix GET_NAME ioctl argument validation Mike Rapoport
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.