From nobody Tue Jun 3 04:07:40 2025 X-Original-To: dev-commits-src-main@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 4bBHHK1LqKz5xxyt; Tue, 03 Jun 2025 04:07:41 +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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bBHHJ3pjGz3hcV; Tue, 03 Jun 2025 04:07:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1748923660; 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=kdSkXi5N0fh83HRrRzlAuSj9NGVu8NX3BfZvxHSSKl4=; b=daMZfILuBWKalJPd9Bf811N6G+r2wlFUMFzhJTLkPiSQW1BlYyS0MLfV4ZVu0C094IIcLL gkUwClVGRbMWch5DOS9gLeiodDUVxB8T725SnenDPl14KAvto5whgP19ZxnWguZtWlB2ow LLONKMkyQF9C+PnvW9DROShDhifn1gV2uCl482yBQkSwOwZKkrNjE9nLFALIOBwx4B7IOd Plck1bMPxDrWvLry3wmbjWaldae976jRn2ggiRQqAUkpqSy9RgYa9yGM0yN+VS0cwjXwjz LkPfVdZAWyyyCH9Z1LvmqiqyxbtH5RMYsGVFngv5QKxAmm/EFPa5gZ7j1DgHpA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1748923660; 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=kdSkXi5N0fh83HRrRzlAuSj9NGVu8NX3BfZvxHSSKl4=; b=slRJnuozhc29AanTdrr3S2uRr0raZNVdMalWWt8+cujfpDl442YF0VEaoC/UYf2N5CSyS4 bcK7F7SsXp+RbDlScahBfmdEeKwB6HQ0zLPVUqHxQUAnd/PV15T7tHRLkx2tg5IhKqhT2U Ct88ESSCI0IeOhmyToWXLmOHzhy2WPKno7FwwN/Iexvpf2LCNqBh8D2lTQ8gmHov7t/1Nh UHGfJrhCI+jnnMcR1doEjxJzVe9LgJwkLQcNO7O5UUbGWqUEQUImPv7guERqhy5otYpRFp q+DOv0jxGlPEkSh/f91bGxJxNaM+hu3sq/rwBzWtUa2k2LRjhFffp9L27SaU8w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1748923660; a=rsa-sha256; cv=none; b=aimzpTieDgNbQZ80Uc/r+nvB6XuMTU/dSQ19toP40b5MR4CBDKwamAGaAWp0fYzoYWaOsh 7JuMJwDYYCyb9Rx5G2ogWQ/NkUqBu4AM3Mc0/vYTvfgGkANBRHv/67ZvW/n2RxNtD+Mt72 UWxFr3dHv6BEI+xz9K+9mFnGlY9uY3xepGvMz4sbPQ8jg2LdPoCq0P0VMVgPKnonV++Xj+ zZaPMGyS1ZfTYp1aeIR0V5ElPX1zJ1z+0QfhL8wfYD+UvRoTmvjQkzn0AzGv9lVUM5CFpO MrRZMmysxenWv5x5GN8YrfbiBfFroB14BaoeqVZ8qcOVuJV8y9gCFlzSMZLqZw== 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 4bBHHJ3MbFz7C1; Tue, 03 Jun 2025 04:07:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 55347ewc071208; Tue, 3 Jun 2025 04:07:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 55347esq071205; Tue, 3 Jun 2025 04:07:40 GMT (envelope-from git) Date: Tue, 3 Jun 2025 04:07:40 GMT Message-Id: <202506030407.55347esq071205@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: 6d43260d49e6 - main - ktrace: generate events on extended errors List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 6d43260d49e6af7de43a0a3181178d7a3ee20613 Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=6d43260d49e6af7de43a0a3181178d7a3ee20613 commit 6d43260d49e6af7de43a0a3181178d7a3ee20613 Author: Konstantin Belousov AuthorDate: 2025-05-31 21:42:49 +0000 Commit: Konstantin Belousov CommitDate: 2025-06-03 02:47:38 +0000 ktrace: generate events on extended errors The ktrexterr() function is provided unconditionally, to mitigate the issue of missed include of "opt_ktrace.h" before using exterrvar.h otherwise. Reviewed by: brooks Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D50633 --- sys/kern/kern_ktrace.c | 29 +++++++++++++++++++++++++++++ sys/sys/exterrvar.h | 2 ++ 2 files changed, 31 insertions(+) diff --git a/sys/kern/kern_ktrace.c b/sys/kern/kern_ktrace.c index 973f19d1d060..96ab5c26973f 100644 --- a/sys/kern/kern_ktrace.c +++ b/sys/kern/kern_ktrace.c @@ -106,6 +106,7 @@ struct ktr_request { struct ktr_fault ktr_fault; struct ktr_faultend ktr_faultend; struct ktr_struct_array ktr_struct_array; + struct ktr_exterr ktr_exterr; } ktr_data; STAILQ_ENTRY(ktr_request) ktr_list; }; @@ -128,6 +129,7 @@ static const int data_lengths[] = { [KTR_STRUCT_ARRAY] = sizeof(struct ktr_struct_array), [KTR_ARGS] = 0, [KTR_ENVS] = 0, + [KTR_EXTERR] = sizeof(struct ktr_exterr), }; static STAILQ_HEAD(, ktr_request) ktr_free; @@ -1035,8 +1037,35 @@ ktrfaultend(int result) ktr_enqueuerequest(td, req); ktrace_exit(td); } + +void +ktrexterr(struct thread *td) +{ + struct ktr_request *req; + struct ktr_exterr *ktre; + + if (!KTRPOINT(td, KTR_EXTERR)) + return; + + req = ktr_getrequest(KTR_EXTERR); + if (req == NULL) + return; + ktre = &req->ktr_data.ktr_exterr; + if (exterr_to_ue(td, &ktre->ue) == 0) + ktr_enqueuerequest(td, req); + else + ktr_freerequest(req); + ktrace_exit(td); +} #endif /* KTRACE */ +#ifndef KTRACE +void +ktrexterr(struct thread *td __unused) +{ +} +#endif + /* Interface and common routines */ #ifndef _SYS_SYSPROTO_H_ diff --git a/sys/sys/exterrvar.h b/sys/sys/exterrvar.h index 7e842f553866..4b168446e23b 100644 --- a/sys/sys/exterrvar.h +++ b/sys/sys/exterrvar.h @@ -46,12 +46,14 @@ _Td->td_kexterr.p1 = (uintptr_t)pp1; \ _Td->td_kexterr.p2 = (uintptr_t)pp2; \ _Td->td_kexterr.src_line = __LINE__; \ + ktrexterr(_Td); \ } \ } while (0) #define SET_ERROR0(eerror, mmsg) SET_ERROR2(eerror, mmsg, 0, 0) #define SET_ERROR1(eerror, mmsg, pp1) SET_ERROR2(eerror, mmsg, pp1, 0) int exterr_to_ue(struct thread *td, struct uexterror *ue); +void ktrexterr(struct thread *td); #else /* _KERNEL */