OpenBSD cvs log

created 2023-02-07T20:27:36Z
begin 2023-01-31T00:00:00Z
end 2023-02-01T00:00:00Z
path src/sys
commits 9

date 2023-01-31T01:27:58Z
author gkoehler
files src/sys/arch/powerpc/include/pmap.h log diff annotate
src/sys/arch/powerpc/include/pte.h log diff annotate
src/sys/arch/powerpc/powerpc/pmap.c log diff annotate
src/sys/arch/powerpc/powerpc/trap.c log diff annotate
message Execute-only for macppc G5

The G5 PowerPC 970 has a Data Address Compare mechanism that can trap
loads and stores to pages with PTE_AC_64, while allowing instruction
fetches. Use this for execute-only mappings, like we do on powerpc64.

Add a check to pte_spill_v for execute-only mappings. Without this,
we would forever retry reading an execute-only page.

In altivec_assist, copyin would fail to read the instruction from an
execute-only page. Add copyinsn to bypass x-only, like sparc64.

with help from abieber@ deraadt@ kettenis@
ok deraadt@

date 2023-01-31T11:47:35Z
author mvs
files src/sys/netinet/if_ether.c log diff annotate
message Route lock was reverted, adjust forgotten commentary.
No functional changes.

date 2023-01-31T13:41:54Z
author mvs
files src/sys/netinet/if_ether.c log diff annotate
message Remove the last ones route lock references from comments.
No functional change.

date 2023-01-31T15:18:51Z
author deraadt
files src/sys/arch/alpha/alpha/fp_complete.c log diff annotate
src/sys/arch/alpha/alpha/locore.s log diff annotate
src/sys/arch/alpha/alpha/trap.c log diff annotate
message On systems without xonly mmu hardware-enforcement, we can still mitigate
against classic BROP with a range-checking wrapper in front of copyin() and
copyinstr() which ensures the userland source doesn't overlap the main program
text, ld.so text, signal tramp text (it's mapping is hard to distinguish
so it comes along for the ride), or libc.so text. ld.so tells the kernel
libc.so text range with msyscall(2). The range checking for 2-4 elements is
done without locking (because all 4 ranges are immutable!) and is inexpensive.

write(sock, &open, 400) now fails with EFAULT. No programs have been
discovered which require reading their own text segments with a system call.

On a machine without mmu enforcement, a test program reports the following:
userland kernel
ld.so readable unreadable
mmap xz unreadable unreadable
mmap x readable readable
mmap nrx readable readable
mmap nwx readable readable
mmap xnwx readable readable
main readable unreadable
libc unmapped? readable unreadable
libc mapped readable unreadable

ok kettenis, additional help from miod

date 2023-01-31T15:18:53Z
author deraadt
files src/sys/arch/alpha/include/cpu.h log diff annotate
message On systems without xonly mmu hardware-enforcement, we can still mitigate
against classic BROP with a range-checking wrapper in front of copyin() and
copyinstr() which ensures the userland source doesn't overlap the main program
text, ld.so text, signal tramp text (it's mapping is hard to distinguish
so it comes along for the ride), or libc.so text. ld.so tells the kernel
libc.so text range with msyscall(2). The range checking for 2-4 elements is
done without locking (because all 4 ranges are immutable!) and is inexpensive.

write(sock, &open, 400) now fails with EFAULT. No programs have been
discovered which require reading their own text segments with a system call.

On a machine without mmu enforcement, a test program reports the following:
userland kernel
ld.so readable unreadable
mmap xz unreadable unreadable
mmap x readable readable
mmap nrx readable readable
mmap nwx readable readable
mmap xnwx readable readable
main readable unreadable
libc unmapped? readable unreadable
libc mapped readable unreadable

ok kettenis, additional help from miod

date 2023-01-31T15:18:54Z
author deraadt
files src/sys/arch/alpha/include/pmap.h log diff annotate
src/sys/arch/amd64/amd64/copy.S log diff annotate
src/sys/arch/amd64/include/pmap.h log diff annotate
src/sys/arch/arm/arm/bcopyinout.S log diff annotate
src/sys/arch/arm/arm/copystr.S log diff annotate
src/sys/arch/arm/include/pmap.h log diff annotate
src/sys/arch/hppa/hppa/db_disasm.c log diff annotate
src/sys/arch/hppa/include/cpu.h log diff annotate
src/sys/arch/i386/i386/locore.s log diff annotate
src/sys/arch/i386/include/pmap.h log diff annotate
src/sys/arch/m88k/include/cpu.h log diff annotate
src/sys/arch/m88k/m88k/m88110_fp.c log diff annotate
src/sys/arch/m88k/m88k/subr.S log diff annotate
src/sys/arch/m88k/m88k/trap.c log diff annotate
message On systems without xonly mmu hardware-enforcement, we can still mitigate
against classic BROP with a range-checking wrapper in front of copyin() and
copyinstr() which ensures the userland source doesn't overlap the main program
text, ld.so text, signal tramp text (it's mapping is hard to distinguish
so it comes along for the ride), or libc.so text. ld.so tells the kernel
libc.so text range with msyscall(2). The range checking for 2-4 elements is
done without locking (because all 4 ranges are immutable!) and is inexpensive.

