Date: Sun, 29 Jul 2018 19:16:58 +0000 From: bugzilla-noreply@freebsd.org To: bugs@FreeBSD.org Subject: [Bug 230162] mprotect(2): error converting size argument in 32-bit emulation Message-ID: <bug-230162-227@https.bugs.freebsd.org/bugzilla/>
next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D230162 Bug ID: 230162 Summary: mprotect(2): error converting size argument in 32-bit emulation Product: Base System Version: CURRENT Hardware: Any OS: Any Status: New Severity: Affects Only Me Priority: --- Component: kern Assignee: bugs@FreeBSD.org Reporter: asomers@FreeBSD.org The lib/libc/sys/mprotect_test:mprotect_err test fails when run under 32-bit emulation. Examining the problem with dtrace, it looks like there's a cast= ing error; the 32-bit syscall's len argument winds up in the high half of kern_mprotect's size argument. I don't see that behavior when I dtrace msg= snd, another syscall with a size_t argument. Here's an example of the problem. Notice how len=3D0x1 in syscall:freebsd32_mprotect, but 0x100000000 in fbt:kern_mprotect $ sudo dtrace -i 'fbt:kernel:kern_mprotect:entry {printf("addr0=3D%#lx, size=3D%#lx", args[1], args[2]);}' -i 'syscall:freebsd32:freebsd32_mprotect:entry {printf("addr=3D%p len=3D%#lx", args[0], args[1]);}' -i 'fbt:kernel:vm_map_protect:entry {printf("size ~=3D %#lx", args[2] - args[1]);}' dtrace: description 'fbt:kernel:kern_mprotect:entry ' matched 1 probe dtrace: description 'syscall:freebsd32:freebsd32_mprotect:entry ' matched 1 probe dtrace: description 'fbt:kernel:vm_map_protect:entry ' matched 1 probe CPU ID FUNCTION:NAME 2 61769 freebsd32_mprotect:entry addr=3D0 len=3D0 2 28572 kern_mprotect:entry addr0=3D0, size=3D0 2 47917 vm_map_protect:entry size ~=3D 0 3 61769 freebsd32_mprotect:entry addr=3Dffffffff len=3D0x1 3 28572 kern_mprotect:entry addr0=3D0xfffff000, size=3D0x10= 0000000 3 47917 vm_map_protect:entry size ~=3D 0x1000 And in another terminal, in a 32-bit chroot, run # kyua debug mprotect_test:mprotect_err mprotect_test:mprotect_err -> failed: /usr/home/somers/freebsd/base/head/contrib/netbsd-tests/lib/libc/sys/t_mpro= tect.c:158: mprotect((char *)-1, 1, PROT_READ) !=3D 0 not met --=20 You are receiving this mail because: You are the assignee for the bug.=
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-230162-227>