mac_process.c (151115) | mac_process.c (156225) |
---|---|
1/*- 2 * Copyright (c) 1999-2002 Robert N. M. Watson 3 * Copyright (c) 2001 Ilmar S. Habibulin 4 * Copyright (c) 2001-2003 Networks Associates Technology, Inc. 5 * Copyright (c) 2005 Samy Al Bahra 6 * All rights reserved. 7 * 8 * This software was developed by Robert Watson and Ilmar Habibulin for the --- 22 unchanged lines hidden (view full) --- 31 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 32 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 33 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 34 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 35 * SUCH DAMAGE. 36 */ 37 38#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 1999-2002 Robert N. M. Watson 3 * Copyright (c) 2001 Ilmar S. Habibulin 4 * Copyright (c) 2001-2003 Networks Associates Technology, Inc. 5 * Copyright (c) 2005 Samy Al Bahra 6 * All rights reserved. 7 * 8 * This software was developed by Robert Watson and Ilmar Habibulin for the --- 22 unchanged lines hidden (view full) --- 31 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 32 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 33 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 34 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 35 * SUCH DAMAGE. 36 */ 37 38#include <sys/cdefs.h> |
39__FBSDID("$FreeBSD: head/sys/security/mac/mac_process.c 151115 2005-10-09 02:37:27Z csjp $"); | 39__FBSDID("$FreeBSD: head/sys/security/mac/mac_process.c 156225 2006-03-02 22:13:28Z tegge $"); |
40 41#include "opt_mac.h" 42 43#include <sys/param.h> 44#include <sys/condvar.h> 45#include <sys/imgact.h> 46#include <sys/kernel.h> 47#include <sys/lock.h> --- 277 unchanged lines hidden (view full) --- 325 struct vm_map *map) 326{ 327 struct vm_map_entry *vme; 328 int vfslocked, result; 329 vm_prot_t revokeperms; 330 vm_object_t backing_object, object; 331 vm_ooffset_t offset; 332 struct vnode *vp; | 40 41#include "opt_mac.h" 42 43#include <sys/param.h> 44#include <sys/condvar.h> 45#include <sys/imgact.h> 46#include <sys/kernel.h> 47#include <sys/lock.h> --- 277 unchanged lines hidden (view full) --- 325 struct vm_map *map) 326{ 327 struct vm_map_entry *vme; 328 int vfslocked, result; 329 vm_prot_t revokeperms; 330 vm_object_t backing_object, object; 331 vm_ooffset_t offset; 332 struct vnode *vp; |
333 struct mount *mp; |
|
333 334 if (!mac_mmap_revocation) 335 return; 336 337 vm_map_lock_read(map); 338 for (vme = map->header.next; vme != &map->header; vme = vme->next) { 339 if (vme->eflags & MAP_ENTRY_IS_SUB_MAP) { 340 mac_cred_mmapped_drop_perms_recurse(td, cred, --- 61 unchanged lines hidden (view full) --- 402 } else { 403 if (revokeperms & VM_PROT_WRITE) { 404 /* 405 * In the more complicated case, flush out all 406 * pending changes to the object then turn it 407 * copy-on-write. 408 */ 409 vm_object_reference(object); | 334 335 if (!mac_mmap_revocation) 336 return; 337 338 vm_map_lock_read(map); 339 for (vme = map->header.next; vme != &map->header; vme = vme->next) { 340 if (vme->eflags & MAP_ENTRY_IS_SUB_MAP) { 341 mac_cred_mmapped_drop_perms_recurse(td, cred, --- 61 unchanged lines hidden (view full) --- 403 } else { 404 if (revokeperms & VM_PROT_WRITE) { 405 /* 406 * In the more complicated case, flush out all 407 * pending changes to the object then turn it 408 * copy-on-write. 409 */ 410 vm_object_reference(object); |
411 (void) vn_start_write(vp, &mp, V_WAIT); |
|
410 vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td); 411 VM_OBJECT_LOCK(object); 412 vm_object_page_clean(object, 413 OFF_TO_IDX(offset), 414 OFF_TO_IDX(offset + vme->end - vme->start + 415 PAGE_MASK), 416 OBJPC_SYNC); 417 VM_OBJECT_UNLOCK(object); 418 VOP_UNLOCK(vp, 0, td); | 412 vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td); 413 VM_OBJECT_LOCK(object); 414 vm_object_page_clean(object, 415 OFF_TO_IDX(offset), 416 OFF_TO_IDX(offset + vme->end - vme->start + 417 PAGE_MASK), 418 OBJPC_SYNC); 419 VM_OBJECT_UNLOCK(object); 420 VOP_UNLOCK(vp, 0, td); |
421 vn_finished_write(mp); |
|
419 vm_object_deallocate(object); 420 /* 421 * Why bother if there's no read permissions 422 * anymore? For the rest, we need to leave 423 * the write permissions on for COW, or 424 * remove them entirely if configured to. 425 */ 426 if (!mac_mmap_revocation_via_cow) { --- 249 unchanged lines hidden --- | 422 vm_object_deallocate(object); 423 /* 424 * Why bother if there's no read permissions 425 * anymore? For the rest, we need to leave 426 * the write permissions on for COW, or 427 * remove them entirely if configured to. 428 */ 429 if (!mac_mmap_revocation_via_cow) { --- 249 unchanged lines hidden --- |