Index: sys/kern/kern_cpuset.c =================================================================== --- sys/kern/kern_cpuset.c +++ sys/kern/kern_cpuset.c @@ -1743,9 +1743,28 @@ return (0); } +/* + * TODO: At least powerpc64 and powerpc64le kernels panic with + * exception 0x480 (instruction segment exception) when copyin/copyout, + * are set as a function pointer in cpuset_copy_cb struct and called by + * an external module (like pfsync). Tip: copyin/copyout have an ifunc + * resolver function. + */ +static int +cpuset_copyin(const void *uaddr, void *kaddr, size_t len) +{ + return(copyin(uaddr, kaddr, len)); +} + +static int +cpuset_copyout(const void *kaddr, void *uaddr, size_t len) +{ + return(copyout(kaddr, uaddr, len)); +} + static const struct cpuset_copy_cb copy_set = { - .cpuset_copyin = copyin, - .cpuset_copyout = copyout + .cpuset_copyin = cpuset_copyin, + .cpuset_copyout = cpuset_copyout }; #ifndef _SYS_SYSPROTO_H_