From nobody Sat May 11 08:51:27 2024 Delivered-To: importer2@patchew.org Received-SPF: pass (zohomail.com: domain of vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; envelope-from=linux-kernel-owner@vger.kernel.org; helo=vger.kernel.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org ARC-Seal: i=1; a=rsa-sha256; t=1622276224; cv=none; d=zohomail.com; s=zohoarc; b=P+gvBlNAYrujpBJBo7ocvvZC9nXnkEO3L5AM1R/c1DdWFu62+kJDzuP8L4sh9DENvzoFxNw0r+woWzATf2WoAjn7GYLTciCc8YFisQNAx5jt1/9iTwdrE7LxWDxp8A5kLTP+a9ZqHgLE2Fwv3HkVpP//7bPyzKoKPsYFLn0Wow8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1622276224; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:MIME-Version:Message-ID:References:Subject:To; bh=aUrOP0WIocj59m22tS9ZNky+Mdhqy6xTmlTN4QR6iMw=; b=DdLrDcRLH1DD40dzzg0S92JvkSx+ZzUXU/iAyKj84Q8QCK4KTNt+++Urey5BjJDjZF4WLjdSZ6nt69CKIu5Ryi1ayYFfd87Sr4tbXqC/4h1XyN3B4pD2LDKj8WilwG3m1bzlSJP1OKVwaSXvxeHYqwFgwPkDGUVkVyzgV2xNOf8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mx.zohomail.com with SMTP id 1622276224854849.9478652818977; Sat, 29 May 2021 01:17:04 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229778AbhE2ISa (ORCPT ); Sat, 29 May 2021 04:18:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40376 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229800AbhE2IS1 (ORCPT ); Sat, 29 May 2021 04:18:27 -0400 Received: from mail-pg1-x532.google.com (mail-pg1-x532.google.com [IPv6:2607:f8b0:4864:20::532]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3FCD5C06174A for ; Sat, 29 May 2021 01:16:51 -0700 (PDT) Received: by mail-pg1-x532.google.com with SMTP id i5so4356094pgm.0 for ; Sat, 29 May 2021 01:16:51 -0700 (PDT) Received: from localhost.localdomain (76-242-91-105.lightspeed.sntcca.sbcglobal.net. [76.242.91.105]) by smtp.gmail.com with ESMTPSA id b12sm6613960pgs.52.2021.05.29.01.16.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 29 May 2021 01:16:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fex-emu.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=aUrOP0WIocj59m22tS9ZNky+Mdhqy6xTmlTN4QR6iMw=; b=IIGYNq4UBx9wJ6pE4E1sJVHPHpHBkMR6wSRDhdhvExpQW2DgnNnxoOkfKXBaTzG2v3 eaEgWGKfr8Zp6mnJ8GNGMEiCrBS93YzK4AB9dgxTpuiSLpnNZck84Wo8DUJbZyigDMmG A2wjjqHx3xw/zEbFGVQCekcP35jKqDU6+vFMc2Y67hqdoqkYhIQksIwXYq527eVbiAqS scShJ9jfHtk1vMIaE+4eTywACbJxvjqw2MLCYQc+13OPGNhb9dyCoiKZO53zWeanve50 fVX0TaOf+6EBv7Usv1AmVdVbTtS3cDNqrv6NbuOqqR1V981mqLjKaSDsj2vN4Rs9yqHA RSvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=aUrOP0WIocj59m22tS9ZNky+Mdhqy6xTmlTN4QR6iMw=; b=uieSxqWvk2aMI9svZsK0CQhIcOr6A4WbzHHVGFDaimTLHQV0ersaYHL/p2YBjZTB0g Kdes0dWMGR5irnhb+uztSQvw69e2EKggxM9gsa/pKDj849ok/8/3pKYoSCn5Gj7spwZf F02/qvfMTPoZuhO4v6yV0OQbcG4ACbgr37j9QRG92PlZiHmIANQ8Zs6CyffEmUaSLj50 As/3b9b/we50P0RmgtlV0pNvyhJjIRGxB0EUauVtIygVcu73t0rXkjymrHAmeKj/oIfI Elic7RvokolozAIM67KvpFnEH+xv7sEclsuMwrYhfOE0x0eX+Cv9uk8bbcBqkxQSsrPL I+/Q== X-Gm-Message-State: AOAM5336DB208rSTipUBzfGlhot8ESUMRDq9IhRlrVHHRuiNbwxLkNQg Yg4SgjDn43qGzHapD61IykfadKxcb7RRTNXi X-Google-Smtp-Source: ABdhPJzJQXE9qn2bh8eshCgngO3Txr10wGBl1RUKBlJFaM4D2NPFDNw90iFbSFnb+j1w1lCsyIOT4g== X-Received: by 2002:a63:e709:: with SMTP id b9mr12953505pgi.18.1622276210816; Sat, 29 May 2021 01:16:50 -0700 (PDT) From: houdek.ryan@fex-emu.org X-Google-Original-From: Houdek.Ryan@fex-emu.org Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Ryan Houdek Subject: [PATCH 1/4] Move userspace syscall dispatch outside of common entry Date: Sat, 29 May 2021 01:16:17 -0700 Message-Id: <20210529081620.164422-2-Houdek.Ryan@fex-emu.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210529081620.164422-1-Houdek.Ryan@fex-emu.org> References: <20210529081620.164422-1-Houdek.Ryan@fex-emu.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable To: unlisted-recipients:; (no To-header on input) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Ryan Houdek This will allow other architectures to support userspace syscall dispatch without supporting the syscall common entry. Signed-off-by: Ryan Houdek --- arch/Kconfig | 4 ++++ include/linux/syscall_user_dispatch.h | 4 +++- kernel/entry/Makefile | 3 ++- kernel/entry/common.c | 3 +-- kernel/entry/common.h | 7 ------- kernel/entry/syscall_user_dispatch.c | 2 -- 6 files changed, 10 insertions(+), 13 deletions(-) delete mode 100644 kernel/entry/common.h diff --git a/arch/Kconfig b/arch/Kconfig index c45b770d3579..def67ebbae83 100644 --- a/arch/Kconfig +++ b/arch/Kconfig @@ -30,7 +30,11 @@ config SET_FS config HOTPLUG_SMT bool =20 +config SYSCALL_USER_DISPATCH + bool + config GENERIC_ENTRY + select SYSCALL_USER_DISPATCH bool =20 config KPROBES diff --git a/include/linux/syscall_user_dispatch.h b/include/linux/syscall_= user_dispatch.h index a0ae443fb7df..9d1e244d7021 100644 --- a/include/linux/syscall_user_dispatch.h +++ b/include/linux/syscall_user_dispatch.h @@ -7,7 +7,7 @@ =20 #include =20 -#ifdef CONFIG_GENERIC_ENTRY +#ifdef CONFIG_SYSCALL_USER_DISPATCH =20 struct syscall_user_dispatch { char __user *selector; @@ -16,6 +16,8 @@ struct syscall_user_dispatch { bool on_dispatch; }; =20 +bool syscall_user_dispatch(struct pt_regs *regs); + int set_syscall_user_dispatch(unsigned long mode, unsigned long offset, unsigned long len, char __user *selector); =20 diff --git a/kernel/entry/Makefile b/kernel/entry/Makefile index 095c775e001e..35684390d56e 100644 --- a/kernel/entry/Makefile +++ b/kernel/entry/Makefile @@ -9,5 +9,6 @@ KCOV_INSTRUMENT :=3D n CFLAGS_REMOVE_common.o =3D -fstack-protector -fstack-protector-strong CFLAGS_common.o +=3D -fno-stack-protector =20 -obj-$(CONFIG_GENERIC_ENTRY) +=3D common.o syscall_user_dispatch.o +obj-$(CONFIG_GENERIC_ENTRY) +=3D common.o +obj-$(CONFIG_SYSCALL_USER_DISPATCH) +=3D syscall_user_dispatch.o obj-$(CONFIG_KVM_XFER_TO_GUEST_WORK) +=3D kvm.o diff --git a/kernel/entry/common.c b/kernel/entry/common.c index a0b3b04fb596..84ea1e66e0b2 100644 --- a/kernel/entry/common.c +++ b/kernel/entry/common.c @@ -5,8 +5,7 @@ #include #include #include - -#include "common.h" +#include =20 #define CREATE_TRACE_POINTS #include diff --git a/kernel/entry/common.h b/kernel/entry/common.h deleted file mode 100644 index f6e6d02f07fe..000000000000 --- a/kernel/entry/common.h +++ /dev/null @@ -1,7 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -#ifndef _COMMON_H -#define _COMMON_H - -bool syscall_user_dispatch(struct pt_regs *regs); - -#endif diff --git a/kernel/entry/syscall_user_dispatch.c b/kernel/entry/syscall_us= er_dispatch.c index c240302f56e2..352da8427b01 100644 --- a/kernel/entry/syscall_user_dispatch.c +++ b/kernel/entry/syscall_user_dispatch.c @@ -14,8 +14,6 @@ =20 #include =20 -#include "common.h" - static void trigger_sigsys(struct pt_regs *regs) { struct kernel_siginfo info; --=20 2.30.2 From nobody Sat May 11 08:51:27 2024 Delivered-To: importer2@patchew.org Received-SPF: pass (zohomail.com: domain of vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; envelope-from=linux-kernel-owner@vger.kernel.org; helo=vger.kernel.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org ARC-Seal: i=1; a=rsa-sha256; t=1622276225; cv=none; d=zohomail.com; s=zohoarc; b=Zvmvs5IIJGZdts6OeaKNQ3YXqtF8o6HniRtfnBXi1rMTjGuQ1e9QWbDcuO1JMS4agSZf5849OFokmU7VsdoUL/BxYLspmjXgJJrHWCniEcs6GK5yIlL6pqzeiLrKPvRc54PQs766NlLE2x+gEamm81AfVRcXDc6myet74b1iNlQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1622276225; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:MIME-Version:Message-ID:References:Subject:To; bh=Hgq7e1/NKd5FJQDiWlDOoRnh3f92YL4vi/h4IjW0IVw=; b=kc9OMf7SExhlEaR7oJV5Mn0U7QLNs+gf4fbFjPEX3KQJDyv/TAY7Sngmf8/2m4IGRTFljvIv0edEf+hMe8Ijo4Bh4gVYHrYB48HZkz93pskBOpfV9V8JRzbTySzA05CLTpB+v9pt/hcNuKYmGTRy9ocOs5h7cGpcFxXhSotLi5Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mx.zohomail.com with SMTP id 1622276225874912.4775520747214; Sat, 29 May 2021 01:17:05 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229815AbhE2ISc (ORCPT ); Sat, 29 May 2021 04:18:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40386 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229809AbhE2ISa (ORCPT ); Sat, 29 May 2021 04:18:30 -0400 Received: from mail-pf1-x436.google.com (mail-pf1-x436.google.com [IPv6:2607:f8b0:4864:20::436]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C46BBC061574 for ; Sat, 29 May 2021 01:16:53 -0700 (PDT) Received: by mail-pf1-x436.google.com with SMTP id y202so5018201pfc.6 for ; Sat, 29 May 2021 01:16:53 -0700 (PDT) Received: from localhost.localdomain (76-242-91-105.lightspeed.sntcca.sbcglobal.net. [76.242.91.105]) by smtp.gmail.com with ESMTPSA id b12sm6613960pgs.52.2021.05.29.01.16.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 29 May 2021 01:16:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fex-emu.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Hgq7e1/NKd5FJQDiWlDOoRnh3f92YL4vi/h4IjW0IVw=; b=b6L5xoHQQEPzt2ux4pQz4lAhmbz6UYPgWKclb8mM0/iRdy8Uc7og7IUd4+26BgWF2q Gzx9wkyishHTwltiQXJRhuVExKTIqXXlHF7uexgCAdvtPLI/dog7al8QqttFhkzURaD7 1l6+QOiTOKx4veoQEd8gAAdKJGgbOBx3MUE9N7slcymGcDEJ73txdw3jUoem3v95ucvo BFcqBOD1Y2Wr7zd1wcAVo4PBWY+0uxXuNvOACQfdaXZl5W55pKPLSDv0X7nNCZM7h6cZ P4q4wKltYmUrnibLvzt5QwoJFlyYwHgc8WPGmqnh6ulXuzxVXtPU6uJdjAh0BMBhaDCl PX/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Hgq7e1/NKd5FJQDiWlDOoRnh3f92YL4vi/h4IjW0IVw=; b=BNfPIQ99tN73ZrYN17PQEIfFMyPRqq60A3Mr8mQUWuMeEL+tPfUgVpiQ7YRJCxKKqY CCPu+I8rRNMkfKEXe2bK43b4MtDIgf1xFkCzYRVamioMtUFWhSZJa0Qpz3fchaD7+fp+ q06pg5bVhrGvbsACZkSG4I8Db6O6b7woSi1ohnJ3H/cTU3dMKU2xqWXMhueQB4VL1yQM qiNX65CuIJA2hTSPKB5mWE9hp4Xa6A0xlv00tqAKZgV5MAnvDkTyALerZDzind953cTz zaGchxxPiHvhkcIcwv990r8+hRcCXWfsu5BRPdeemQsj2kvNOMSdsKnrwfLr+GGALvMS +o5w== X-Gm-Message-State: AOAM533h4f9Wof0Izvwb/+wTzwAfKDBbmZ5Zcy99F9UyeMwzNJt6+D64 LFU5z+JdUEV12qR+nOzutE68ZA== X-Google-Smtp-Source: ABdhPJwHnZWg86VmGa37wnfX+mmWrAGASrQGMMG3zMqWAyInSebvCUxqS1STwVmCjU9tj8dbZ58UMg== X-Received: by 2002:a62:bd19:0:b029:2db:9bd7:edf0 with SMTP id a25-20020a62bd190000b02902db9bd7edf0mr7681803pff.40.1622276213394; Sat, 29 May 2021 01:16:53 -0700 (PDT) From: houdek.ryan@fex-emu.org X-Google-Original-From: Houdek.Ryan@fex-emu.org Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Ryan Houdek Subject: [PATCH 2/4] arm64: Track the sigreturn landing pad location Date: Sat, 29 May 2021 01:16:18 -0700 Message-Id: <20210529081620.164422-3-Houdek.Ryan@fex-emu.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210529081620.164422-1-Houdek.Ryan@fex-emu.org> References: <20210529081620.164422-1-Houdek.Ryan@fex-emu.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable To: unlisted-recipients:; (no To-header on input) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Ryan Houdek This will be required once userspace dispatch is implemented Signed-off-by: Ryan Houdek --- arch/arm64/kernel/vdso/sigreturn.S | 1 + arch/arm64/kernel/vdso/vdso.lds.S | 1 + 2 files changed, 2 insertions(+) diff --git a/arch/arm64/kernel/vdso/sigreturn.S b/arch/arm64/kernel/vdso/si= greturn.S index 0e18729abc3b..44ed8c5486d0 100644 --- a/arch/arm64/kernel/vdso/sigreturn.S +++ b/arch/arm64/kernel/vdso/sigreturn.S @@ -73,6 +73,7 @@ SYM_CODE_START(__kernel_rt_sigreturn) mov x8, #__NR_rt_sigreturn // PLEASE DO NOT MODIFY svc #0 +SYM_INNER_LABEL(__kernel_vdso_sigreturn_landing_pad, SYM_L_GLOBAL) // PLEASE DO NOT MODIFY // .cfi_endproc SYM_CODE_END(__kernel_rt_sigreturn) diff --git a/arch/arm64/kernel/vdso/vdso.lds.S b/arch/arm64/kernel/vdso/vds= o.lds.S index a5e61e09ea92..65d2bd880e2f 100644 --- a/arch/arm64/kernel/vdso/vdso.lds.S +++ b/arch/arm64/kernel/vdso/vdso.lds.S @@ -91,3 +91,4 @@ VERSION * Make the sigreturn code visible to the kernel. */ VDSO_sigtramp =3D __kernel_rt_sigreturn; +VDSO_vdso_sigreturn_landing_pad =3D __kernel_vdso_sigreturn_landing_pad; --=20 2.30.2 From nobody Sat May 11 08:51:27 2024 Delivered-To: importer2@patchew.org Received-SPF: pass (zohomail.com: domain of vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; envelope-from=linux-kernel-owner@vger.kernel.org; helo=vger.kernel.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org ARC-Seal: i=1; a=rsa-sha256; t=1622276226; cv=none; d=zohomail.com; s=zohoarc; b=AugRfjgPdTBwEBhcVM0Tpu20HDkhS+LtAJtyUUxC0xH313bZAHR2X34gMSi54u55oyk8/nns+qMJyWFO/QtCkA6iYm2MLY3zKt36ysDOAsiUHD5e9yRCxLh+BsojgoehjDJjdE0EoHeR9v7+mfhHQO0OEwq8jKtBtAxJkXBi5kw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1622276226; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:MIME-Version:Message-ID:References:Subject:To; bh=64Ppw+8eZr45mQzRPA9wYcPQX7DF6Dz0wSFq/bdSzpE=; b=fEdUdceRTFjYgto4zVQASo0c9HH8I3Sak22x1VkWOLDRgpVooAEjx0lgHLXmB2Mb5bbxZYXlFUEgVW1XWeOBUHbOzqufzkq2YAykETCPl3R/h3JKv6M6zBayXJKW9dkULzabwlZUULv7BwhGFyI5fkLQA3AfHJ97OAFgRfbal9o= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mx.zohomail.com with SMTP id 1622276226730919.7254921003873; Sat, 29 May 2021 01:17:06 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229831AbhE2ISg (ORCPT ); Sat, 29 May 2021 04:18:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40392 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229799AbhE2ISa (ORCPT ); Sat, 29 May 2021 04:18:30 -0400 Received: from mail-pf1-x42e.google.com (mail-pf1-x42e.google.com [IPv6:2607:f8b0:4864:20::42e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 74F9AC06174A for ; Sat, 29 May 2021 01:16:54 -0700 (PDT) Received: by mail-pf1-x42e.google.com with SMTP id f22so5058628pfn.0 for ; Sat, 29 May 2021 01:16:54 -0700 (PDT) Received: from localhost.localdomain (76-242-91-105.lightspeed.sntcca.sbcglobal.net. [76.242.91.105]) by smtp.gmail.com with ESMTPSA id b12sm6613960pgs.52.2021.05.29.01.16.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 29 May 2021 01:16:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fex-emu.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=64Ppw+8eZr45mQzRPA9wYcPQX7DF6Dz0wSFq/bdSzpE=; b=e7S4yq13r4Jwerr2tCohAEOYlKqRdhP/fAr776R10rw/1Zfc9s1eamLPrxXiAV3t+A TR++7c4Uu/I6mWy6oWYo/+fovw/iGAcVkU0N5dvHZ2FCqc+4h39l1GRfJ2Fs5N4Ulljt alxvecf3u1uvMJdTs5gRmal3gKYDl9RFn0mJXxwP6UMIrqQZRG7OhDUBl+2SsFdB+G91 ZVH9YkO9LOLVqJegs8bVG0zPuvfgR9nOMx7BPDiJN65LVft0QNT1ioeAXT9/8nd9ybxi Tl6TO1XMG6InoDAPbtqUHqklIB/lwei0H3dexPhaVqFThGUT8o5Rr8ikH5ei3kwkgXPi +u6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=64Ppw+8eZr45mQzRPA9wYcPQX7DF6Dz0wSFq/bdSzpE=; b=gMNRmWBPZTCemPgeLRToAp53cmEkrc+OAfbkZqIKiJwF/9G1nb/kpzFt8gEcBS+WAW tUEzKAy8V417dT658n5fdlcV+XgQ971R3lGNluzYq/z4BBBaZolbOmUzAzctGO3DkDY2 /k30IjU35BbE/nwqn9FEb/bOhpMoQmKv11/6tfN7ooauUdaYHkJIS9ASvzZdXCuRayoE T3qiotd1BEZBafRvDpbFI2y7ZShOTEQY1ICUjubEDRjO+69vcoNYJUzzFTG2/nc6cuS0 qPFAIwo2dZUukL9IaLtbtzu46TvD7+lQ4qyIx5DSo32W04dFwHG0Kh77aoKbgSlUR97t HFUQ== X-Gm-Message-State: AOAM531TMNYk/5Ou+356OQ1UgtTtp3oMbGgylA3bKaw0oTRGYfSu3BIu G5zspQs76eFLz76CSZZDnHLMUhp2fI3DgsXY X-Google-Smtp-Source: ABdhPJwhDMnKUowMWXMtS3G0p7CW15qs4CgC7ZIj6ZCZTTEXvqNiSnMW3Izk7Ii80iKkpiGSt7XB8A== X-Received: by 2002:a62:3106:0:b029:25c:cd66:3be1 with SMTP id x6-20020a6231060000b029025ccd663be1mr7632405pfx.29.1622276214039; Sat, 29 May 2021 01:16:54 -0700 (PDT) From: houdek.ryan@fex-emu.org X-Google-Original-From: Houdek.Ryan@fex-emu.org Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Ryan Houdek Subject: [PATCH 3/4] arm64: Enable userspace syscall dispatch Date: Sat, 29 May 2021 01:16:19 -0700 Message-Id: <20210529081620.164422-4-Houdek.Ryan@fex-emu.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210529081620.164422-1-Houdek.Ryan@fex-emu.org> References: <20210529081620.164422-1-Houdek.Ryan@fex-emu.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable To: unlisted-recipients:; (no To-header on input) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Ryan Houdek When `PR_SET_SYSCALL_USER_DISPATCH` is used this will set the thread's flags to enable `TIF_SYSCALL_USER_DISPATCH`. This allows us to support userspace dispatch of syscalls through SIGSYS. This has feature parity with what is available on x86-64 Signed-off-by: Ryan Houdek --- arch/arm64/Kconfig | 1 + arch/arm64/include/asm/syscall.h | 2 ++ arch/arm64/include/asm/thread_info.h | 4 +++- arch/arm64/kernel/ptrace.c | 24 ++++++++++++++++++++++++ arch/arm64/kernel/syscall.c | 9 +++++++++ 5 files changed, 39 insertions(+), 1 deletion(-) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 9f1d8566bbf9..8c5f2d1c7053 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -220,6 +220,7 @@ config ARM64 select SYSCTL_EXCEPTION_TRACE select THREAD_INFO_IN_TASK select HAVE_ARCH_USERFAULTFD_MINOR if USERFAULTFD + select SYSCALL_USER_DISPATCH help ARM 64-bit (AArch64) Linux support. =20 diff --git a/arch/arm64/include/asm/syscall.h b/arch/arm64/include/asm/sysc= all.h index cfc0672013f6..8f6417822139 100644 --- a/arch/arm64/include/asm/syscall.h +++ b/arch/arm64/include/asm/syscall.h @@ -94,4 +94,6 @@ static inline int syscall_get_arch(struct task_struct *ta= sk) return AUDIT_ARCH_AARCH64; } =20 +extern bool arch_syscall_is_vdso_sigreturn(struct pt_regs *regs); + #endif /* __ASM_SYSCALL_H */ diff --git a/arch/arm64/include/asm/thread_info.h b/arch/arm64/include/asm/= thread_info.h index 6623c99f0984..7b9c6225c3c7 100644 --- a/arch/arm64/include/asm/thread_info.h +++ b/arch/arm64/include/asm/thread_info.h @@ -81,6 +81,7 @@ int arch_dup_task_struct(struct task_struct *dst, #define TIF_SVE_VL_INHERIT 24 /* Inherit sve_vl_onexec across exec */ #define TIF_SSBD 25 /* Wants SSB mitigation */ #define TIF_TAGGED_ADDR 26 /* Allow tagged user addresses */ +#define TIF_SYSCALL_USER_DISPATCH 27 /* Allow userspace syscall dispatch */ =20 #define _TIF_SIGPENDING (1 << TIF_SIGPENDING) #define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED) @@ -97,6 +98,7 @@ int arch_dup_task_struct(struct task_struct *dst, #define _TIF_SVE (1 << TIF_SVE) #define _TIF_MTE_ASYNC_FAULT (1 << TIF_MTE_ASYNC_FAULT) #define _TIF_NOTIFY_SIGNAL (1 << TIF_NOTIFY_SIGNAL) +#define _TIF_SYSCALL_USER_DISPATCH (1 << TIF_SYSCALL_USER_DISPATCH) =20 #define _TIF_WORK_MASK (_TIF_NEED_RESCHED | _TIF_SIGPENDING | \ _TIF_NOTIFY_RESUME | _TIF_FOREIGN_FPSTATE | \ @@ -105,7 +107,7 @@ int arch_dup_task_struct(struct task_struct *dst, =20 #define _TIF_SYSCALL_WORK (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | \ _TIF_SYSCALL_TRACEPOINT | _TIF_SECCOMP | \ - _TIF_SYSCALL_EMU) + _TIF_SYSCALL_EMU | _TIF_SYSCALL_USER_DISPATCH) =20 #ifdef CONFIG_SHADOW_CALL_STACK #define INIT_SCS \ diff --git a/arch/arm64/kernel/ptrace.c b/arch/arm64/kernel/ptrace.c index eb2f73939b7b..ddff7d916592 100644 --- a/arch/arm64/kernel/ptrace.c +++ b/arch/arm64/kernel/ptrace.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -1836,6 +1837,16 @@ int syscall_trace_enter(struct pt_regs *regs) { unsigned long flags =3D READ_ONCE(current_thread_info()->flags); =20 + /* + * Handle Syscall User Dispatch. This must comes first, since + * the ABI here can be something that doesn't make sense for + * other syscall_work features. + */ + if (flags & _TIF_SYSCALL_USER_DISPATCH) { + if (syscall_user_dispatch(regs)) + return NO_SYSCALL; + } + if (flags & (_TIF_SYSCALL_EMU | _TIF_SYSCALL_TRACE)) { tracehook_report_syscall(regs, PTRACE_SYSCALL_ENTER); if (flags & _TIF_SYSCALL_EMU) @@ -1859,6 +1870,19 @@ void syscall_trace_exit(struct pt_regs *regs) { unsigned long flags =3D READ_ONCE(current_thread_info()->flags); =20 + /* + * If the syscall was rolled back due to syscall user dispatching, + * then the tracers below are not invoked for the same reason as + * the entry side was not invoked in syscall_trace_enter(): The ABI + * of these syscalls is unknown. + */ + if (flags & _TIF_SYSCALL_USER_DISPATCH) { + if (unlikely(current->syscall_dispatch.on_dispatch)) { + current->syscall_dispatch.on_dispatch =3D false; + return; + } + } + audit_syscall_exit(regs); =20 if (flags & _TIF_SYSCALL_TRACEPOINT) diff --git a/arch/arm64/kernel/syscall.c b/arch/arm64/kernel/syscall.c index 263d6c1a525f..2630cffe5725 100644 --- a/arch/arm64/kernel/syscall.c +++ b/arch/arm64/kernel/syscall.c @@ -15,6 +15,7 @@ #include #include #include +#include =20 long compat_arm_syscall(struct pt_regs *regs, int scno); long sys_ni_syscall(void); @@ -191,3 +192,11 @@ void do_el0_svc_compat(struct pt_regs *regs) compat_sys_call_table); } #endif + +bool arch_syscall_is_vdso_sigreturn(struct pt_regs *regs) +{ + if (regs->pc =3D=3D (unsigned long)VDSO_SYMBOL(current->mm->context.vdso, + vdso_sigreturn_landing_pad)) + return true; + return false; +} --=20 2.30.2 From nobody Sat May 11 08:51:28 2024 Delivered-To: importer2@patchew.org Received-SPF: pass (zohomail.com: domain of vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; envelope-from=linux-kernel-owner@vger.kernel.org; helo=vger.kernel.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org ARC-Seal: i=1; a=rsa-sha256; t=1622276227; cv=none; d=zohomail.com; s=zohoarc; b=VWuSbJgLOEcvvaMScwV2eB3dFz+rQngkZFIdDKcT8XD/OnOX5sMKVpx6PMPEqoGkvs6ry5vMlDi4IzNZ/1jamGuHcrCLxQuKOyz+OClqLkC2kngBUQ1KWw9JxFkNivRU/MeR/PWPrhl61awRpmKPIG1mYXQ2RQ2R/G15PATDZQI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1622276227; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:MIME-Version:Message-ID:References:Subject:To; bh=Y8so5JgsWBpl7r6OCPXx44TGNibG9hAFt0VH6FSUTak=; b=j18NLscY9kRn09ksyW5oNuIgUyLhQaxH7x+M+BLTacWPxz0jh1ynARm5/fOwsuknMPd7YvSjgTAbU5c9bTShYZcxqk6hy8cuJF95aD/2LKUdhYophh6+Fw9hviK4UCEeUR7dxGM2jHg+gzujyff7ZNlCQ1etd7J08ZJhYNiBTGg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mx.zohomail.com with SMTP id 1622276227085664.2293924258382; Sat, 29 May 2021 01:17:07 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229848AbhE2ISi (ORCPT ); Sat, 29 May 2021 04:18:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40398 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229800AbhE2ISb (ORCPT ); Sat, 29 May 2021 04:18:31 -0400 Received: from mail-pf1-x433.google.com (mail-pf1-x433.google.com [IPv6:2607:f8b0:4864:20::433]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2BBEFC061574 for ; Sat, 29 May 2021 01:16:55 -0700 (PDT) Received: by mail-pf1-x433.google.com with SMTP id x18so5002562pfi.9 for ; Sat, 29 May 2021 01:16:55 -0700 (PDT) Received: from localhost.localdomain (76-242-91-105.lightspeed.sntcca.sbcglobal.net. [76.242.91.105]) by smtp.gmail.com with ESMTPSA id b12sm6613960pgs.52.2021.05.29.01.16.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 29 May 2021 01:16:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fex-emu.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Y8so5JgsWBpl7r6OCPXx44TGNibG9hAFt0VH6FSUTak=; b=RPgwtKT7YgranCz1O7JfEayBmawWEdAosfDr5dg2UCXM3mHcGZb/evMDTHslbZj6Jx TQ9Bd7nlxrpVuRBG4qkk0B0KitmGsti/B8b5XuTmzHaSVXkpAhi0N9X8vZHaJUVINoD6 5frSdimeaWQECknMTqHgRUY4i9BSLI2qzBlemI/2LFMsDAIAlcZqk5cOLpWMbbVpyWqo U84ko2HU9TiRmzmGvnzhhCrp+/5EmqQaYkgyXI81bh4agtZVfW/cCnP0pSmsfknmH1qI 6slyTbdND3xbWKMW56tZjuQLYFf5wEdfLhfSgwh53Lxo43V+5hpWuK9HGucYxiiCnN0b 838g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Y8so5JgsWBpl7r6OCPXx44TGNibG9hAFt0VH6FSUTak=; b=CmsVXu5WrwO171236Lb/+INicJMQm0yPnukhJXns9ofOMQvtJu3IdHVe0PMkce2i3H UmSO57IMPpSO5frwobtU5rPvmGtXlptUZx2KDG7PQ1LDlMFRfvVj7FFAHFL5Oy9P1XwP ckKXaPU0eddB8lkugmZrmxewSl9gvlzHwLeFTrb+wJK97IindwHBYlm+y7V/rUY+O8yh Vlditf+VSujXB1BxaVgw2qpPvEtlzRjXJahFm0IlJ83l1W+TILVCopzh2oraGQ222x5/ ttcrF8egmh0Qzx6eCfqxSHtlPE+5xcjrovsatfPzeFjTEM4jr/UNBfUcXf3atigk5rq0 jcKg== X-Gm-Message-State: AOAM532d0CVOcW/6SypEdin9SxqJ0D4w/bUcmL07E8Tgl5TGmWoezBj+ D/HS4Hi0YjWyAHgj8DpmZakxUA== X-Google-Smtp-Source: ABdhPJzn+MX6kRCVqpnQVq4mBAvNxH51Xual9OywVkFMp37IMBUO31aOH8woriYCPQIB2DHSyUNlBQ== X-Received: by 2002:aa7:84c7:0:b029:2e9:2d18:54a5 with SMTP id x7-20020aa784c70000b02902e92d1854a5mr7637289pfn.44.1622276214755; Sat, 29 May 2021 01:16:54 -0700 (PDT) From: houdek.ryan@fex-emu.org X-Google-Original-From: Houdek.Ryan@fex-emu.org Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Ryan Houdek Subject: [PATCH 4/4] arm64: tools: Update syscall user dispatch tests Date: Sat, 29 May 2021 01:16:20 -0700 Message-Id: <20210529081620.164422-5-Houdek.Ryan@fex-emu.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210529081620.164422-1-Houdek.Ryan@fex-emu.org> References: <20210529081620.164422-1-Houdek.Ryan@fex-emu.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable To: unlisted-recipients:; (no To-header on input) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Ryan Houdek This is a fairly trivial change to support syscall user dispatch in these selftests. One of the tests is relying on the syscall to return the syscall number in the return. Which is a byproduct from the scnum and return registers being the same. Since arm64 places the scnum in x8 and the return in x0 it just needs to move the result over. Signed-off-by: Ryan Houdek --- .../selftests/syscall_user_dispatch/sud_benchmark.c | 2 +- tools/testing/selftests/syscall_user_dispatch/sud_test.c | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/syscall_user_dispatch/sud_benchmark.c = b/tools/testing/selftests/syscall_user_dispatch/sud_benchmark.c index 073a03702ff5..6059abe75cb3 100644 --- a/tools/testing/selftests/syscall_user_dispatch/sud_benchmark.c +++ b/tools/testing/selftests/syscall_user_dispatch/sud_benchmark.c @@ -41,7 +41,7 @@ * out of the box, but don't enable them until they support syscall user * dispatch. */ -#if defined(__x86_64__) || defined(__i386__) +#if defined(__x86_64__) || defined(__i386__) || defined(__aarch64__) #define TEST_BLOCKED_RETURN #endif =20 diff --git a/tools/testing/selftests/syscall_user_dispatch/sud_test.c b/too= ls/testing/selftests/syscall_user_dispatch/sud_test.c index b5d592d4099e..11cf4ad6aa6e 100644 --- a/tools/testing/selftests/syscall_user_dispatch/sud_test.c +++ b/tools/testing/selftests/syscall_user_dispatch/sud_test.c @@ -150,6 +150,15 @@ int si_errno; =20 static void handle_sigsys(int sig, siginfo_t *info, void *ucontext) { +#ifdef __aarch64__ + /* This test expects the syscall number will be returned in r0 + * Copy it over from r8 which is the scnum in the ABI + */ + ucontext_t *_context =3D (ucontext_t *)ucontext; + + _context->uc_mcontext.regs[0] =3D _context->uc_mcontext.regs[8]; +#endif + si_code =3D info->si_code; si_errno =3D info->si_errno; =20 --=20 2.30.2