diff options
author | Jayachandran C. <jchandra@FreeBSD.org> | 2011-10-17 05:42:53 +0000 |
---|---|---|
committer | Jayachandran C. <jchandra@FreeBSD.org> | 2011-10-17 05:42:53 +0000 |
commit | c0959978ecbcbb27e7c2ec8cbef299264d2c18f8 (patch) | |
tree | 52d8255430f108030bed5887294c6890ee48b154 /sys/mips | |
parent | 3daee1d6c3783e32a226d145f85a887007f5754b (diff) | |
download | src-c0959978ecbcbb27e7c2ec8cbef299264d2c18f8.tar.gz src-c0959978ecbcbb27e7c2ec8cbef299264d2c18f8.zip |
Fix for crash on MIPS /dev/mem read.
Reading /dev/mem in 64 bit kernel crashes. This is because the page
used to call uiomove_fromphys() from memrw() does not have md.pv_list
initialized correctly.
The fix is to call pmap_page_init() on the page to initialize it.
Notes
Notes:
svn path=/head/; revision=226459
Diffstat (limited to 'sys/mips')
-rw-r--r-- | sys/mips/mips/mem.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/mips/mips/mem.c b/sys/mips/mips/mem.c index 7529a9ed5038..d40c424888af 100644 --- a/sys/mips/mips/mem.c +++ b/sys/mips/mips/mem.c @@ -87,6 +87,7 @@ memrw(struct cdev *dev, struct uio *uio, int flags) GIANT_REQUIRED; + pmap_page_init(&m); while (uio->uio_resid > 0 && !error) { iov = uio->uio_iov; if (iov->iov_len == 0) { |