Date: Sat, 11 Jul 2009 03:08:34 +0000 (UTC) From: Kip Macy <kmacy@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r195606 - user/kmacy/releng_7_2_fcs_1/sys/kern Message-ID: <200907110308.n6B38Yin040170@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200907110308.n6B38Yin040170>