From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B073039C014 for ; Thu, 23 Apr 2026 23:49:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776988143; cv=none; b=WPZET+TBQ9MYvsU0ey2k+MXzphSClsC8K0veaSJ7ZTMgEV7W9+mDXItHxxEqWBufHkm0+gDkzaqYxsiQSnKuNvGGP40rvhEWf89nuJ+WqEARyGvRwdzB6/fwOUcECU6S5Ka0ke2tky4z9DSyE5AMEnIgTquxzZjVyyHNN6Ji5f4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776988143; c=relaxed/simple; bh=JNyXD9BDLF2bgWdiclAGjeZXseK2VZTVxgajXvRcnaM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=pkZG5wvT1iueoAlveMj+opLJOsMiiKBVc1/GhTBkBGLTFuAvKZgi8kthj83memvdSKynHh4m50HbWLowxiX93VDYYwjsAnP9d8knmpiMB5wiCPbkKk1Ug4iAIj4pV5Qbku+OYT/eCrsxKNfto4uxutKs295IjpZej0OHepy7bKc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ENeaPx+9; arc=none smtp.client-ip=209.85.128.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ENeaPx+9" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-4896c22fcbaso44144365e9.0 for ; Thu, 23 Apr 2026 16:49:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776988140; x=1777592940; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=otwtwCMsuSRZKjyxndrTmRFvCENq1yZJOmlAXqb99W8=; b=ENeaPx+9WlWz1IxyWTrA3jrLiCuhfP5yHMEgBgljOe+3HoFS5sH/DMmz4sE3j0/98l 577mQYnaUYRwqcUA73swlTglm3hCuCrBoY7hzhA0JdMrxFAywkJIVKxfhDcJTMVFjYVe BRpmYu7fMT89DNtFlLZWN+NrxxNHh3xVEzOSGf0DaQKboCQuJRNE+uZhwBQAdTj2j95z CZ4eHjQyfimmZicmeDM0Mm3FZC4zZLbL/3255T+wKE9BNhqMKXQKapk7irJkHl9Pa5L3 M1NIOKEEFXhLFImDSZDV3eZkOSjJnOhGyPzmhaauFgUy8QYpMuRfissFdHwDelZpeeNW OM6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776988140; x=1777592940; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=otwtwCMsuSRZKjyxndrTmRFvCENq1yZJOmlAXqb99W8=; b=nIqj82uwxK73nwe9kclTJsJrA3Hi/Tv+uOfEMrw9L0SnkNarNl+acOEEEO6u7IApdx L7P3Hrzxgocz/BXPneVIuQsbBwJ7q7SNsGSS4FMEeN059HLLIc+k4ya0I+l27Gc50Hj0 CHF6Cu3ifRF5nvq4IKXo9NkaT1Bh6oIz2MSEqtwmvn5CROnYcJVNDVHLTNO8eXc9kAJP Kn3n2JdPKGz7hJkjvkVGEaP5028eicw/lTkxswGhJG4LoiH6c4KHvy1aY/g2vH9LAaPN W+eESDo0XzaaQ/GPhnJT3R2WsJuycEbwziNq697XmgDe/xW6TcXv+1ylBYZZtsw53AjQ 8paA== X-Forwarded-Encrypted: i=1; AFNElJ8qRLTGGvzfY6qZndyloOkbNNDEWttVafkgRpmFVEz7GGzyW71yjVOtKm4kyums+uMs+cJtsECLkbJO75g=@vger.kernel.org X-Gm-Message-State: AOJu0YzvUziv97M5Z4rbcZZ8IyBFPiE7ZgbfP5e8WzIpkWNyCb1LFd4I xa9aalDLVpTQPWmbFAVEwPzqHAuznW+KD3oDrPnzzK9tXY20nToqs1TJ X-Gm-Gg: AeBDietC+PxLYRmpskIY4eFgvAuK0L1LBr2oJdLKbdFIkqeIETG8xm8JI0ekNUg2i2+ 2uePwfN+HzxtWDl++sE/yXhQA3FcWwYDWYR82BXmaQd4TU+P4DKexadFGAUVlb5l50gQEdcPBDM asdKzE3zD/HX2PeVg8C9yfG1Xm9jRAyzvMnNcgDNLvT/RHCOOpfFEECoLUwQ5veykUybk5gHnv0 97zAZayxgUQ0fLEFj6FwgFXjjKFx6zYma4U3JBqGgNtFhIRJGMqxuIK8lFhi05qYWSlIGFQfYjJ CJ5/UikK9qbJYA6pSWMzDgoKIo7iI09fWxKZ8dmq1xaiNqEEPk2NyaSqArE9v8IZ2jAFdizc7/o WyHhRGkJFtTrt82vKMk7gZsSvlVbVRm8TTQN2smUmNwKa5DcLqbHZzo7ixqsgXzQVMo55ncIdQq 9+A10DJr8MJ2a8w8/iow9PsvP9kRoU2lR29RBvgnU= X-Received: by 2002:a05:600c:8586:b0:489:e49:f766 with SMTP id 5b1f17b1804b1-4890e49f7d8mr213607325e9.17.1776988139971; Thu, 23 Apr 2026 16:48:59 -0700 (PDT) Received: from localhost ([2a01:4b00:d036:ae00:e8d7:434e:1f34:2cb6]) by smtp.gmail.com with UTF8SMTPSA id 5b1f17b1804b1-488fb7a0b60sm161135075e9.17.2026.04.23.16.48.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 16:48:59 -0700 (PDT) From: luca.boccassi@gmail.com To: kexec@lists.infradead.org Cc: linux-mm@kvack.org, rppt@kernel.org, pasha.tatashin@soleen.com, pratyush@kernel.org, linux-kernel@vger.kernel.org, Luca Boccassi Subject: [PATCH v10 3/4] liveupdate: add LIVEUPDATE_SESSION_GET_NAME ioctl Date: Fri, 24 Apr 2026 00:44:22 +0100 Message-ID: <20260423234753.3873095-4-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260423234753.3873095-1-luca.boccassi@gmail.com> References: <20260423234753.3873095-1-luca.boccassi@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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. + * @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, -- 2.47.3