[Bug 257193] bad pointer to kernel copyin() causes it to loop forever
Date: Wed, 14 Jul 2021 20:22:12 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=257193
Bug ID: 257193
Summary: bad pointer to kernel copyin() causes it to loop
forever
Product: Base System
Version: CURRENT
Hardware: riscv
OS: Any
Status: New
Severity: Affects Only Me
Priority: ---
Component: riscv
Assignee: riscv@FreeBSD.org
Reporter: rtm@lcs.mit.edu
The risc-v kernel copyin() routine loops forever if the user passs a
pointer with the high bit set. I"m using qemu 5.2.0 to run this image:
https://download.freebsd.org/ftp/snapshots/VM-IMAGES/14.0-CURRENT/riscv64/Latest/FreeBSD-14.0-CURRENT-riscv-riscv64.raw.xz
I compile and run this program:
#include <fcntl.h>
main()
{
fcntl(1, F_GETLK, 0x800000c000000000);
}
The kernel fcntl calls copyin(), which never returns. I'm guessing that
copyin's bgt in copyinout.S should be a bgtu:
ENTRY(copyin)
beqz a2, copyin_end /* If len == 0 then skip loop */
add a3, a0, a2
li a4, VM_MAXUSER_ADDRESS
bgt a3, a4, copyio_fault_nopcb
...
--
You are receiving this mail because:
You are the assignee for the bug.