From nobody Sun Jun 21 07:50:10 2026 Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) (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 606E8378815 for ; Thu, 23 Apr 2026 23:48:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776988140; cv=none; b=FIc79wwKv+7xjNnMVack20hvpqmpQOJePf+9dEM6+FqPQ5r5IygcuzM0i5r/1A392s8zWxUw3MzFI8h2q2mbftAWlewIxg3B+2E9vR8zwjnsMR/1FohKMtr9jpJgpyDzfNfAOA93Ytxl0xUm5oZdBnNHo6b9CGvb8kHBp/BWff8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776988140; c=relaxed/simple; bh=0jn1sh462ie009Aac8D/RKPh2VQCQ+WGoPhkiItjtzE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=RJPQR9z1o/GEa77syI7ps1m1K7ruFVBf4Cp4eCnTDN/7Zmjgh1xFa6N3Uoc7cDvmGwjbrJv2q+jkglh+B7cYbwvzwyvGDa+3jNn0RuCkk5JAPqSu4mFCA83HkFg/mah/rVhZ0CCjYSkBvqFM3wnhbVWfgUo/VqRtqMlDJNHlCSI= 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=AkDZJdiK; arc=none smtp.client-ip=209.85.221.49 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="AkDZJdiK" Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-43d77f60944so5656054f8f.3 for ; Thu, 23 Apr 2026 16:48:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776988138; x=1777592938; 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=OYNhBHB4Fa23TFERZL91AZqtbkE7rN6kiCnLilTbtsU=; b=AkDZJdiK7XeKftP4yTfUUYWVoUsMaqAUyl/har4J+05rPxgyoKgSM0+/j8L3UUxQQP Lbgkz3Z3prV5hXjvAJg1+Ogtf4/iPG+dURnp0kygCy/nWjKQOlehqCiC6p+Yoktw2lHd vZlNDpEXxdU6qH1HkFFgoEK+djPTsk7gIqcSnJ3rEzGyAx7oLpPB2hW3yWm5rgTBSBiQ fr/knYOO1BceeToLDH5P6nvPaqnsbuYxFDLNnab8yUH+vEz0OgGCRedMwqdIr5jAL/+A IGrMCCLxQIouwWd2wo5C5M8aUEy1MOPf2o9B8gQEMFMXDqZ8NPBiV6fYpEoqyE3JdznB 8RDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776988138; x=1777592938; 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=OYNhBHB4Fa23TFERZL91AZqtbkE7rN6kiCnLilTbtsU=; b=KnEKwnSypLt9AcVaVqrk3+s1javiwW+OMmkKCvDbKbUy8Quu5Ri90RNEdzSo3MuYhq KJmgM0JiMNQ1drcDq2C/8JO8Fr5o93KlJ5Z+hYZM8DXtpaUTZkMcXRp6vSj+a3AqEMzP x4jIMf4aRvOHCIUJhK3r1PbSU9ov2D7Ib+NeXvfvghTFg4YaFFIyoFuR8ka+P2wSztzS GpKhnpf/VOz9GreIkarqv2CcNtl4XnFdLNRU2F1KDDhEFHBnuxX6zolXIEwNvaINl3Rm QKAGYNUQ5kTJl+ihwzbIUhjiUk1Bng/Jz/CssW04WMzoHYgjiGAvqBjBbpXEHx8tflfW grIg== X-Forwarded-Encrypted: i=1; AFNElJ+sNXLOn+AURn0C3+11T7N0oDBw8+JNzuaTnYPlwQZz8twJAn5FqQs38b/66cMQdLKQHNDhA5HWrhaI5aI=@vger.kernel.org X-Gm-Message-State: AOJu0YwGJyLjr44iKavyjMFL+/z2CX/7ELSkmIi19d6y8oNxqaw2xBS5 INwNMkrx8a2zyfq0r+w3JrY01r2LXBfak2cfe+XPeb9COc4APOFzaFK7 X-Gm-Gg: AeBDieuPtJ89v5yWCk1fUNXiN1d7yanpU51DtxVpcKul32GDeK5/p0PVjE9POonEw77 d+AxFFVIp/AaEw7twyMcYbEUsLADqtnpuxoICFYwyhzgH0yN6JN8DwBaGy5gOt4AmALHLti+ldi ecC2IY66XbK8zCHTopJYCwFgkZd1ZdOFCrw44961g8l/tnxU+Ev35b/W+Y1Yq4Vj3XA6qqSHzYY CTiPe6+MfW13ZR39Whbrg+pbkgc/zwBgoMZ7AHw5gsAJQ0PedEOnLYFN2kV0D3k0CTfktXd/Bzv v8rFeKCAlRxZr3XBrl+PG6uugGrfE5E92Mj3dgOqhYOB2nRN5BvIFpcVXp7EUMr4f3XpsuGB3AL 8Q7oQQhhSnIt9fjl6fEHv6HYCjaL2K7eW5iyVQl9QeYpJL0auTcgi2VKuEkbHaB3wzW3jSDyDw+ 7PawtObioD7Htd6Mvy4DFa7rt/O5KXvCZ0rOGurfY= X-Received: by 2002:a5d:5d0e:0:b0:43d:7883:87c4 with SMTP id ffacd0b85a97d-43fe3e17215mr46363156f8f.41.1776988137621; Thu, 23 Apr 2026 16:48:57 -0700 (PDT) Received: from localhost ([2a01:4b00:d036:ae00:e8d7:434e:1f34:2cb6]) by smtp.gmail.com with UTF8SMTPSA id ffacd0b85a97d-43fe4cc2cacsm55713327f8f.13.2026.04.23.16.48.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 16:48:56 -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 1/4] liveupdate: reject LIVEUPDATE_IOCTL_CREATE_SESSION with invalid name length Date: Fri, 24 Apr 2026 00:44:20 +0100 Message-ID: <20260423234753.3873095-2-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: quoted-printable Content-Type: text/plain; charset="utf-8" From: Luca Boccassi A session name must not be an empty string, and must not exceed the maximum size define in the uapi header, including null termination. Fixes: 0153094d03df ("liveupdate: luo_session: add sessions support") Signed-off-by: Luca Boccassi Reviewed-by: Pasha Tatashin Acked-by: Mike Rapoport (Microsoft) Reviewed-by: Pratyush Yadav --- kernel/liveupdate/luo_session.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/kernel/liveupdate/luo_session.c b/kernel/liveupdate/luo_sessio= n.c index 25ae704d7787..5e316a4c5d71 100644 --- a/kernel/liveupdate/luo_session.c +++ b/kernel/liveupdate/luo_session.c @@ -382,9 +382,13 @@ static int luo_session_getfile(struct luo_session *ses= sion, struct file **filep) =20 int luo_session_create(const char *name, struct file **filep) { + size_t len =3D strnlen(name, LIVEUPDATE_SESSION_NAME_LENGTH); struct luo_session *session; int err; =20 + if (len =3D=3D 0 || len > LIVEUPDATE_SESSION_NAME_LENGTH - 1) + return -EINVAL; + session =3D luo_session_alloc(name); if (IS_ERR(session)) return PTR_ERR(session); --=20 2.47.3 From nobody Sun Jun 21 07:50:10 2026 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) (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 84A06355F44 for ; Thu, 23 Apr 2026 23:49:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776988141; cv=none; b=DzhW3+rxwUnQpoP2PZQg2JRW+L0muY8KSdeQvXn24HaUBerbzBUI+29ddgid2GwSM/tbccdhRRPHmitK2RrtwPt409MCDEAibTtT1azF/k8ZcTOIWzay/VS6Lr2wves8Z3D/uqvl+NxZiyMRqKg4j0+i92C9K/DmqFcNC6CUyRA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776988141; c=relaxed/simple; bh=Ftb5CR897mq8vfwY3xCUgzBWZQGAm8x0HZgh8xb92Zs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BbCMU4ZSX6OrAwkC5SzXCnloqeic8tM/ymszuanrX6LC4nzx9UktskaG/FJ5/c9qz591nEVZtfDyK0bY6b1G/Y2IheQ25/CHcaXpmP00u3iQOQX34dmCl9LUaD5nvm/E5uufFyY10Sokl2kkfCMNS9f+y7ZVqmXdf0XTtmU8vD4= 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=m7d7JoNX; arc=none smtp.client-ip=209.85.128.53 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="m7d7JoNX" Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-48984d29fe3so74181005e9.0 for ; Thu, 23 Apr 2026 16:49:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776988139; x=1777592939; 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=zsfZ2qn7mJjDdFBLWj4T8+3T0/zctntZPaRw9g3HzKQ=; b=m7d7JoNXBStHmIOBSHQODwoBuxQG7PDeYNwqAzgsCPBbZ28UEkFZYoILn4pmazjlTS BuNIEKxdoMcsrva6p5Aah8LSlH3zWW428QtxzAyZ6kGWppmvR3sfx5rLzMPtwIfqDYTB 3dpHLNxFL4pgO4Xk28hAEJDAc7P2H8jcSAGF0c4EjlWyhbtQv2JVbns5ZkYFoNf0ZCke 5fAyEekSeg72P2y8WJiM6OIVoXwf59bgeO5bxm0fl6lsiSBoBsgR//HSsJXLxlXXNlYZ wsN4p8rhkYRkbQ+uhMV6fLQ9vh9zUOoWB/mhiOUPpEWMNcno/DLw5bYNVpDGaoQONxbK hVtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776988139; x=1777592939; 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=zsfZ2qn7mJjDdFBLWj4T8+3T0/zctntZPaRw9g3HzKQ=; b=f0Vgw3/Re82GYnVraD2IlN06Gv6K74Kd+2AHyuXCFWUQW1mFGaUMmD9sC9FktCUNV6 c9s8bWKuYcI/Ok1ryD1nruXeg2vvpJbFiWHfHqGC4sgYbn89J9QN1Lx/lzEqP3G4C38j 4q1QhhuZyy435HcpSTz2ULGV7scF16R4D/zOTN9PZqE8Us/nEPzEzOxyH8k1s6aGiYrh BdyxyYWOXWdxXwet8ZcogHwqs9RLMc1i+cHutfs7GHA6c04vXjUlKmb4CaI17w2pH6Zc V2NrPKqQx39Y7/osAJClZjJk1f7m9/ww6v1Fgv+47fciNKSvJlANZs01F+my1r4tsmmS bvag== X-Forwarded-Encrypted: i=1; AFNElJ80LpYXV+hkct4Isr1CNCY2FN/mtLieed0ISxP3WMjLFlWWkhszXOSU44o8+Ojl9o8aBewXIVhbj8TFm9s=@vger.kernel.org X-Gm-Message-State: AOJu0YyJuF1xhVQb9TY8npgkGZH/JPu5L+gXKxS999TH2Qgx3z5A++xz /JY+3xqtHJ23vQ5ROz0QFrBicVyX9RI/FIlV9jpqSTewLuU+6deW2wq67SlFeQ== X-Gm-Gg: AeBDieufXFMwfxq4roRnRiJ8Sgv2rFoiK4WAJGThdqEHiyjruUyEIvkUNJU1eMTX8nt WqF4WyeufFSCY4PX9/W5B/F9xQd8w6+vkYIffx15nAVKs/ZK0YhZ77lE31+FmMiTXaHH61iB2iQ onG53119I09orCPmO8z/xz95BEsI08KsmYn9x/IULLsu6ZSOmBKHTaIC5CANyI3NxcOiW9LF3hc a2ixTudwUSq9DVfMMLQgQdhDQeB6jqX5R5fzxRP8c7HrvnBbSFa8xbGL7DJ09jM+SakTL1H8Jsj CAZ7KZ6H1v9KAed3g63md+KHmeVxSHY8Jn33D9EAQY8NYx3PkCa5J+vt7TbygiNdkYRbCUEb/PH moZ/QDhcB4jWQlAHIO09R4Hev+RdcNhVWOZ1tVtFhqmKuq+lLmg5/G6UeTJ6FBsCHK8hVbyKwB0 qUO5jyKqVTan+/ochVsq4MFGrwIWPwmDfKH54no+A= X-Received: by 2002:a05:600c:c0cf:b0:489:1f3e:5f6f with SMTP id 5b1f17b1804b1-4891f3e62a7mr201443495e9.12.1776988138726; Thu, 23 Apr 2026 16:48:58 -0700 (PDT) Received: from localhost ([2a01:4b00:d036:ae00:e8d7:434e:1f34:2cb6]) by smtp.gmail.com with UTF8SMTPSA id 5b1f17b1804b1-488fb72d365sm280596905e9.1.2026.04.23.16.48.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 16:48:58 -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 2/4] selftests/liveupdate: add test cases for LIVEUPDATE_IOCTL_CREATE_SESSION calls with invalid length Date: Fri, 24 Apr 2026 00:44:21 +0100 Message-ID: <20260423234753.3873095-3-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: quoted-printable Content-Type: text/plain; charset="utf-8" From: Luca Boccassi Verify that LIVEUPDATE_IOCTL_CREATE_SESSION ioctl which provide a name that is an empty string or too long are not allowed. Signed-off-by: Luca Boccassi Reviewed-by: Pasha Tatashin Acked-by: Mike Rapoport (Microsoft) Reviewed-by: Pratyush Yadav --- .../testing/selftests/liveupdate/liveupdate.c | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/tools/testing/selftests/liveupdate/liveupdate.c b/tools/testin= g/selftests/liveupdate/liveupdate.c index c2878e3d5ef9..f0a8e600c154 100644 --- a/tools/testing/selftests/liveupdate/liveupdate.c +++ b/tools/testing/selftests/liveupdate/liveupdate.c @@ -345,4 +345,46 @@ TEST_F(liveupdate_device, preserve_unsupported_fd) ASSERT_EQ(close(session_fd), 0); } =20 +/* + * Test Case: Create Session with No Null Termination + * + * Verifies that filling the entire 64-byte name field with non-null chara= cters + * (no '\0' terminator) is rejected by the kernel with EINVAL. + */ +TEST_F(liveupdate_device, create_session_no_null_termination) +{ + struct liveupdate_ioctl_create_session args =3D {}; + + self->fd1 =3D open(LIVEUPDATE_DEV, O_RDWR); + if (self->fd1 < 0 && errno =3D=3D ENOENT) + SKIP(return, "%s does not exist", LIVEUPDATE_DEV); + ASSERT_GE(self->fd1, 0); + + /* Fill entire name field with 'X', no null terminator */ + args.size =3D sizeof(args); + memset(args.name, 'X', sizeof(args.name)); + + EXPECT_LT(ioctl(self->fd1, LIVEUPDATE_IOCTL_CREATE_SESSION, &args), 0); + EXPECT_EQ(errno, EINVAL); +} + +/* + * Test Case: Create Session with Empty Name + * + * Verifies that creating a session with an empty string name fails + * with EINVAL. + */ +TEST_F(liveupdate_device, create_session_empty_name) +{ + int session_fd; + + self->fd1 =3D open(LIVEUPDATE_DEV, O_RDWR); + if (self->fd1 < 0 && errno =3D=3D ENOENT) + SKIP(return, "%s does not exist", LIVEUPDATE_DEV); + ASSERT_GE(self->fd1, 0); + + session_fd =3D create_session(self->fd1, ""); + EXPECT_EQ(session_fd, -EINVAL); +} + TEST_HARNESS_MAIN --=20 2.47.3 From nobody Sun Jun 21 07:50:10 2026 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: quoted-printable Content-Type: text/plain; charset="utf-8" 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) Reviewed-by: Pratyush Yadav --- 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/liveupdat= e.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 =3D LIVEUPDATE_CMD_SESSION_BASE, LIVEUPDATE_CMD_SESSION_RETRIEVE_FD =3D 0x41, LIVEUPDATE_CMD_SESSION_FINISH =3D 0x42, + LIVEUPDATE_CMD_SESSION_GET_NAME =3D 0x43, }; =20 /** @@ -213,4 +214,24 @@ struct liveupdate_session_finish { #define LIVEUPDATE_SESSION_FINISH \ _IO(LIVEUPDATE_IOCTL_TYPE, LIVEUPDATE_CMD_SESSION_FINISH) =20 +/** + * 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 descri= ptor. + * 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_sessio= n.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 *ses= sion, return luo_ucmd_respond(ucmd, sizeof(*argp)); } =20 +static int luo_session_get_name(struct luo_session *session, + struct luo_ucmd *ucmd) +{ + struct liveupdate_session_get_name *argp =3D 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; }; =20 struct luo_ioctl_op { @@ -319,6 +330,8 @@ static const struct luo_ioctl_op luo_session_ioctl_ops[= ] =3D { 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), }; =20 static long luo_session_ioctl(struct file *filep, unsigned int cmd, --=20 2.47.3 From nobody Sun Jun 21 07:50:10 2026 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (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 001E53D8117 for ; Thu, 23 Apr 2026 23:49:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776988150; cv=none; b=PeO6LwwAIYXVVM6AtjbODjdtfE1GxDFgBa+3b+SdMzTrEcaKyjhhV40VFI7mw/UiUDEoklYFQ63eAX2H8saO75E1mr2K+sd2WCySfcSc0CTvvx37sTPPwtXezsx5iyR0Gl5GFLfgoAwakq0aF3Yzu/Zn8zBw1jgzgYP90xKxCF8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776988150; c=relaxed/simple; bh=6QAHM/+DWYkr9x1gYr9RN4Y8/NZoZ6iGjp9788f2tLY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JLQMfCBdRWD6SL5ITETgNe9UpUL+9Tz6ppfB6PB7jhpt29AyoHJikqXTFw/3vtm2HdMqk+X8yFh0om3mIq/CcvK9jm4aX5ihuBIBIoKWtDpSCJ/jAI1ok+LlJW8lgeRdF7Ewid0p06k4jLK2/lXBr9PKkn2U50Ka4VQzfx26+wM= 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=IDQV4GR0; arc=none smtp.client-ip=209.85.128.54 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="IDQV4GR0" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-488b8bc6bc9so51765895e9.3 for ; Thu, 23 Apr 2026 16:49:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776988141; x=1777592941; 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=3lDwu8Gbb329Ho7MTScUMWrS/rbRC2QHTMwbPQ3a3YM=; b=IDQV4GR08poDSekd4acG4DcMFAa7Wt5F4W0n4U9ZNWewfa9qhNbytK16yxGoerjMtt +n8erlm7CQDgg9UnhUZ+2B0ASX4okUwO6Wd4FnpEh0OxdplB0goeL4KI+Xx8p9fp6AsK ipOFOOzi3xzVS5jPK2FGq2ubyGAPeC3qVMEIiXqTWBWHQCxcXPq+PfhRwYwm6/5iL6N+ ZcI+kQFlVMV8jFuu5PteU4/recuReZvpjgocAv3Za67iMwBvpBh03gsuZn7fZ2asG9K+ wO/qQkD4VJJH0wERvNgxAnY4E9/Lhb6Hwqypxm3ZAuaMjW5kk0cs7w5SPB6Eo+xD9xLS GdCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776988141; x=1777592941; 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=3lDwu8Gbb329Ho7MTScUMWrS/rbRC2QHTMwbPQ3a3YM=; b=kZOEYOluy7M5/d9jEijHk+jPTRfJr/A/Xyf2iajLaFaFU9J0SwGx6PLISPB+5oLV2v GosaPKVCVn4Yb8Fic3HkStB6MvOFbzgMVnJfFgss/m9iZkoY7EMYxr0aPm0Goc92Zn0I H5AmohiYqLWWBkprkBOMYP3QL7SaCB4WP4gudkxg2Nfq7HLz7jgrD8y8VcyMcxmW6kHg XRUyLozw53sEPaDQe9gZoFgVLuh7uWiLfeDeeZHTSCJiA/nFR85C7ArkwYI97SHaWXpn HKNC8Stfkow/Cdbo8e1lgCRNjOj6QChVzt1KmUjvfswxBoullLr9/XxhKVOU/G4lilsI ThYw== X-Forwarded-Encrypted: i=1; AFNElJ/W5Y/j5TrXU8l/A9ud8uiwc4KbpUOnuzdB8gE/8HiocvBmsynLt8Dg8GYh+wyMIdZk9J0xTW9ahkOMCoU=@vger.kernel.org X-Gm-Message-State: AOJu0YzJ3xYGf2SsaPAOms43kop5Kx9d6RlYy149w92iEoxS/tQW44V7 j75WxzAEqHrbhSZRVJycnJ97NE7hJQYzjk+EJqDRaeSrBIuhegJzYTBBkuke0w== X-Gm-Gg: AeBDiesIm5BvhEKep/Toz2eH8UBCI2bJR2n5mvByJY5I0N/AkXoV2WZw9gS6hK7fDPn wOtndC3Y2clP5KQzbOjkW9+Oj0KPugGOOz/rby0oz7gJnjrtV3G+mdh1cocLH5OstxTp1DiYIJj +fG1zgVAvTVEBdiscEEZcF/EN0FawlW+5k1PRKH2P53WDoSHWHIqFi2MUJtc3lmL5FbQ4Hb73wR OspB+ZAl5HmWOw+NaquWI0JuclwRLXHseqbLe/yg1joD/ZMP4++3uY50TDcc+Ls857lEM476UZi eiBJhNKgH95Cflynd5rHwjFczEcsVQ5RCxFyAPUOQ3ouWSB+NUgi3oSSYySwlKU5A1Q9IGRovW2 ysS0qcbBbkjoii4RXaN4taDgDeOUy+jE75da6t0xBLVv9/sGf5K92PPoBnk8hPTZMNIEHF94D88 9s1REp803dtgimVrE4ImIEpD162NLUzQYOwMg1OuoAawdRD6KYnA== X-Received: by 2002:a05:600c:3b14:b0:48a:52d9:54ab with SMTP id 5b1f17b1804b1-48a52d95604mr251358915e9.30.1776988141226; Thu, 23 Apr 2026 16:49:01 -0700 (PDT) Received: from localhost ([2a01:4b00:d036:ae00:e8d7:434e:1f34:2cb6]) by smtp.gmail.com with UTF8SMTPSA id 5b1f17b1804b1-488fb75c695sm164971395e9.14.2026.04.23.16.49.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 16:49:00 -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 4/4] selftests/liveupdate: add test cases for LIVEUPDATE_SESSION_GET_NAME Date: Fri, 24 Apr 2026 00:44:23 +0100 Message-ID: <20260423234753.3873095-5-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: quoted-printable Content-Type: text/plain; charset="utf-8" From: Luca Boccassi Verify that the new LIVEUPDATE_SESSION_GET_NAME ioctl works as expected via new test cases in the existing liveupdate selftest. Signed-off-by: Luca Boccassi Reviewed-by: Pasha Tatashin Acked-by: Mike Rapoport (Microsoft) Reviewed-by: Pratyush Yadav --- .../testing/selftests/liveupdate/liveupdate.c | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/tools/testing/selftests/liveupdate/liveupdate.c b/tools/testin= g/selftests/liveupdate/liveupdate.c index f0a8e600c154..eda832125809 100644 --- a/tools/testing/selftests/liveupdate/liveupdate.c +++ b/tools/testing/selftests/liveupdate/liveupdate.c @@ -102,6 +102,22 @@ static int create_session(int lu_fd, const char *name) return args.fd; } =20 +/* Helper function to get a session name via ioctl. */ +static int get_session_name(int session_fd, char *name, size_t name_len) +{ + struct liveupdate_session_get_name args =3D {}; + + args.size =3D sizeof(args); + + if (ioctl(session_fd, LIVEUPDATE_SESSION_GET_NAME, &args)) + return -errno; + + strncpy(name, (char *)args.name, name_len - 1); + name[name_len - 1] =3D '\0'; + + return 0; +} + /* * Test Case: Create Duplicate Session * @@ -387,4 +403,59 @@ TEST_F(liveupdate_device, create_session_empty_name) EXPECT_EQ(session_fd, -EINVAL); } =20 +/* + * Test Case: Get Session Name + * + * Verifies that the full session name can be retrieved from a session file + * descriptor via ioctl. + */ +TEST_F(liveupdate_device, get_session_name) +{ + char name_buf[LIVEUPDATE_SESSION_NAME_LENGTH] =3D {}; + const char *session_name =3D "get-name-test-session"; + int session_fd; + + self->fd1 =3D open(LIVEUPDATE_DEV, O_RDWR); + if (self->fd1 < 0 && errno =3D=3D ENOENT) + SKIP(return, "%s does not exist", LIVEUPDATE_DEV); + ASSERT_GE(self->fd1, 0); + + session_fd =3D create_session(self->fd1, session_name); + ASSERT_GE(session_fd, 0); + + ASSERT_EQ(get_session_name(session_fd, name_buf, sizeof(name_buf)), 0); + ASSERT_STREQ(name_buf, session_name); + + ASSERT_EQ(close(session_fd), 0); +} + +/* + * Test Case: Get Session Name at Maximum Length + * + * Verifies that a session name using the full LIVEUPDATE_SESSION_NAME_LEN= GTH + * (minus the null terminator) can be correctly retrieved. + */ +TEST_F(liveupdate_device, get_session_name_max_length) +{ + char name_buf[LIVEUPDATE_SESSION_NAME_LENGTH] =3D {}; + char long_name[LIVEUPDATE_SESSION_NAME_LENGTH]; + int session_fd; + + memset(long_name, 'A', sizeof(long_name) - 1); + long_name[sizeof(long_name) - 1] =3D '\0'; + + self->fd1 =3D open(LIVEUPDATE_DEV, O_RDWR); + if (self->fd1 < 0 && errno =3D=3D ENOENT) + SKIP(return, "%s does not exist", LIVEUPDATE_DEV); + ASSERT_GE(self->fd1, 0); + + session_fd =3D create_session(self->fd1, long_name); + ASSERT_GE(session_fd, 0); + + ASSERT_EQ(get_session_name(session_fd, name_buf, sizeof(name_buf)), 0); + ASSERT_STREQ(name_buf, long_name); + + ASSERT_EQ(close(session_fd), 0); +} + TEST_HARNESS_MAIN --=20 2.47.3