From nobody Tue Mar 15 16:26:42 2022 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id E6B4D1A27F4E; Tue, 15 Mar 2022 16:26:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4KHzLq0nG9z4lvn; Tue, 15 Mar 2022 16:26:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1647361603; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+hlDgAXyN9ZdFojHLCIe6Nti+LKISkQBo69ayAyBtQY=; b=k0Aqff1a9Lzjf0tCbsfetz6KcYvM8hGLrcT2IuMjm9Cc/EBS0O0GezWbmetxHVkJdM3fAd M7RXQnhg6Col2WmBiNSQYLdbK4lZrszABJCcIHPwFYgnR+bxe0FskuSHhUIBWkqdjFDJGX B3d+54M2j2EDQMe5AinNoxmyiGAkq7v8S/6Ce8Z0phfVC/lJWF6viqwjyOGS6Iab84QIRB yMAGjLunTIA44PcjoZDfhNVZAKnGksEnuBRWPp6cYte8lW0T7tsXToTXDwzhnltT2Do32x HAAbnGB79BW4YoAGV+cCCTJr7dbRlu4y3fyA4bDjQG0MRjWwJRb4YTs8igjq1w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E7210250B1; Tue, 15 Mar 2022 16:26:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 22FGQgEw024866; Tue, 15 Mar 2022 16:26:42 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 22FGQgM0024865; Tue, 15 Mar 2022 16:26:42 GMT (envelope-from git) Date: Tue, 15 Mar 2022 16:26:42 GMT Message-Id: <202203151626.22FGQgM0024865@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: c04e4ff6168a - stable/13 - fasttrap: Avoid creating WX mappings List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: c04e4ff6168a419de1d11a7b4335d9874370b60c Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1647361603; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+hlDgAXyN9ZdFojHLCIe6Nti+LKISkQBo69ayAyBtQY=; b=k6EuuxCmKWTjcsWiPE6AcMOTp2LTjVRK26asSSJTkcMvOZ0yWqTfjwfs5Xa0Goa5JJDSev Czji2OPjuMRvmz0gDqlH7MEHL9Q4cf+Y9776VxexZGeiqQgNUXu5SEyEF5ToEUcLhhfvg6 hX8O86jGJNTHWahgZrnGzWF5NYBib5CtA4NryLGz3N32m0SWj6WnmgyV9+Ireco761MGyZ yPal9onbPoeetnUUfCIMQP6QRWx6liklKbVveeUljv0uw/mwXtpEYnCXt+qXyDtg63ojxV vm7n2ZHEoyGD+vfEjt0UEDTLZ/shnc0uW7X5OCOd2K7f8p6PzAzv2xvnxZGyKg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1647361603; a=rsa-sha256; cv=none; b=lU7GtZehvrLeljk3o8tcsmB4HTsGo6RH9QhAnoYRBm9H61YYVX/5HSsq77FRBthEkc2yM8 GfiEBzUfF5CTU5xOBKg3qRd5woj0KDoGGebdWNh6/rABzGO6xBxUZ4Gd4Qjfg5ziKHlQmL BYWTrQcUEPy3A/sWlkMk5WSn07DPLRkFC4Q4+6a6DfY4O7P3aiUTuwV6T7Aus5cMsyT86l P+fuwWbmIaRN+iKbWWE6EYA0WXgZerK6SbR0oFmNRfRmyZxTXwky5aYk5meDUOlJQOdQD4 0Mp4k35qXq1CeXXNg8noygdu5sl4KWmgv5stx1aUDbPJHVzAYxK0Z+IEHlD/1Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=c04e4ff6168a419de1d11a7b4335d9874370b60c commit c04e4ff6168a419de1d11a7b4335d9874370b60c Author: Mark Johnston AuthorDate: 2022-03-01 16:53:42 +0000 Commit: Mark Johnston CommitDate: 2022-03-15 15:40:47 +0000 fasttrap: Avoid creating WX mappings fasttrap instruments certain instructions by overwriting them and copying the original instruction to some per-thread scratch space which is executed after the probe fires. This trampoline jumps back to the tracepoint after executing the original instruction. The created mapping has both write and execute permissions, and so this mechanism doesn't work when allow_wx is disabled. Work around the restriction by using proc_rwmem() to write to the trampoline. Reviewed by: vangyzen Tested by: Amit Sponsored by: The FreeBSD Foundation (cherry picked from commit 3a56cfedbc701f8026d38c0d808c614c9f0572ae) --- sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c | 5 +++-- sys/cddl/contrib/opensolaris/uts/intel/dtrace/fasttrap_isa.c | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c b/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c index d96d3f44182e..04ef3ecc3e8d 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c +++ b/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c @@ -336,8 +336,9 @@ fasttrap_scraddr(struct thread *td, fasttrap_proc_t *fprc) */ addr = 0; error = vm_map_find(&p->p_vmspace->vm_map, NULL, 0, &addr, - FASTTRAP_SCRBLOCK_SIZE, 0, VMFS_ANY_SPACE, VM_PROT_ALL, - VM_PROT_ALL, 0); + FASTTRAP_SCRBLOCK_SIZE, 0, VMFS_ANY_SPACE, + VM_PROT_READ | VM_PROT_EXECUTE, + VM_PROT_READ | VM_PROT_EXECUTE, MAP_COPY_ON_WRITE); if (error != KERN_SUCCESS) goto done; diff --git a/sys/cddl/contrib/opensolaris/uts/intel/dtrace/fasttrap_isa.c b/sys/cddl/contrib/opensolaris/uts/intel/dtrace/fasttrap_isa.c index 502273b73157..163a8fdd13fa 100644 --- a/sys/cddl/contrib/opensolaris/uts/intel/dtrace/fasttrap_isa.c +++ b/sys/cddl/contrib/opensolaris/uts/intel/dtrace/fasttrap_isa.c @@ -1666,7 +1666,7 @@ fasttrap_pid_probe(struct trapframe *tf) ASSERT(i <= sizeof (scratch)); - if (fasttrap_copyout(scratch, (char *)addr, i)) { + if (uwrite(curproc, scratch, i, addr) != 0) { fasttrap_sigtrap(p, curthread, pc); new_pc = pc; break;