From nobody Thu Oct 22 17:31:48 2026 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 4j9Y9d1FH4z6xP8N for ; Thu, 22 Oct 2026 17:31:49 +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) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4j9Y9c6Zkcz3GRp for ; Thu, 22 Oct 2026 17:31:48 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1792690308; h=from:from: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; bh=lk5XOn4Su7sTyFeuHvNvkLydw6saXCohJLu4XYaG3n4=; b=jiUR+gkCb0r+h+ULLyWoRztifKbl3DeoCdyK9Z+IDU+HBMRtIwUhvNvMoN4Y6OwHT/+Z1i vNhMmntT4rNZQpVQBeIRtvzPs8bLbRX8eJSuAzOvz8wPthBes8G5+DQiKanXAfclOqLj5J o4ZI3lsRNzGV8zxzB+VN2Omc5oj7YIwO/31Mc5d3t1JUANYMPJaTew8dM5wNq/I5qLzVFQ YKD0GaWoN/f0+ez9bhHoNSm9EWFzWYlia2Alp2fUNPc/q8+WCJd9pLgZtHbs7AX7HYOfdj hKTtqlpMrUnZ6Xq7hmyYRdI963X1qjawGh1HMaqIaRwgft7FH+cgukywHpt7mQ== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1792690308; b=JoYeZSV5gAxwjAi1fcu+hC87nVc8E5IEMhu1RNHbfqIZGrObU8Tic1NqKOEbQi2VfeoM/J ZEjomD3FCj2JEjix2+5hyZOzMidyeeNVkhiSvKlNkXzBJ4AMONV47kv66X2YkLiMKMAygN ikbN4wVBaXgGHzCEKwTBYJ8OZ6Qk07sjAkLQcrtIqMVtSsFV1avmpIVD9BTDhdcSQPuny6 9TwTJbpYIeRtl1taUe/zhwNRzk7cpU/O7XQSV5INkG00l1yo+ol4L0wyVJo9MvOvWJfjIv V6aE1cGIZs/w5QalAo79EyVOjy8vYkQHBGvLfdMoYrs0SWKOB/uG/mKs8nmEww== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1792690308; h=from:from: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; bh=lk5XOn4Su7sTyFeuHvNvkLydw6saXCohJLu4XYaG3n4=; b=BAoGDEuqanv9+oe/KxSV6XNVX68o3n9LqroPwtMmkCHYAkhMT3JIb3dAaaTnDbLNOpu1yZ cJ9znh6UeuwA9QoyZeUCgUhWtzp/BKRJStGQAECOuJlFhRWOOH/O6HEYbEKRpwABUMiaAu FEHnrrl0ypzbOrIyry9SwcUeMwt7v8XhQOl8uVCOdQZReM6Wsq6UB2J0acLz+nWEitsbJY thz1zC0E9DndgsvrVDoLnOGEguZdkhTqcGgGJuzL6GugrkiSVG7kDY7phwDtzIeWx92QtK Gl+T/di8/r88eWY5DlPAOoBHtGY89TafArJMF99IPPpAfQHI8CJMX6hBsSwgDQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4j9Y9c6CwQzrvG for ; Thu, 22 Oct 2026 17:31:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3e583 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 22 Oct 2026 17:31:48 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Benjamin Jacobs From: Mark Johnston Subject: git: 4c5ad114a412 - stable/15 - sys/arm: Fix DTrace trap hook List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: Commit messages for all branches of the src repository List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list 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/15 X-Git-Reftype: branch X-Git-Commit: 4c5ad114a412804ab7a93e0fd6205ba533c8a858 Auto-Submitted: auto-generated Date: Thu, 22 Oct 2026 17:31:48 +0000 Message-Id: <6ada4884.3e583.5bb4f4d7@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=4c5ad114a412804ab7a93e0fd6205ba533c8a858 commit 4c5ad114a412804ab7a93e0fd6205ba533c8a858 Author: Benjamin Jacobs AuthorDate: 2026-09-03 13:52:19 +0000 Commit: Mark Johnston CommitDate: 2026-10-22 15:45:40 +0000 sys/arm: Fix DTrace trap hook Move the dtrace_trap hook at the start of the abort handler to exit early when a trap is handled by DTrace. Fix the type argument to be the actual fault type instead of the value of the FAR. The latter will need to be added to the trapframe, until then DTrace will report unmapped addresses as the null address. Correct the comment of the PUSHFRAMEINSVC assembler macro to reflect that coming from SVC32 mode is expected for DTrace traps. PR: 298064 MFC after: 1 month Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D59279 (cherry picked from commit 3e6bc5c3b5632ac9f55633b7d4e2e1a42b96a78b) --- sys/arm/arm/exception.S | 6 +++--- sys/arm/arm/trap-v6.c | 15 ++++++++------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/sys/arm/arm/exception.S b/sys/arm/arm/exception.S index 2c25628f77cc..9df8e029385c 100644 --- a/sys/arm/arm/exception.S +++ b/sys/arm/arm/exception.S @@ -106,9 +106,9 @@ _C_LABEL(dtrace_invop_jump_addr): /* * PUSHFRAMEINSVC - macro to push a trap frame on the stack in SVC32 mode * This should only be used if the processor is not currently in SVC32 - * mode. The processor mode is switched to SVC mode and the trap frame is - * stored. The SVC lr field is used to store the previous value of - * lr in SVC mode. + * mode, except for data abort generated and handled by DTrace. + * The processor mode is switched to SVC mode and the trap frame is stored. + * The SVC lr field is used to store the previous value of lr in SVC mode. */ #define PUSHFRAMEINSVC \ stmdb sp, {r0-r3}; /* Save 4 registers */ \ diff --git a/sys/arm/arm/trap-v6.c b/sys/arm/arm/trap-v6.c index be7a10bb1f0a..60d716603f3f 100644 --- a/sys/arm/arm/trap-v6.c +++ b/sys/arm/arm/trap-v6.c @@ -328,6 +328,14 @@ abort_handler(struct trapframe *tf, int prefetch) return; } +#ifdef KDTRACE_HOOKS + if (!usermode) { + if (dtrace_trap_func != NULL && (*dtrace_trap_func)(tf, idx)) { + return; + } + } +#endif + /* * ARM has a set of unprivileged load and store instructions * (LDRT/LDRBT/STRT/STRBT ...) which are supposed to be used in other @@ -550,13 +558,6 @@ abort_fatal(struct trapframe *tf, u_int idx, u_int fsr, u_int far, #endif usermode = TRAPF_USERMODE(tf); -#ifdef KDTRACE_HOOKS - if (!usermode) { - if (dtrace_trap_func != NULL && (*dtrace_trap_func)(tf, far)) - return (0); - } -#endif - mode = usermode ? "user" : "kernel"; rw_mode = fsr & FSR_WNR ? "write" : "read"; disable_interrupts(PSR_I);