Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 15 Jul 2026 09:32:44 +0000
From:      Brooks Davis <brooks@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 844009378da9 - main - exterr: allow exterr to fit pointers on CHERI targets
Message-ID:  <6a5753bc.454d5.2418d0cf@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by brooks:

URL: https://cgit.FreeBSD.org/src/commit/?id=844009378da9723180923bb5fc2008d137190b62

commit 844009378da9723180923bb5fc2008d137190b62
Author:     Brooks Davis <brooks@FreeBSD.org>
AuthorDate: 2026-07-15 08:44:03 +0000
Commit:     Brooks Davis <brooks@FreeBSD.org>
CommitDate: 2026-07-15 09:32:16 +0000

    exterr: allow exterr to fit pointers on CHERI targets
    
    Switch to uint64ptr_t which is a uint64_t on traditional architectures
    and a uintptr_t on CHERI architectures.  This has no ABI impact on
    non-CHERI kernels.
    
    Fix truncation of 64-bit values on 32-bit kernels.
    
    Reviewed by:    kib
    Effort:         CHERI upstreaming
    Sponsored by:   Innovate UK
    Differential Revision:  https://reviews.freebsd.org/D58056
---
 sys/sys/_exterr.h    | 4 ++--
 sys/sys/_uexterror.h | 6 +++---
 sys/sys/exterrvar.h  | 6 +++---
 3 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/sys/sys/_exterr.h b/sys/sys/_exterr.h
index 4423d6a34bdb..8f5e66ae4601 100644
--- a/sys/sys/_exterr.h
+++ b/sys/sys/_exterr.h
@@ -16,8 +16,8 @@
 struct kexterr {
 	int error;
 	const char *msg;
-	__uint64_t p1;
-	__uint64_t p2;
+	__uint64ptr_t p1;
+	__uint64ptr_t p2;
 	unsigned cat;
 	unsigned src_line;
 };
diff --git a/sys/sys/_uexterror.h b/sys/sys/_uexterror.h
index 7951b2c5b26d..a0a1ed24f1fc 100644
--- a/sys/sys/_uexterror.h
+++ b/sys/sys/_uexterror.h
@@ -20,9 +20,9 @@ struct uexterror {
 	__uint32_t src_line;
 	__uint32_t flags;
 	__uint32_t rsrv0;
-	__uint64_t p1;
-	__uint64_t p2;
-	__uint64_t rsrv1[4];
+	__uint64ptr_t p1;
+	__uint64ptr_t p2;
+	__uint64ptr_t rsrv1[4];
 	char msg[128];
 };
 
diff --git a/sys/sys/exterrvar.h b/sys/sys/exterrvar.h
index 6c75a2d01174..0a34280ff711 100644
--- a/sys/sys/exterrvar.h
+++ b/sys/sys/exterrvar.h
@@ -59,7 +59,7 @@
 
 #define	_SET_ERROR2(eerror, mmsg, pp1, pp2)				\
 	exterr_set(eerror, EXTERR_CATEGORY, SET_ERROR_MSG(mmsg),	\
-	    (uintptr_t)(pp1), (uintptr_t)(pp2), __LINE__)
+	    (uint64ptr_t)(pp1), (uint64ptr_t)(pp2), __LINE__)
 #define	_SET_ERROR0(eerror, mmsg)	_SET_ERROR2(eerror, mmsg, 0, 0)
 #define	_SET_ERROR1(eerror, mmsg, pp1)	_SET_ERROR2(eerror, mmsg, pp1, 0)
 
@@ -72,8 +72,8 @@
 void exterr_clear(struct kexterr *ke);
 void exterr_db_print(struct kexterr *ke);
 int exterr_set_from(const struct kexterr *ke);
-int exterr_set(int eerror, int category, const char *mmsg, uintptr_t pp1,
-    uintptr_t pp2, int line);
+int exterr_set(int eerror, int category, const char *mmsg, uint64ptr_t pp1,
+    uint64ptr_t pp2, int line);
 int exterr_to_ue(struct thread *td, struct uexterror *ue);
 void ktrexterr(struct thread *td);
 


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6a5753bc.454d5.2418d0cf>