From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from vmicros1.altlinux.org (vmicros1.altlinux.org [194.107.17.57]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 21C9A1361; Thu, 26 Dec 2024 13:35:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=194.107.17.57 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735220111; cv=none; b=Jf0UiAsuadzBLBU4wjxyStZl5dol+I7IhPg28G3OjSrVw0ZYJBrlz2L2/csOXt0Q75H51CW1nqITUu2IkaEbURzNz7tc2r8WZvhuBB213uJUxgFdhNUG67kb/KuipTGSAKw7pRzxOUAOvg6d1p0zi62+ysFZkv7m/PyJcEbhUvo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735220111; c=relaxed/simple; bh=Uo3cDZbyha4w6q4pob/vGiTmVRDWap8zMZwgB1dxQNc=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=S02tGy3G+Qk44jUSOv0SdaaxAHm/U1Oj1yp48GlrZGYBM9htNslty4/9dUi6mR3XMAhNuKzpyRkmAhz9saqCZ8h9BpDPRg75pERHN+r9SwnufFpqWu6fP9BquWrDxbGYsdUOy+aSQF3LKZ9anRD4Aeq5cumYAsIOIqbemnD/fNM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=strace.io; spf=pass smtp.mailfrom=altlinux.org; arc=none smtp.client-ip=194.107.17.57 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=strace.io Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=altlinux.org Received: from mua.local.altlinux.org (mua.local.altlinux.org [192.168.1.14]) by vmicros1.altlinux.org (Postfix) with ESMTP id 8FAC872C8CC; Thu, 26 Dec 2024 16:35:00 +0300 (MSK) Received: by mua.local.altlinux.org (Postfix, from userid 508) id 489C37CCB3A; Thu, 26 Dec 2024 15:35:00 +0200 (IST) Date: Thu, 26 Dec 2024 15:35:00 +0200 From: "Dmitry V. Levin" To: Celeste Liu Cc: Oleg Nesterov , Paul Walmsley , Palmer Dabbelt , Eric Biederman , Kees Cook , Shuah Khan , Albert Ou , Alexandre Ghiti , Andrea Bolognani , =?utf-8?B?QmrDtnJuIFTDtnBlbA==?= , Thomas Gleixner , Ron Economos , Charlie Jenkins , Andrew Jones , Quan Zhou , Felix Yan , Ruizhe Pan , Guo Ren , Yao Zi , Eugene Syromyatnikov , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, =?utf-8?B?QmrDtnJuIFTDtnBlbA==?= Subject: Re: [PATCH v4 2/2] riscv: selftests: Add a ptrace test to verify syscall parameter modification Message-ID: <20241226133459.GA30481@strace.io> References: <20241226-riscv-new-regset-v4-0-4496a29d0436@coelacanthus.name> <20241226-riscv-new-regset-v4-2-4496a29d0436@coelacanthus.name> Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20241226-riscv-new-regset-v4-2-4496a29d0436@coelacanthus.name> On Thu, Dec 26, 2024 at 06:52:52PM +0800, Celeste Liu wrote: > This test checks that orig_a0 allows a syscall argument to be modified, > and that changing a0 does not change the syscall argument. > > Co-developed-by: Quan Zhou > Signed-off-by: Quan Zhou > Co-developed-by: Charlie Jenkins > Signed-off-by: Charlie Jenkins > Reviewed-by: Björn Töpel > Signed-off-by: Celeste Liu [...] > diff --git a/tools/testing/selftests/riscv/abi/ptrace.c b/tools/testing/selftests/riscv/abi/ptrace.c > new file mode 100644 > index 0000000000000000000000000000000000000000..023695352215bb5de3f91c1a6f5ea3b4f9373ff9 > --- /dev/null > +++ b/tools/testing/selftests/riscv/abi/ptrace.c [...] > + if (ptrace(PTRACE_GET_SYSCALL_INFO, pid, PTRACE_SYSCALL_INFO_ENTRY, &syscall_info_entry)) > + perr_and_exit("failed to get syscall info of entry\n"); > + result->orig_a0 = syscall_info_entry->entry.args[0]; > + if (ptrace(PTRACE_GET_SYSCALL_INFO, pid, PTRACE_SYSCALL_INFO_EXIT, &syscall_info_exit)) > + perr_and_exit("failed to get syscall info of exit\n"); > + result->a0 = syscall_info_exit->exit.rval; I'm sorry but this is not how PTRACE_GET_SYSCALL_INFO should be used. PTRACE_GET_SYSCALL_INFO operation takes a pointer and a size, and in this example instead of size you pass constants 1 and 2, which essentially means that both syscall_info_entry->entry.args[0] and syscall_info_exit->exit.rval are not going to be assigned and would just contain some garbage from the stack. Also, PTRACE_GET_SYSCALL_INFO operation returns the number of bytes available to be written by the kernel, which is always nonzero on any PTRACE_GET_SYSCALL_INFO-capable kernel. In other words, this example will always end up with perr_and_exit() call. I wonder how this test was tested before the submission. -- ldv 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0F716E77188 for ; Thu, 26 Dec 2024 13:35:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=ly5V46GN9MvTuycWtk+zAxb2ukRPFQWxQa9hwts81lg=; b=DEcl0/aQQVSy5E CyVVTavFG3lwR8fmNRe3yz7/Z4ddn410wtMd2/dhlL5DXahp9kprG0N+rkWrJuHRREKvQ67fLjEsh vicC0iWyS9doKKs7G1CShwa0Jk4/ON2f4caEI+0pq9kwz3d8TLuezAWZtGtwgNnN0e0fmLLt/AS+b YG6bbi2iPznxfkbaEH9ig0oURyUkfb7uannNh010vE+/QaHfJTcruTTzcf5P3JfpLOtrIsYeaxJSk 238D+E8QNSwL/5lhKHnXaEJ7hGfRvFPaRpxTR8QLmBI2zfSDswhy4DQ+mDnVT2PJjtwW147Hg/UIe UjOkYg5+CAwJztjq4VPA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tQo15-0000000FpxS-40QS; Thu, 26 Dec 2024 13:35:07 +0000 Received: from vmicros1.altlinux.org ([194.107.17.57]) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tQo13-0000000FpwU-2amg for linux-riscv@lists.infradead.org; Thu, 26 Dec 2024 13:35:07 +0000 Received: from mua.local.altlinux.org (mua.local.altlinux.org [192.168.1.14]) by vmicros1.altlinux.org (Postfix) with ESMTP id 8FAC872C8CC; Thu, 26 Dec 2024 16:35:00 +0300 (MSK) Received: by mua.local.altlinux.org (Postfix, from userid 508) id 489C37CCB3A; Thu, 26 Dec 2024 15:35:00 +0200 (IST) Date: Thu, 26 Dec 2024 15:35:00 +0200 From: "Dmitry V. Levin" To: Celeste Liu Cc: Oleg Nesterov , Paul Walmsley , Palmer Dabbelt , Eric Biederman , Kees Cook , Shuah Khan , Albert Ou , Alexandre Ghiti , Andrea Bolognani , =?utf-8?B?QmrDtnJuIFTDtnBlbA==?= , Thomas Gleixner , Ron Economos , Charlie Jenkins , Andrew Jones , Quan Zhou , Felix Yan , Ruizhe Pan , Guo Ren , Yao Zi , Eugene Syromyatnikov , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, =?utf-8?B?QmrDtnJuIFTDtnBlbA==?= Subject: Re: [PATCH v4 2/2] riscv: selftests: Add a ptrace test to verify syscall parameter modification Message-ID: <20241226133459.GA30481@strace.io> References: <20241226-riscv-new-regset-v4-0-4496a29d0436@coelacanthus.name> <20241226-riscv-new-regset-v4-2-4496a29d0436@coelacanthus.name> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20241226-riscv-new-regset-v4-2-4496a29d0436@coelacanthus.name> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241226_053505_829664_365F3DEC X-CRM114-Status: GOOD ( 13.93 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gVGh1LCBEZWMgMjYsIDIwMjQgYXQgMDY6NTI6NTJQTSArMDgwMCwgQ2VsZXN0ZSBMaXUgd3Jv dGU6Cj4gVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IG9yaWdfYTAgYWxsb3dzIGEgc3lzY2FsbCBhcmd1 bWVudCB0byBiZSBtb2RpZmllZCwKPiBhbmQgdGhhdCBjaGFuZ2luZyBhMCBkb2VzIG5vdCBjaGFu Z2UgdGhlIHN5c2NhbGwgYXJndW1lbnQuCj4gCj4gQ28tZGV2ZWxvcGVkLWJ5OiBRdWFuIFpob3Ug PHpob3VxdWFuQGlzY2FzLmFjLmNuPgo+IFNpZ25lZC1vZmYtYnk6IFF1YW4gWmhvdSA8emhvdXF1 YW5AaXNjYXMuYWMuY24+Cj4gQ28tZGV2ZWxvcGVkLWJ5OiBDaGFybGllIEplbmtpbnMgPGNoYXJs aWVAcml2b3NpbmMuY29tPgo+IFNpZ25lZC1vZmYtYnk6IENoYXJsaWUgSmVua2lucyA8Y2hhcmxp ZUByaXZvc2luYy5jb20+Cj4gUmV2aWV3ZWQtYnk6IEJqw7ZybiBUw7ZwZWwgPGJqb3JuQHJpdm9z aW5jLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBDZWxlc3RlIExpdSA8dXd1QGNvZWxhY2FudGh1cy5u YW1lPgpbLi4uXQo+IGRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yaXNjdi9h YmkvcHRyYWNlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yaXNjdi9hYmkvcHRyYWNlLmMK PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAuLjAyMzY5NTM1MjIxNWJiNWRlM2Y5MWMxYTZmNWVhM2I0ZjkzNzNmZjkK PiAtLS0gL2Rldi9udWxsCj4gKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcmlzY3YvYWJp L3B0cmFjZS5jClsuLi5dCj4gKwlpZiAocHRyYWNlKFBUUkFDRV9HRVRfU1lTQ0FMTF9JTkZPLCBw aWQsIFBUUkFDRV9TWVNDQUxMX0lORk9fRU5UUlksICZzeXNjYWxsX2luZm9fZW50cnkpKQo+ICsJ CXBlcnJfYW5kX2V4aXQoImZhaWxlZCB0byBnZXQgc3lzY2FsbCBpbmZvIG9mIGVudHJ5XG4iKTsK PiArCXJlc3VsdC0+b3JpZ19hMCA9IHN5c2NhbGxfaW5mb19lbnRyeS0+ZW50cnkuYXJnc1swXTsK PiArCWlmIChwdHJhY2UoUFRSQUNFX0dFVF9TWVNDQUxMX0lORk8sIHBpZCwgUFRSQUNFX1NZU0NB TExfSU5GT19FWElULCAmc3lzY2FsbF9pbmZvX2V4aXQpKQo+ICsJCXBlcnJfYW5kX2V4aXQoImZh aWxlZCB0byBnZXQgc3lzY2FsbCBpbmZvIG9mIGV4aXRcbiIpOwo+ICsJcmVzdWx0LT5hMCA9IHN5 c2NhbGxfaW5mb19leGl0LT5leGl0LnJ2YWw7CgpJJ20gc29ycnkgYnV0IHRoaXMgaXMgbm90IGhv dyBQVFJBQ0VfR0VUX1NZU0NBTExfSU5GTyBzaG91bGQgYmUgdXNlZC4KClBUUkFDRV9HRVRfU1lT Q0FMTF9JTkZPIG9wZXJhdGlvbiB0YWtlcyBhIHBvaW50ZXIgYW5kIGEgc2l6ZSwKYW5kIGluIHRo aXMgZXhhbXBsZSBpbnN0ZWFkIG9mIHNpemUgeW91IHBhc3MgY29uc3RhbnRzIDEgYW5kIDIsIHdo aWNoCmVzc2VudGlhbGx5IG1lYW5zIHRoYXQgYm90aCBzeXNjYWxsX2luZm9fZW50cnktPmVudHJ5 LmFyZ3NbMF0gYW5kCnN5c2NhbGxfaW5mb19leGl0LT5leGl0LnJ2YWwgYXJlIG5vdCBnb2luZyB0 byBiZSBhc3NpZ25lZAphbmQgd291bGQganVzdCBjb250YWluIHNvbWUgZ2FyYmFnZSBmcm9tIHRo ZSBzdGFjay4KCkFsc28sIFBUUkFDRV9HRVRfU1lTQ0FMTF9JTkZPIG9wZXJhdGlvbiByZXR1cm5z IHRoZSBudW1iZXIgb2YgYnl0ZXMKYXZhaWxhYmxlIHRvIGJlIHdyaXR0ZW4gYnkgdGhlIGtlcm5l bCwgd2hpY2ggaXMgYWx3YXlzIG5vbnplcm8gb24gYW55ClBUUkFDRV9HRVRfU1lTQ0FMTF9JTkZP LWNhcGFibGUga2VybmVsLiAgSW4gb3RoZXIgd29yZHMsIHRoaXMgZXhhbXBsZQp3aWxsIGFsd2F5 cyBlbmQgdXAgd2l0aCBwZXJyX2FuZF9leGl0KCkgY2FsbC4KCkkgd29uZGVyIGhvdyB0aGlzIHRl c3Qgd2FzIHRlc3RlZCBiZWZvcmUgdGhlIHN1Ym1pc3Npb24uCgoKLS0gCmxkdgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtcmlzY3YgbWFpbGlu ZyBsaXN0CmxpbnV4LXJpc2N2QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJh ZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yaXNjdgo=