svn commit: r195606 - user/kmacy/releng_7_2_fcs_1/sys/kern

Kip Macy kmacy at FreeBSD.org
Sat Jul 11 03:08:35 UTC 2009


Author: kmacy
Date: Sat Jul 11 03:08:34 2009
New Revision: 195606
URL: http://svn.freebsd.org/changeset/base/195606

Log:
  - exclude buffers from execution and coredump

Modified:
  user/kmacy/releng_7_2_fcs_1/sys/kern/vfs_bio.c

Modified: user/kmacy/releng_7_2_fcs_1/sys/kern/vfs_bio.c
==============================================================================
--- user/kmacy/releng_7_2_fcs_1/sys/kern/vfs_bio.c	Sat Jul 11 03:00:37 2009	(r195605)
+++ user/kmacy/releng_7_2_fcs_1/sys/kern/vfs_bio.c	Sat Jul 11 03:08:34 2009	(r195606)
@@ -1308,9 +1308,12 @@ brelse(struct buf *bp)
 				}
 
 				if ((bp->b_flags & B_INVAL) == 0) {
-					pmap_qenter(
-					    trunc_page((vm_offset_t)bp->b_data),
-					    bp->b_pages, bp->b_npages);
+					pmap_qenter_prot(
+						trunc_page((vm_offset_t)bp->b_data),
+						    bp->b_pages, 
+						    bp->b_npages,
+						    (VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXCLUDE)
+						);
 				}
 				m = bp->b_pages[i];
 			}
@@ -2988,12 +2991,13 @@ allocbuf(struct buf *bp, int size)
 
 			bp->b_data = (caddr_t)
 			    trunc_page((vm_offset_t)bp->b_data);
-			pmap_qenter(
-			    (vm_offset_t)bp->b_data,
-			    bp->b_pages, 
-			    bp->b_npages
-			);
-			
+			pmap_qenter_prot(
+				(vm_offset_t)bp->b_data,
+				    bp->b_pages, 
+				    bp->b_npages,
+				    (VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXCLUDE)
+				);
+
 			bp->b_data = (caddr_t)((vm_offset_t)bp->b_data | 
 			    (vm_offset_t)(bp->b_offset & PAGE_MASK));
 		}
@@ -3257,8 +3261,12 @@ bufdone_finish(struct buf *bp)
 				if (m == NULL)
 					panic("biodone: page disappeared!");
 				bp->b_pages[i] = m;
-				pmap_qenter(trunc_page((vm_offset_t)bp->b_data),
-				    bp->b_pages, bp->b_npages);
+				pmap_qenter_prot(
+					trunc_page((vm_offset_t)bp->b_data),
+					    bp->b_pages, 
+					    bp->b_npages,
+					    (VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXCLUDE)
+				);
 			}
 #if defined(VFS_BIO_DEBUG)
 			if (OFF_TO_IDX(foff) != m->pindex) {
@@ -3353,8 +3361,12 @@ vfs_unbusy_pages(struct buf *bp)
 			if (!m)
 				panic("vfs_unbusy_pages: page missing\n");
 			bp->b_pages[i] = m;
-			pmap_qenter(trunc_page((vm_offset_t)bp->b_data),
-			    bp->b_pages, bp->b_npages);
+			pmap_qenter_prot(
+				trunc_page((vm_offset_t)bp->b_data),
+				    bp->b_pages, 
+				    bp->b_npages,
+				    (VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXCLUDE)
+				);
 		}
 		vm_object_pip_subtract(obj, 1);
 		vm_page_io_finish(m);
@@ -3477,8 +3489,12 @@ retry:
 	}
 	VM_OBJECT_UNLOCK(obj);
 	if (bogus)
-		pmap_qenter(trunc_page((vm_offset_t)bp->b_data),
-		    bp->b_pages, bp->b_npages);
+		pmap_qenter_prot(
+			trunc_page((vm_offset_t)bp->b_data),
+			    bp->b_pages, 
+			    bp->b_npages,
+			    (VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXCLUDE)
+			);
 }
 
 /*
@@ -3665,7 +3681,8 @@ tryagain:
 			goto tryagain;
 		}
 		p->valid = VM_PAGE_BITS_ALL;
-		pmap_qenter(pg, &p, 1);
+		pmap_qenter_prot(pg, &p, 1,
+		    (VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXCLUDE));
 		bp->b_pages[index] = p;
 	}
 	VM_OBJECT_UNLOCK(kernel_object);
@@ -3764,7 +3781,8 @@ retry:
 	}
 	if (pidx > btoc(MAXPHYS))
 		panic("vmapbuf: mapped more than MAXPHYS");
-	pmap_qenter((vm_offset_t)bp->b_saveaddr, bp->b_pages, pidx);
+	pmap_qenter_prot((vm_offset_t)bp->b_saveaddr, bp->b_pages, pidx,
+	    (VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXCLUDE));
 	
 	kva = bp->b_saveaddr;
 	bp->b_npages = pidx;


More information about the svn-src-user mailing list