From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 25A6CC02180 for ; Wed, 15 Jan 2025 21:33:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8D52E280001; Wed, 15 Jan 2025 16:33:49 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 884386B0088; Wed, 15 Jan 2025 16:33:49 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 72542280001; Wed, 15 Jan 2025 16:33:49 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 554B96B0085 for ; Wed, 15 Jan 2025 16:33:49 -0500 (EST) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 03F591A0374 for ; Wed, 15 Jan 2025 21:33:48 +0000 (UTC) X-FDA: 83010988578.22.52CB689 Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) by imf03.hostedemail.com (Postfix) with ESMTP id EAF1820007 for ; Wed, 15 Jan 2025 21:33:46 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=ytST9Dnv; dmarc=none; spf=pass (imf03.hostedemail.com: domain of charlie@rivosinc.com designates 209.85.216.46 as permitted sender) smtp.mailfrom=charlie@rivosinc.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1736976827; a=rsa-sha256; cv=none; b=b+83/X3E0KnxoF9KQslw2pLDk8B2DpPNOq0nzmOWsGUZ0+QgxBqU0cg4hC4xB4cjyjyK7E fTNhRLVy9ohBiHDZHPyCfcNCUYbj3UGfLmYsRfFb62u3iyxReH+jlNpwjilDd/AKR5EQGe Ri1pYpPsmMcNL8rturRze4TWBHDXbcA= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=ytST9Dnv; dmarc=none; spf=pass (imf03.hostedemail.com: domain of charlie@rivosinc.com designates 209.85.216.46 as permitted sender) smtp.mailfrom=charlie@rivosinc.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1736976827; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=Qo4ETtsJlbJYJPy25LzBlpSKy4jxFb72+aJIYM6Qmdo=; b=Q5jqhfCQTFogManG9mhestZxs0U5Z9bh+Q+2cR6AEJ1DIkYaa4rM7I39sXPic4mce/1UJC w4mbTyXgvUfrxFLICm1Ki5uuYFdU0H+Oo3vWm0n9HddF5J7nK2ssDSG4U27Ou+a7eAcKAp 3kOSl9tVyj716p7KsqKaQwbw///jSwA= Received: by mail-pj1-f46.google.com with SMTP id 98e67ed59e1d1-2efd81c7ca4so390223a91.2 for ; Wed, 15 Jan 2025 13:33:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1736976825; x=1737581625; darn=kvack.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=Qo4ETtsJlbJYJPy25LzBlpSKy4jxFb72+aJIYM6Qmdo=; b=ytST9Dnv6SbdIXb1dGGghXjAzTPylxZT+FEGjtJZ33G617jwDPAgHOQ3xpXDhykyrX 2UUedqvcrPcjwX1TBnskeK7CcryEL3k3zaTwYmct67DM8IKtTYi7EzySHvper9/STrFI mnGF8mTVB6YZQJrckAv3QNyOofjRzSSQeOiiIxNyWWdJy+4/SchuQvbyeVUfrtWlObW4 yeX0PxBHN2149kJNHwfYbqD9W8whpF2rYlJ2B8PeIw0LYlvZwdUQR/QQo6I4+zi7UYG7 F8Oz34Dp24uawzOt/9DXidvzyzXl70Lrh6HcTC5hVPZKsGN6vVqbHTBdv0gHrIeJS+2W uzDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736976825; x=1737581625; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Qo4ETtsJlbJYJPy25LzBlpSKy4jxFb72+aJIYM6Qmdo=; b=KAWJWFNM5SUMbeZQXvKuyHTYoiKyDiwLYXGtP8zkcm27CHxcD+ow3jdK3GZaLWHYNh /xdeye9+sda68Ah7/eIhnnCcE/3ypaFH33aFB9YbacGOVkJxdJO7nDrzNLEn0lndeFOd jQZwJO9+aWk8ALO9Fkg7rrxO7Z2EaIXXQ2Gh4m4XnrlFb+Q8Wgyal8r8+4iYrggY2zz4 2hTKNvN7KvLHeQ660IpUeDyJusUGbFr9wPr4OMBJp+VPjAoytWKbGNqzErkT0hrSghBM hq6Up1C9fYHpa3LvctSZUHKBTlUbUaSl9HiuxMc3Mgmp/xvCQjnOZO6763cGo37hN1ck qsow== X-Forwarded-Encrypted: i=1; AJvYcCXPCt0d4DG3q/aTVUcdjvpJl1ShxqsaqNdUPp58nuY3ODvvpeDEzc1S9Wuap5LqrWdHyVAZYZ/b5Q==@kvack.org X-Gm-Message-State: AOJu0Yz/uvziCWqsAr4IoVEy1lZO32kM/dVv5Ky396VJKfZGTsz0w0nV KznYkO/gZh+SXXDsjaIiVnsbPIgbJz5RpjQ7RHftIakEXiy2frvX6+qDeSDumYM= X-Gm-Gg: ASbGncsAJB2Dfom9YZ1vFKoOwqVHsJCWJvIpc1kfFnKhibMIB88gVlzzo5nWEkI7CgS vB42DBE7pOxJfquw0lkErx9f5ZVnzAtJlKjbWJdC9/D0s1q0aIywl6qa3w+x+VOmKU4RAB1QzDW lg3gepLGtGi76Ka/ToZqAKZkN+GoN1ZJ0xAxRNI5cWMv69rUREkBDPrWtIzAeKCD6h5JLqDrI8u wKeY7ieOyprkIIS4I893CEdhx7wSxULXqsA7iyNmuFq7ic= X-Google-Smtp-Source: AGHT+IHeBFp9ozsD00dMGeBP70l/6pdoK1N3rRLqykt0VBwwJZB2RSCK6+oNoGuy+C0NCfg+cpgwSw== X-Received: by 2002:a17:90b:518b:b0:2ee:b2fe:eeee with SMTP id 98e67ed59e1d1-2f548eba7d0mr45962466a91.15.1736976824059; Wed, 15 Jan 2025 13:33:44 -0800 (PST) Received: from ghost ([50.145.13.30]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2f72c17fa66sm2035101a91.13.2025.01.15.13.33.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Jan 2025 13:33:43 -0800 (PST) Date: Wed, 15 Jan 2025 13:33:38 -0800 From: Charlie Jenkins To: Celeste Liu Cc: Oleg Nesterov , Paul Walmsley , Palmer Dabbelt , Eric Biederman , Kees Cook , Shuah Khan , Albert Ou , Alexandre Ghiti , "Dmitry V. Levin" , Andrea Bolognani , =?iso-8859-1?Q?Bj=F6rn_T=F6pel?= , Thomas Gleixner , Ron Economos , Andrew Jones , Quan Zhou , Felix Yan , Ruizhe Pan , Guo Ren , Yao Zi , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, stable@vger.kernel.org, =?iso-8859-1?Q?Bj=F6rn_T=F6pel?= Subject: Re: [PATCH v6 1/3] riscv/ptrace: add new regset to access original a0 register Message-ID: References: <20250115-riscv-new-regset-v6-0-59bfddd33525@coelacanthus.name> <20250115-riscv-new-regset-v6-1-59bfddd33525@coelacanthus.name> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20250115-riscv-new-regset-v6-1-59bfddd33525@coelacanthus.name> X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: EAF1820007 X-Stat-Signature: chpt964yomhcpiu7m7d1ai9srmfmdztc X-Rspam-User: X-HE-Tag: 1736976826-502112 X-HE-Meta: U2FsdGVkX19azXzbZVlwfzMOyGFmX6L2g5sQOCYwA2lmGNbXcvDfEcBBNUwxy3pySbOTdmUEEIw5MpVAeCBe/Z6/WRzECKj9kGrPz0zZih5gGa4iV6vvw0YvmeGs+BLxuiocq5W2jQLZyrNknAH0uzIVw0Cr3nr81gHRhgfX7IdaWUF8CGJ7EQygt2chROeP2k4vG04/tCuawAVs4Pw5yNCVUXmMKKxe3KZG5gsfyQCTtCV87p1ghckUooheSzmLrSaf0PsJqnLPggQDOAMxszta3ULasshxcEFhu2awtschSXalNNVF3jHHg/UhrYEnvnOVohlzkyynPIWW62cOmzrVfQ4cuDChX20aJtkJ22hlflbEJnN73rmR30958j1GbibjyINJQRySmORrsHXh0nwJl/BYilhw5zBzXZ+tXUv5gRTpZQ6D3sTSYWuVAsyNI//TtjvUrzqiKKX/CZdYzv69l/4vq4PYd9qMeIqeE07Ap5OUc33Wt2UbN38esCB3pryA9z4Ym0tM7eMoeL43pWcPvYM7VDMXAurZ41dV4d+6IXFp1FF+fV6qxVo7CmfTl8myVvg/TbBM9+q/01ZB1Y2QWQQH7nHoSvvMaZs3+GTjpZYNkj3J4nBJgtXRCdwqOcVLqqrZU2UXIFIv6JQaOP7bSPE3qwaK5Rhj1BxOzd9PJcSH9Q8qpfj161rjx6JmFFfFmmp3+ug4Nm05VVY0etHdnv5l6jHHSjoFf/dWagbaIhzPXmWj8/h6v10ENxOTtxbHeMU5Xd7QkwWSZnEApbIs2t91eKRZAWu0UX0FWZVujT/wEsdonqGY4bPHI83nsOETTuXjiLqQ5HZOFtQuqRv6hfK5qk5JaTNyDwnyqKduxt0eOS00mbZHB2N/gsgYXEQzFTtNiAMwQbwKe4gAYxD5caV3Oj0cX4zbZhQZpfKBWZcYc28vjs3FKjjXSuRY3LTqWzDjM+0RifS/gDs LLK/qySw VHgiIJ4dZldUV+D/4hd4v1GI8oLa/xTTMHyMXYiedLRAnWhZxV5bD7C6rj2SiTNLw6wAVyVybqzFk7sRbD2r3pSnTm0RTU/mQItZGCMsfBjHHwj1h0UcMzatdmygW9WdvuyB/GBktpyDgqgn3NsqtuQlCVATSV7uPY8N/KmH3x2XcwthzGxbZ1WYcjc9IeHWzLLC1TYEC5w+MvKh2f/swsszkjcACQ0fipdeCCwIRFE4+X8LR7QpSpQTm61Tq4GEtFNPzsYRiA/oE/QKwOw7Q4DZIez0s5ia6Ns3+rJmszSIeTe0BrZzzk9z/9SiunifsvJEWbYGUYyWYL/uQumrBDWxKYKZtUF+gIHpxy/RkA3imDiG3CQetPNc10kYHRIZOFAmt5lKuSzzT6sT1eEcGRJijwD6tEKiiyTosfR3TAxCf0k1yeMVRLWu/o4DaaVPS6J3GAkY02ujOsCyxcSTbyEf1xW1aVjvy+hlKLj+w9Pz/mTvHWI6zAlQqeJyr7vLaeuBdS5cejnYVGh8= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Wed, Jan 15, 2025 at 07:13:27PM +0800, Celeste Liu wrote: > The orig_a0 is missing in struct user_regs_struct of riscv, and there is > no way to add it without breaking UAPI. (See Link tag below) > > Like NT_ARM_SYSTEM_CALL do, we add a new regset name NT_RISCV_ORIG_A0 to > access original a0 register from userspace via ptrace API. > > Fixes: e2c0cdfba7f6 ("RISC-V: User-facing API") > Link: https://lore.kernel.org/all/59505464-c84a-403d-972f-d4b2055eeaac@gmail.com/ > Cc: stable@vger.kernel.org > Reviewed-by: Björn Töpel > Signed-off-by: Celeste Liu Thank you! Reviewed-by: Charlie Jenkins Tested-by: Charlie Jenkins > --- > arch/riscv/kernel/ptrace.c | 32 ++++++++++++++++++++++++++++++++ > include/uapi/linux/elf.h | 1 + > 2 files changed, 33 insertions(+) > > diff --git a/arch/riscv/kernel/ptrace.c b/arch/riscv/kernel/ptrace.c > index ea67e9fb7a583683b922fe2c017ea61f3bc848db..ef9ab74c8575a5c440155973b1c625c06a867c97 100644 > --- a/arch/riscv/kernel/ptrace.c > +++ b/arch/riscv/kernel/ptrace.c > @@ -31,6 +31,7 @@ enum riscv_regset { > #ifdef CONFIG_RISCV_ISA_SUPM > REGSET_TAGGED_ADDR_CTRL, > #endif > + REGSET_ORIG_A0, > }; > > static int riscv_gpr_get(struct task_struct *target, > @@ -184,6 +185,29 @@ static int tagged_addr_ctrl_set(struct task_struct *target, > } > #endif > > +static int riscv_orig_a0_get(struct task_struct *target, > + const struct user_regset *regset, > + struct membuf to) > +{ > + return membuf_store(&to, task_pt_regs(target)->orig_a0); > +} > + > +static int riscv_orig_a0_set(struct task_struct *target, > + const struct user_regset *regset, > + unsigned int pos, unsigned int count, > + const void *kbuf, const void __user *ubuf) > +{ > + unsigned long orig_a0 = task_pt_regs(target)->orig_a0; > + int ret; > + > + ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &orig_a0, 0, -1); > + if (ret) > + return ret; > + > + task_pt_regs(target)->orig_a0 = orig_a0; > + return 0; > +} > + > static const struct user_regset riscv_user_regset[] = { > [REGSET_X] = { > .core_note_type = NT_PRSTATUS, > @@ -224,6 +248,14 @@ static const struct user_regset riscv_user_regset[] = { > .set = tagged_addr_ctrl_set, > }, > #endif > + [REGSET_ORIG_A0] = { > + .core_note_type = NT_RISCV_ORIG_A0, > + .n = 1, > + .size = sizeof(elf_greg_t), > + .align = sizeof(elf_greg_t), > + .regset_get = riscv_orig_a0_get, > + .set = riscv_orig_a0_set, > + }, > }; > > static const struct user_regset_view riscv_user_native_view = { > diff --git a/include/uapi/linux/elf.h b/include/uapi/linux/elf.h > index b44069d29cecc0f9de90ee66bfffd2137f4275a8..390060229601631da2fb27030d9fa2142e676c14 100644 > --- a/include/uapi/linux/elf.h > +++ b/include/uapi/linux/elf.h > @@ -452,6 +452,7 @@ typedef struct elf64_shdr { > #define NT_RISCV_CSR 0x900 /* RISC-V Control and Status Registers */ > #define NT_RISCV_VECTOR 0x901 /* RISC-V vector registers */ > #define NT_RISCV_TAGGED_ADDR_CTRL 0x902 /* RISC-V tagged address control (prctl()) */ > +#define NT_RISCV_ORIG_A0 0x903 /* RISC-V original a0 register */ > #define NT_LOONGARCH_CPUCFG 0xa00 /* LoongArch CPU config registers */ > #define NT_LOONGARCH_CSR 0xa01 /* LoongArch control and status registers */ > #define NT_LOONGARCH_LSX 0xa02 /* LoongArch Loongson SIMD Extension registers */ > > -- > 2.48.0 >