write(sock, &open, 400) now fails with EFAULT. No programs have been
discovered which require reading their own text segments with a system call.

On a machine without mmu enforcement, a test program reports the following:
userland kernel
ld.so readable unreadable
mmap xz unreadable unreadable
mmap x readable readable
mmap nrx readable readable
mmap nwx readable readable
mmap xnwx readable readable
main readable unreadable
libc unmapped? readable unreadable
libc mapped readable unreadable

ok kettenis, additional help from miod

date 2023-01-31T15:18:55Z
author deraadt
files src/sys/arch/mips64/include/pmap.h log diff annotate
src/sys/arch/mips64/mips64/lcore_access.S log diff annotate
src/sys/arch/powerpc/include/pmap.h log diff annotate
src/sys/arch/powerpc/powerpc/pmap.c log diff annotate
src/sys/arch/sh/include/pmap.h log diff annotate
src/sys/arch/sh/sh/locore_subr.S log diff annotate
src/sys/arch/sparc64/include/pmap.h log diff annotate
src/sys/arch/sparc64/sparc64/db_interface.c log diff annotate
src/sys/arch/sparc64/sparc64/locore.s log diff annotate
src/sys/uvm/uvm_map.c log diff annotate
src/sys/uvm/uvm_map.h log diff annotate
message On systems without xonly mmu hardware-enforcement, we can still mitigate
against classic BROP with a range-checking wrapper in front of copyin() and
copyinstr() which ensures the userland source doesn't overlap the main program
text, ld.so text, signal tramp text (it's mapping is hard to distinguish
so it comes along for the ride), or libc.so text. ld.so tells the kernel
libc.so text range with msyscall(2). The range checking for 2-4 elements is
done without locking (because all 4 ranges are immutable!) and is inexpensive.

write(sock, &open, 400) now fails with EFAULT. No programs have been
discovered which require reading their own text segments with a system call.

On a machine without mmu enforcement, a test program reports the following:
userland kernel
ld.so readable unreadable
mmap xz unreadable unreadable
mmap x readable readable
mmap nrx readable readable
mmap nwx readable readable
mmap xnwx readable readable
main readable unreadable
libc unmapped? readable unreadable
libc mapped readable unreadable

ok kettenis, additional help from miod

date 2023-01-31T15:18:56Z
author deraadt
files src/sys/kern/exec_subr.c log diff annotate
src/sys/kern/kern_sig.c log diff annotate
src/sys/kern/kern_subr.c log diff annotate
src/sys/sys/systm.h log diff annotate
message On systems without xonly mmu hardware-enforcement, we can still mitigate
against classic BROP with a range-checking wrapper in front of copyin() and
copyinstr() which ensures the userland source doesn't overlap the main program
text, ld.so text, signal tramp text (it's mapping is hard to distinguish
so it comes along for the ride), or libc.so text. ld.so tells the kernel
libc.so text range with msyscall(2). The range checking for 2-4 elements is
done without locking (because all 4 ranges are immutable!) and is inexpensive.

write(sock, &open, 400) now fails with EFAULT. No programs have been
discovered which require reading their own text segments with a system call.

On a machine without mmu enforcement, a test program reports the following:
userland kernel
ld.so readable unreadable
mmap xz unreadable unreadable
mmap x readable readable
mmap nrx readable readable
mmap nwx readable readable
mmap xnwx readable readable
main readable unreadable
libc unmapped? readable unreadable
libc mapped readable unreadable

ok kettenis, additional help from miod

date 2023-01-31T19:11:47Z
author cheloha
files src/sys/arch/amd64/amd64/lapic.c log diff annotate
message amd64: lapic_timer_trigger: disable interrupts while configuring timer

lapic_timer_oneshot() does three writes. We need to disable
interrupts to ensure the timer lands in a valid state.

Link: https://marc.info/?l=openbsd-tech&m=167482851403841&w=2

ok mlarkin@