diff options
author | kib <kib@FreeBSD.org> | 2015-01-03 01:28:58 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2015-01-03 01:28:58 +0000 |
commit | 771035aa6c3aa7f4ac234c0ef335a796274db485 (patch) | |
tree | 2443efde3d5c5c45171ed5d8ff0d25dc55325960 /sys/amd64/amd64/mem.c | |
parent | 5606bb1e5a248bdbd71d6721aa725e262e66b4e4 (diff) | |
download | FreeBSD-src-771035aa6c3aa7f4ac234c0ef335a796274db485.zip FreeBSD-src-771035aa6c3aa7f4ac234c0ef335a796274db485.tar.gz |
For /dev/mem and /dev/kmem accesses, avoid asserting that addresses
are within direct map. We want to return error instead of panicing.
PR: 194995
Sponsored by: The FreeBSD Foundation
Diffstat (limited to 'sys/amd64/amd64/mem.c')
-rw-r--r-- | sys/amd64/amd64/mem.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/amd64/amd64/mem.c b/sys/amd64/amd64/mem.c index 2b6b112..b6b8a66 100644 --- a/sys/amd64/amd64/mem.c +++ b/sys/amd64/amd64/mem.c @@ -98,7 +98,7 @@ memrw(struct cdev *dev, struct uio *uio, int flags) kmemphys: o = v & PAGE_MASK; c = min(uio->uio_resid, (u_int)(PAGE_SIZE - o)); - vd = PHYS_TO_DMAP(v); + vd = PHYS_TO_DMAP_RAW(v); if (vd < DMAP_MIN_ADDRESS || (vd > DMAP_MIN_ADDRESS + dmaplimit && vd <= DMAP_MAX_ADDRESS) || @@ -112,7 +112,7 @@ kmemphys: v = uio->uio_offset; if (v >= DMAP_MIN_ADDRESS && v < DMAP_MAX_ADDRESS) { - v = DMAP_TO_PHYS(v); + v = DMAP_TO_PHYS_RAW(v); goto kmemphys; } |