From: Ralph Campbell Date: Mon, 16 Mar 1992 11:15:48 +0000 (-0800) Subject: fix kmem address checking. X-Git-Tag: BSD-4_4-Snapshot-Development~7662 X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/commitdiff_plain/6cfdded02fded05ce832fe5ce9936fc5a69dab3a?ds=inline fix kmem address checking. SCCS-vsn: sys/pmax/pmax/mem.c 7.3 --- diff --git a/usr/src/sys/pmax/pmax/mem.c b/usr/src/sys/pmax/pmax/mem.c index 149617aa7f..8d1c5e1b0f 100644 --- a/usr/src/sys/pmax/pmax/mem.c +++ b/usr/src/sys/pmax/pmax/mem.c @@ -11,7 +11,7 @@ * * from: Utah $Hdr: mem.c 1.14 90/10/12$ * - * @(#)mem.c 7.2 (Berkeley) %G% + * @(#)mem.c 7.3 (Berkeley) %G% */ /* @@ -37,8 +37,8 @@ mmrw(dev, uio, flags) struct uio *uio; int flags; { - register int o; - register u_int c, v; + register off_t v; + register u_int c; register struct iovec *iov; int error = 0; caddr_t zbuf = NULL; @@ -67,15 +67,14 @@ mmrw(dev, uio, flags) /* minor device 1 is kernel memory */ case 1: - if (uio->uio_offset < MACH_CACHED_MEMORY_ADDR) + v = uio->uio_offset; + if (v < MACH_CACHED_MEMORY_ADDR) return (EFAULT); c = iov->iov_len; - if (uio->uio_offset + c <= avail_end || - uio->uio_offset >= MACH_KSEG2_ADDR && - kernacc((caddr_t)uio->uio_offset, c, + if (v + c <= MACH_PHYS_TO_CACHED(avail_end) || + v >= MACH_KSEG2_ADDR && kernacc((caddr_t)v, c, uio->uio_rw == UIO_READ ? B_READ : B_WRITE)) { - error = uiomove((caddr_t)uio->uio_offset, - (int)c, uio); + error = uiomove((caddr_t)v, (int)c, uio); continue; } return (EFAULT);