From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A9D2B3570C8 for ; Wed, 29 Apr 2026 14:35:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777473322; cv=none; b=OhOFrvagU3gTByLJ+FuWIsGmJw4rOS9UQVQDS89bVAvv/6n3vqgcDItQUCP+jjyFy//pH/tWHnDrintChJ6raNwq/9JxDgqyD1czh3WPU9v+80yhAg5rqUFf+c8E2wBTpEqBc4gwwTFlWurfG2nL6KOB0EcnQ+Gyn8CwcLPW8L4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777473322; c=relaxed/simple; bh=qSqiep8Qpof8Q5a2J7V96rrIhl2L0+YtBJVeAPkOgcI=; h=From:To:Cc:Subject:In-Reply-To:References:Date:Message-ID: MIME-Version:Content-Type; b=GIcuX8ByaWPxekxgTBo6LIS1SHKqox4PXGL6QDGuy/jB6VYNk5NR6cAuTY305cfPbeDkqDeyUSPnihug2dAs2V0scJqS+7crR3pXt0tVeaV6Pkl625079lPS14vuM9UDTZRPvAdf5p1Nt/eeXpCV1MRimOmuwuKxLoL/Y2+PF50= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ptZVpwHz; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ptZVpwHz" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 50EDCC19425; Wed, 29 Apr 2026 14:35:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1777473322; bh=qSqiep8Qpof8Q5a2J7V96rrIhl2L0+YtBJVeAPkOgcI=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=ptZVpwHzwAfEy8WKiAsauOLnmEzpAdjJx0/KDi6B4W9VvJ4Q+NzlGgJZndYsLxvqD 3svf7hwcYqKHXjPXzMw/Dd+1vaSQt2FpcA6vn+4bVIyWxH5YD8YfqLFdH9Cf9CgTev YPNvRybNRUEE9y/QipyqO2ikeqckWgDnC3GXBRE4cJrmLN8AkseI4Ubq8P1TcjG4s6 EqPU8NJiv4LSz9hEX6ST01ofgYwSRGu1X1jRTUBuGEmURTTi4StlMN3VjVjpEBJBIv WM88XgTcFERpvVgcB9V6Xyf4aHcYyijsO4pgGbWXFq5m/X8h7vVGys2IaGM+uogAgH pEyxrW0/85VsA== From: Pratyush Yadav To: luca.boccassi@gmail.com Cc: kexec@lists.infradead.org, linux-mm@kvack.org, rppt@kernel.org, pasha.tatashin@soleen.com, pratyush@kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v10 3/4] liveupdate: add LIVEUPDATE_SESSION_GET_NAME ioctl In-Reply-To: <20260423234753.3873095-4-luca.boccassi@gmail.com> (luca boccassi's message of "Fri, 24 Apr 2026 00:44:22 +0100") References: <20260423234753.3873095-1-luca.boccassi@gmail.com> <20260423234753.3873095-4-luca.boccassi@gmail.com> Date: Wed, 29 Apr 2026 16:35:19 +0200 Message-ID: <2vxz1pfx4yxk.fsf@kernel.org> User-Agent: Gnus/5.13 (Gnus v5.13) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain On Fri, Apr 24 2026, luca.boccassi@gmail.com wrote: > From: Luca Boccassi > > Userspace when requesting a session via the ioctl specifies a name and > gets a FD, but then there is no ioctl to go back the other way and get > the name given a LUO session FD. This is problematic especially when > there is a userspace orchestrator that wants to check what FDs it is > handling for clients without having to do manual string scraping of > procfs, or without procfs at all. > > Add a ioctl to simply get the name from an FD. > > Signed-off-by: Luca Boccassi > Reviewed-by: Pasha Tatashin > Acked-by: Mike Rapoport (Microsoft) > --- > include/uapi/linux/liveupdate.h | 21 +++++++++++++++++++++ > kernel/liveupdate/luo_session.c | 13 +++++++++++++ > 2 files changed, 34 insertions(+) > > diff --git a/include/uapi/linux/liveupdate.h b/include/uapi/linux/liveupdate.h > index 30bc66ee9436..3a9ff53b02e0 100644 > --- a/include/uapi/linux/liveupdate.h > +++ b/include/uapi/linux/liveupdate.h > @@ -59,6 +59,7 @@ enum { > LIVEUPDATE_CMD_SESSION_PRESERVE_FD = LIVEUPDATE_CMD_SESSION_BASE, > LIVEUPDATE_CMD_SESSION_RETRIEVE_FD = 0x41, > LIVEUPDATE_CMD_SESSION_FINISH = 0x42, > + LIVEUPDATE_CMD_SESSION_GET_NAME = 0x43, > }; > > /** > @@ -213,4 +214,24 @@ struct liveupdate_session_finish { > #define LIVEUPDATE_SESSION_FINISH \ > _IO(LIVEUPDATE_IOCTL_TYPE, LIVEUPDATE_CMD_SESSION_FINISH) > > +/** > + * struct liveupdate_session_get_name - ioctl(LIVEUPDATE_SESSION_GET_NAME) > + * @size: Input; sizeof(struct liveupdate_session_get_name) > + * @reserved: Input; Must be zero. Reserved for future use. You need to enforce this in luo_session_get_name(). Otherwise some userspace might try to get clever and stash some data here. Then if we ever put something else here it will break that userspace. With this fixed, Reviewed-by: Pratyush Yadav > + * @name: Output; A null-terminated string with the full session name. > + * > + * Retrieves the full name of the session associated with this file descriptor. > + * This is useful because the kernel may truncate the name shown in /proc. > + * > + * Return: 0 on success, negative error code on failure. > + */ > +struct liveupdate_session_get_name { > + __u32 size; > + __u32 reserved; > + __u8 name[LIVEUPDATE_SESSION_NAME_LENGTH]; > +}; > + > +#define LIVEUPDATE_SESSION_GET_NAME \ > + _IO(LIVEUPDATE_IOCTL_TYPE, LIVEUPDATE_CMD_SESSION_GET_NAME) > + > #endif /* _UAPI_LIVEUPDATE_H */ > diff --git a/kernel/liveupdate/luo_session.c b/kernel/liveupdate/luo_session.c > index 5e316a4c5d71..0bcf2def074e 100644 > --- a/kernel/liveupdate/luo_session.c > +++ b/kernel/liveupdate/luo_session.c > @@ -289,10 +289,21 @@ static int luo_session_finish(struct luo_session *session, > return luo_ucmd_respond(ucmd, sizeof(*argp)); > } > > +static int luo_session_get_name(struct luo_session *session, > + struct luo_ucmd *ucmd) > +{ > + struct liveupdate_session_get_name *argp = ucmd->cmd; > + > + strscpy((char *)argp->name, session->name, sizeof(argp->name)); > + > + return luo_ucmd_respond(ucmd, sizeof(*argp)); > +} > + > union ucmd_buffer { > struct liveupdate_session_finish finish; > struct liveupdate_session_preserve_fd preserve; > struct liveupdate_session_retrieve_fd retrieve; > + struct liveupdate_session_get_name get_name; > }; > > struct luo_ioctl_op { > @@ -319,6 +330,8 @@ static const struct luo_ioctl_op luo_session_ioctl_ops[] = { > struct liveupdate_session_preserve_fd, token), > IOCTL_OP(LIVEUPDATE_SESSION_RETRIEVE_FD, luo_session_retrieve_fd, > struct liveupdate_session_retrieve_fd, token), > + IOCTL_OP(LIVEUPDATE_SESSION_GET_NAME, luo_session_get_name, > + struct liveupdate_session_get_name, name), > }; > > static long luo_session_ioctl(struct file *filep, unsigned int cmd, -- Regards, Pratyush Yadav