Re: [PATCH v9 3/6] liveupdate: add LUO_SESSION_MAGIC magic inode type

Mike Rapoport
2026-04-21T10:33:49Z

On Mon, Apr 20, 2026 at 03:15:11PM +0100, luca.boccassi@gmail.com wrote:
> From: Luca Boccassi <luca.boccassi@gmail.com>
>
> In userspace when managing LUO sessions we want to be able to identify
> a FD as a LUO session, in order to be able to do the special handling
> that they require in order to function as intended on kexec.
>
> Currently this requires scraping procfs and doing string matching on
> the prefix of the dname, which is not an ideal interface.
>
> Add a singleton inode type with a magic value, so that we can
> programmatically identify a fd as a LUO session via fstatfs().
>
> Signed-off-by: Luca Boccassi <luca.boccassi@gmail.com>
> Reviewed-by: Pasha Tatashin <pasha.tatashin@soleen.com>
> ---
> include/uapi/linux/magic.h | 1 +
> kernel/liveupdate/luo_core.c | 10 +++-
> kernel/liveupdate/luo_internal.h | 2 +
> kernel/liveupdate/luo_session.c | 91 ++++++++++++++++++++++++++++++--
> 4 files changed, 98 insertions(+), 6 deletions(-)
>
> diff --git a/include/uapi/linux/magic.h b/include/uapi/linux/magic.h
> index 4f2da935a76c..4f51005522ff 100644
> --- a/include/uapi/linux/magic.h
> +++ b/include/uapi/linux/magic.h
> @@ -105,5 +105,6 @@
> #define PID_FS_MAGIC 0x50494446 /* "PIDF" */
> #define GUEST_MEMFD_MAGIC 0x474d454d /* "GMEM" */
> #define NULL_FS_MAGIC 0x4E554C4C /* "NULL" */
> +#define LUO_SESSION_MAGIC 0x4c554f53 /* "LUOS" */
>
> #endif /* __LINUX_MAGIC_H__ */
> diff --git a/kernel/liveupdate/luo_core.c b/kernel/liveupdate/luo_core.c
> index dda7bb57d421..f1a63ebe4fa4 100644
> --- a/kernel/liveupdate/luo_core.c
> +++ b/kernel/liveupdate/luo_core.c
> @@ -197,9 +197,17 @@ static int __init luo_late_startup(void)
> if (!liveupdate_enabled())
> return 0;
>
> + err = luo_session_fs_init();
> + if (err) {
> + luo_global.enabled = false;

Please use goto here and on luo_fdt_setup() failure to handle cleanup on error.

Other than that

Acked-by: Mike Rapoport (Microsoft) <rppt@kernel.org>

> + return err;
> + }
> +
> err = luo_fdt_setup();
> - if (err)
> + if (err) {
> + luo_session_fs_cleanup();
> luo_global.enabled = false;
> + }
>
> return err;
> }

--
Sincerely yours,
Mike.