The branch main has been updated by brooks:

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

commit db3eca2be2067f7e81d65686b33dcbd475aed363
Author:     Brooks Davis <[email protected]>
AuthorDate: 2026-07-15 08:43:50 +0000
Commit:     Brooks Davis <[email protected]>
CommitDate: 2026-07-15 09:32:16 +0000

    exterrctl(2): add kern_exterrctl
    
    Reviewed by:    kib
    Effort:         CHERI upstreaming
    Sponsored by:   DARPA, AFRL
    Differential Revision:  https://reviews.freebsd.org/D58055
---
 sys/kern/sys_generic.c | 16 +++++++++++-----
 sys/sys/syscallsubr.h  |  1 +
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c
index bbfeebbe2f2e..c867867f2618 100644
--- a/sys/kern/sys_generic.c
+++ b/sys/kern/sys_generic.c
@@ -2310,25 +2310,31 @@ exterr_copyout(struct thread *td)
 
 int
 sys_exterrctl(struct thread *td, struct exterrctl_args *uap)
+{
+       return (kern_exterrctl(td, uap->op, uap->flags, uap->ptr));
+}
+
+int
+kern_exterrctl(struct thread *td, u_int op, u_int flags, void *ptr)
 {
        uint32_t ver;
        int error;
 
-       if ((uap->flags & ~(EXTERRCTLF_FORCE)) != 0)
+       if ((flags & ~(EXTERRCTLF_FORCE)) != 0)
                return (EINVAL);
-       switch (uap->op) {
+       switch (op) {
        case EXTERRCTL_ENABLE:
                if ((td->td_pflags2 & TDP2_UEXTERR) != 0 &&
-                   (uap->flags & EXTERRCTLF_FORCE) == 0)
+                   (flags & EXTERRCTLF_FORCE) == 0)
                        return (EBUSY);
                td->td_pflags2 &= ~TDP2_UEXTERR;
-               error = copyin(uap->ptr, &ver, sizeof(ver));
+               error = copyin(ptr, &ver, sizeof(ver));
                if (error != 0)
                        return (error);
                if (ver != UEXTERROR_VER)
                        return (EINVAL);
                td->td_pflags2 |= TDP2_UEXTERR;
-               td->td_exterr_ptr = uap->ptr;
+               td->td_exterr_ptr = ptr;
                return (0);
        case EXTERRCTL_DISABLE:
                if ((td->td_pflags2 & TDP2_UEXTERR) == 0)
diff --git a/sys/sys/syscallsubr.h b/sys/sys/syscallsubr.h
index f0652806b999..e7a118195b53 100644
--- a/sys/sys/syscallsubr.h
+++ b/sys/sys/syscallsubr.h
@@ -167,6 +167,7 @@ int kern_extattr_set_fp(struct thread *td, struct file *fp,
 int    kern_extattr_set_path(struct thread *td, const char *path,
            int attrnamespace, const char *attrname, void *data,
            size_t nbytes, int follow, enum uio_seg pathseg);
+int    kern_exterrctl(struct thread *td, u_int op, u_int flags, void *ptr);
 int    kern_fchmodat(struct thread *td, int fd, const char *path,
            enum uio_seg pathseg, mode_t mode, int flag);
 int    kern_fchownat(struct thread *td, int fd, const char *path,

Reply via email to