summaryrefslogtreecommitdiffstats
path: root/sys/fs/procfs
diff options
context:
space:
mode:
authordyson <dyson@FreeBSD.org>1997-04-20 17:12:11 +0000
committerdyson <dyson@FreeBSD.org>1997-04-20 17:12:11 +0000
commit5cd49302ac6813b96afb2a936fd364fa9723d06c (patch)
tree5d7946d6c00fdb1d50c8abb76320b17620649997 /sys/fs/procfs
parentd5d1e4921512f54c8d72b82faea0ce52a42f6e2e (diff)
downloadFreeBSD-src-5cd49302ac6813b96afb2a936fd364fa9723d06c.zip
FreeBSD-src-5cd49302ac6813b96afb2a936fd364fa9723d06c.tar.gz
Fix both a problem with accessing backing objects, and also release
the process map on nonexistant pages. PR: kern/3327 Submitted by: Tor Egge <Tor.Egge@idi.ntnu.no>
Diffstat (limited to 'sys/fs/procfs')
-rw-r--r--sys/fs/procfs/procfs_mem.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/sys/fs/procfs/procfs_mem.c b/sys/fs/procfs/procfs_mem.c
index a354a66..ef049bd 100644
--- a/sys/fs/procfs/procfs_mem.c
+++ b/sys/fs/procfs/procfs_mem.c
@@ -37,7 +37,7 @@
*
* @(#)procfs_mem.c 8.5 (Berkeley) 6/15/94
*
- * $Id: procfs_mem.c,v 1.23 1997/02/22 09:40:28 peter Exp $
+ * $Id: procfs_mem.c,v 1.24 1997/04/06 02:29:31 dyson Exp $
*/
/*
@@ -197,6 +197,17 @@ procfs_rwmem(p, uio)
}
m = vm_page_lookup(object, pindex);
+
+ /* Allow fallback to backing objects if we are reading */
+
+ while (m == NULL && !writing && object->backing_object) {
+
+ pindex += OFF_TO_IDX(object->backing_object_offset);
+ object = object->backing_object;
+
+ m = vm_page_lookup(object, pindex);
+ }
+
if (m == NULL) {
error = EFAULT;
@@ -206,6 +217,8 @@ procfs_rwmem(p, uio)
*/
object = NULL;
+ vm_map_lookup_done(tmap, out_entry);
+
break;
}
OpenPOWER on IntegriCloud