From owner-svn-src-user@FreeBSD.ORG Sat Jul 11 03:08:35 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0A6B6106564A; Sat, 11 Jul 2009 03:08:34 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id ADCC68FC14; Sat, 11 Jul 2009 03:08:34 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n6B38YN9040172; Sat, 11 Jul 2009 03:08:34 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n6B38Yin040170; Sat, 11 Jul 2009 03:08:34 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200907110308.n6B38Yin040170@svn.freebsd.org> From: Kip Macy Date: Sat, 11 Jul 2009 03:08:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r195606 - user/kmacy/releng_7_2_fcs_1/sys/kern X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jul 2009 03:08:35 -0000 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;