From owner-svn-src-all@FreeBSD.ORG Thu Dec 2 17:37:16 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B89661065679; Thu, 2 Dec 2010 17:37:16 +0000 (UTC) (envelope-from trasz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A59C48FC16; Thu, 2 Dec 2010 17:37:16 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oB2HbGeL020184; Thu, 2 Dec 2010 17:37:16 GMT (envelope-from trasz@svn.freebsd.org) Received: (from trasz@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oB2HbGVA020172; Thu, 2 Dec 2010 17:37:16 GMT (envelope-from trasz@svn.freebsd.org) Message-Id: <201012021737.oB2HbGVA020172@svn.freebsd.org> From: Edward Tomasz Napierala Date: Thu, 2 Dec 2010 17:37:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r216128 - in head/sys: fs/procfs kern vm X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 02 Dec 2010 17:37:16 -0000 Author: trasz Date: Thu Dec 2 17:37:16 2010 New Revision: 216128 URL: http://svn.freebsd.org/changeset/base/216128 Log: Replace pointer to "struct uidinfo" with pointer to "struct ucred" in "struct vm_object". This is required to make it possible to account for per-jail swap usage. Reviewed by: kib@ Tested by: pho@ Sponsored by: FreeBSD Foundation Modified: head/sys/fs/procfs/procfs_map.c head/sys/kern/uipc_shm.c head/sys/vm/default_pager.c head/sys/vm/swap_pager.c head/sys/vm/vm.h head/sys/vm/vm_fault.c head/sys/vm/vm_map.c head/sys/vm/vm_map.h head/sys/vm/vm_object.c head/sys/vm/vm_object.h Modified: head/sys/fs/procfs/procfs_map.c ============================================================================== --- head/sys/fs/procfs/procfs_map.c Thu Dec 2 17:36:47 2010 (r216127) +++ head/sys/fs/procfs/procfs_map.c Thu Dec 2 17:37:16 2010 (r216128) @@ -83,7 +83,7 @@ procfs_doprocmap(PFS_FILL_ARGS) vm_map_entry_t entry, tmp_entry; struct vnode *vp; char *fullpath, *freepath; - struct uidinfo *uip; + struct ucred *cred; int error, vfslocked; unsigned int last_timestamp; #ifdef COMPAT_FREEBSD32 @@ -136,7 +136,7 @@ procfs_doprocmap(PFS_FILL_ARGS) if (obj->shadow_count == 1) privateresident = obj->resident_page_count; } - uip = (entry->uip) ? entry->uip : (obj ? obj->uip : NULL); + cred = (entry->cred) ? entry->cred : (obj ? obj->cred : NULL); resident = 0; addr = entry->start; @@ -221,7 +221,7 @@ procfs_doprocmap(PFS_FILL_ARGS) (e_eflags & MAP_ENTRY_COW)?"COW":"NCOW", (e_eflags & MAP_ENTRY_NEEDS_COPY)?"NC":"NNC", type, fullpath, - uip ? "CH":"NCH", uip ? uip->ui_uid : -1); + cred ? "CH":"NCH", cred ? cred->cr_ruid : -1); if (freepath != NULL) free(freepath, M_TEMP); Modified: head/sys/kern/uipc_shm.c ============================================================================== --- head/sys/kern/uipc_shm.c Thu Dec 2 17:36:47 2010 (r216127) +++ head/sys/kern/uipc_shm.c Thu Dec 2 17:37:16 2010 (r216128) @@ -271,7 +271,7 @@ shm_dotruncate(struct shmfd *shmfd, off_ swap_pager_freespace(object, nobjsize, delta); /* Free the swap accounted for shm */ - swap_release_by_uid(delta, object->uip); + swap_release_by_cred(delta, object->cred); object->charge -= delta; /* @@ -314,7 +314,7 @@ shm_dotruncate(struct shmfd *shmfd, off_ /* Attempt to reserve the swap */ delta = ptoa(nobjsize - object->size); - if (!swap_reserve_by_uid(delta, object->uip)) { + if (!swap_reserve_by_cred(delta, object->cred)) { VM_OBJECT_UNLOCK(object); return (ENOMEM); } Modified: head/sys/vm/default_pager.c ============================================================================== --- head/sys/vm/default_pager.c Thu Dec 2 17:36:47 2010 (r216127) +++ head/sys/vm/default_pager.c Thu Dec 2 17:37:16 2010 (r216128) @@ -80,21 +80,19 @@ default_pager_alloc(void *handle, vm_oof vm_ooffset_t offset, struct ucred *cred) { vm_object_t object; - struct uidinfo *uip; if (handle != NULL) panic("default_pager_alloc: handle specified"); if (cred != NULL) { - uip = cred->cr_ruidinfo; - if (!swap_reserve_by_uid(size, uip)) + if (!swap_reserve_by_cred(size, cred)) return (NULL); - uihold(uip); + crhold(cred); } object = vm_object_allocate(OBJT_DEFAULT, OFF_TO_IDX(round_page(offset + size))); if (cred != NULL) { VM_OBJECT_LOCK(object); - object->uip = uip; + object->cred = cred; object->charge = size; VM_OBJECT_UNLOCK(object); } Modified: head/sys/vm/swap_pager.c ============================================================================== --- head/sys/vm/swap_pager.c Thu Dec 2 17:36:47 2010 (r216127) +++ head/sys/vm/swap_pager.c Thu Dec 2 17:37:16 2010 (r216128) @@ -174,16 +174,19 @@ int swap_reserve(vm_ooffset_t incr) { - return (swap_reserve_by_uid(incr, curthread->td_ucred->cr_ruidinfo)); + return (swap_reserve_by_cred(incr, curthread->td_ucred)); } int -swap_reserve_by_uid(vm_ooffset_t incr, struct uidinfo *uip) +swap_reserve_by_cred(vm_ooffset_t incr, struct ucred *cred) { vm_ooffset_t r, s; int res, error; static int curfail; static struct timeval lastfail; + struct uidinfo *uip; + + uip = cred->cr_ruidinfo; if (incr & PAGE_MASK) panic("swap_reserve: & PAGE_MASK"); @@ -249,17 +252,20 @@ swap_reserve_force(vm_ooffset_t incr) void swap_release(vm_ooffset_t decr) { - struct uidinfo *uip; + struct ucred *cred; PROC_LOCK(curproc); - uip = curthread->td_ucred->cr_ruidinfo; - swap_release_by_uid(decr, uip); + cred = curthread->td_ucred; + swap_release_by_cred(decr, cred); PROC_UNLOCK(curproc); } void -swap_release_by_uid(vm_ooffset_t decr, struct uidinfo *uip) +swap_release_by_cred(vm_ooffset_t decr, struct ucred *cred) { + struct uidinfo *uip; + + uip = cred->cr_ruidinfo; if (decr & PAGE_MASK) panic("swap_release: & PAGE_MASK"); @@ -579,9 +585,7 @@ swap_pager_alloc(void *handle, vm_ooffse { vm_object_t object; vm_pindex_t pindex; - struct uidinfo *uip; - uip = NULL; pindex = OFF_TO_IDX(offset + PAGE_MASK + size); if (handle) { mtx_lock(&Giant); @@ -595,19 +599,18 @@ swap_pager_alloc(void *handle, vm_ooffse object = vm_pager_object_lookup(NOBJLIST(handle), handle); if (object == NULL) { if (cred != NULL) { - uip = cred->cr_ruidinfo; - if (!swap_reserve_by_uid(size, uip)) { + if (!swap_reserve_by_cred(size, cred)) { sx_xunlock(&sw_alloc_sx); mtx_unlock(&Giant); return (NULL); } - uihold(uip); + crhold(cred); } object = vm_object_allocate(OBJT_DEFAULT, pindex); VM_OBJECT_LOCK(object); object->handle = handle; if (cred != NULL) { - object->uip = uip; + object->cred = cred; object->charge = size; } swp_pager_meta_build(object, 0, SWAPBLK_NONE); @@ -617,15 +620,14 @@ swap_pager_alloc(void *handle, vm_ooffse mtx_unlock(&Giant); } else { if (cred != NULL) { - uip = cred->cr_ruidinfo; - if (!swap_reserve_by_uid(size, uip)) + if (!swap_reserve_by_cred(size, cred)) return (NULL); - uihold(uip); + crhold(cred); } object = vm_object_allocate(OBJT_DEFAULT, pindex); VM_OBJECT_LOCK(object); if (cred != NULL) { - object->uip = uip; + object->cred = cred; object->charge = size; } swp_pager_meta_build(object, 0, SWAPBLK_NONE); Modified: head/sys/vm/vm.h ============================================================================== --- head/sys/vm/vm.h Thu Dec 2 17:36:47 2010 (r216127) +++ head/sys/vm/vm.h Thu Dec 2 17:37:16 2010 (r216128) @@ -141,12 +141,12 @@ struct kva_md_info { extern struct kva_md_info kmi; extern void vm_ksubmap_init(struct kva_md_info *); -struct uidinfo; +struct ucred; int swap_reserve(vm_ooffset_t incr); -int swap_reserve_by_uid(vm_ooffset_t incr, struct uidinfo *uip); +int swap_reserve_by_cred(vm_ooffset_t incr, struct ucred *cred); void swap_reserve_force(vm_ooffset_t incr); void swap_release(vm_ooffset_t decr); -void swap_release_by_uid(vm_ooffset_t decr, struct uidinfo *uip); +void swap_release_by_cred(vm_ooffset_t decr, struct ucred *cred); #endif /* VM_H */ Modified: head/sys/vm/vm_fault.c ============================================================================== --- head/sys/vm/vm_fault.c Thu Dec 2 17:36:47 2010 (r216127) +++ head/sys/vm/vm_fault.c Thu Dec 2 17:37:16 2010 (r216128) @@ -1166,14 +1166,14 @@ vm_fault_copy_entry(vm_map_t dst_map, vm dst_entry->offset = 0; dst_object->charge = dst_entry->end - dst_entry->start; if (fork_charge != NULL) { - KASSERT(dst_entry->uip == NULL, + KASSERT(dst_entry->cred == NULL, ("vm_fault_copy_entry: leaked swp charge")); - dst_object->uip = curthread->td_ucred->cr_ruidinfo; - uihold(dst_object->uip); + dst_object->cred = curthread->td_ucred; + crhold(dst_object->cred); *fork_charge += dst_object->charge; } else { - dst_object->uip = dst_entry->uip; - dst_entry->uip = NULL; + dst_object->cred = dst_entry->cred; + dst_entry->cred = NULL; } access = prot = dst_entry->protection; /* Modified: head/sys/vm/vm_map.c ============================================================================== --- head/sys/vm/vm_map.c Thu Dec 2 17:36:47 2010 (r216127) +++ head/sys/vm/vm_map.c Thu Dec 2 17:37:16 2010 (r216128) @@ -137,8 +137,8 @@ static void vm_map_zdtor(void *mem, int static void vmspace_zdtor(void *mem, int size, void *arg); #endif -#define ENTRY_CHARGED(e) ((e)->uip != NULL || \ - ((e)->object.vm_object != NULL && (e)->object.vm_object->uip != NULL && \ +#define ENTRY_CHARGED(e) ((e)->cred != NULL || \ + ((e)->object.vm_object != NULL && (e)->object.vm_object->cred != NULL && \ !((e)->eflags & MAP_ENTRY_NEEDS_COPY))) /* @@ -1095,7 +1095,7 @@ vm_map_insert(vm_map_t map, vm_object_t vm_map_entry_t prev_entry; vm_map_entry_t temp_entry; vm_eflags_t protoeflags; - struct uidinfo *uip; + struct ucred *cred; boolean_t charge_prev_obj; VM_MAP_ASSERT_LOCKED(map); @@ -1140,7 +1140,7 @@ vm_map_insert(vm_map_t map, vm_object_t if (cow & MAP_DISABLE_COREDUMP) protoeflags |= MAP_ENTRY_NOCOREDUMP; - uip = NULL; + cred = NULL; KASSERT((object != kmem_object && object != kernel_object) || ((object == kmem_object || object == kernel_object) && !(protoeflags & MAP_ENTRY_NEEDS_COPY)), @@ -1152,10 +1152,10 @@ vm_map_insert(vm_map_t map, vm_object_t if (!(cow & MAP_ACC_CHARGED) && !swap_reserve(end - start)) return (KERN_RESOURCE_SHORTAGE); KASSERT(object == NULL || (protoeflags & MAP_ENTRY_NEEDS_COPY) || - object->uip == NULL, + object->cred == NULL, ("OVERCOMMIT: vm_map_insert o %p", object)); - uip = curthread->td_ucred->cr_ruidinfo; - uihold(uip); + cred = curthread->td_ucred; + crhold(cred); if (object == NULL && !(protoeflags & MAP_ENTRY_NEEDS_COPY)) charge_prev_obj = TRUE; } @@ -1181,9 +1181,9 @@ charged: (prev_entry->eflags == protoeflags) && (prev_entry->end == start) && (prev_entry->wired_count == 0) && - (prev_entry->uip == uip || + (prev_entry->cred == cred || (prev_entry->object.vm_object != NULL && - (prev_entry->object.vm_object->uip == uip))) && + (prev_entry->object.vm_object->cred == cred))) && vm_object_coalesce(prev_entry->object.vm_object, prev_entry->offset, (vm_size_t)(prev_entry->end - prev_entry->start), @@ -1200,8 +1200,8 @@ charged: prev_entry->end = end; vm_map_entry_resize_free(map, prev_entry); vm_map_simplify_entry(map, prev_entry); - if (uip != NULL) - uifree(uip); + if (cred != NULL) + crfree(cred); return (KERN_SUCCESS); } @@ -1215,11 +1215,11 @@ charged: offset = prev_entry->offset + (prev_entry->end - prev_entry->start); vm_object_reference(object); - if (uip != NULL && object != NULL && object->uip != NULL && + if (cred != NULL && object != NULL && object->cred != NULL && !(prev_entry->eflags & MAP_ENTRY_NEEDS_COPY)) { /* Object already accounts for this uid. */ - uifree(uip); - uip = NULL; + crfree(cred); + cred = NULL; } } @@ -1235,7 +1235,7 @@ charged: new_entry = vm_map_entry_create(map); new_entry->start = start; new_entry->end = end; - new_entry->uip = NULL; + new_entry->cred = NULL; new_entry->eflags = protoeflags; new_entry->object.vm_object = object; @@ -1247,9 +1247,9 @@ charged: new_entry->max_protection = max; new_entry->wired_count = 0; - KASSERT(uip == NULL || !ENTRY_CHARGED(new_entry), + KASSERT(cred == NULL || !ENTRY_CHARGED(new_entry), ("OVERCOMMIT: vm_map_insert leaks vm_map %p", new_entry)); - new_entry->uip = uip; + new_entry->cred = cred; /* * Insert the new entry into the list @@ -1466,7 +1466,7 @@ vm_map_simplify_entry(vm_map_t map, vm_m (prev->max_protection == entry->max_protection) && (prev->inheritance == entry->inheritance) && (prev->wired_count == entry->wired_count) && - (prev->uip == entry->uip)) { + (prev->cred == entry->cred)) { vm_map_entry_unlink(map, prev); entry->start = prev->start; entry->offset = prev->offset; @@ -1484,8 +1484,8 @@ vm_map_simplify_entry(vm_map_t map, vm_m */ if (prev->object.vm_object) vm_object_deallocate(prev->object.vm_object); - if (prev->uip != NULL) - uifree(prev->uip); + if (prev->cred != NULL) + crfree(prev->cred); vm_map_entry_dispose(map, prev); } } @@ -1502,7 +1502,7 @@ vm_map_simplify_entry(vm_map_t map, vm_m (next->max_protection == entry->max_protection) && (next->inheritance == entry->inheritance) && (next->wired_count == entry->wired_count) && - (next->uip == entry->uip)) { + (next->cred == entry->cred)) { vm_map_entry_unlink(map, next); entry->end = next->end; vm_map_entry_resize_free(map, entry); @@ -1512,8 +1512,8 @@ vm_map_simplify_entry(vm_map_t map, vm_m */ if (next->object.vm_object) vm_object_deallocate(next->object.vm_object); - if (next->uip != NULL) - uifree(next->uip); + if (next->cred != NULL) + crfree(next->cred); vm_map_entry_dispose(map, next); } } @@ -1562,21 +1562,21 @@ _vm_map_clip_start(vm_map_t map, vm_map_ atop(entry->end - entry->start)); entry->object.vm_object = object; entry->offset = 0; - if (entry->uip != NULL) { - object->uip = entry->uip; + if (entry->cred != NULL) { + object->cred = entry->cred; object->charge = entry->end - entry->start; - entry->uip = NULL; + entry->cred = NULL; } } else if (entry->object.vm_object != NULL && ((entry->eflags & MAP_ENTRY_NEEDS_COPY) == 0) && - entry->uip != NULL) { + entry->cred != NULL) { VM_OBJECT_LOCK(entry->object.vm_object); - KASSERT(entry->object.vm_object->uip == NULL, - ("OVERCOMMIT: vm_entry_clip_start: both uip e %p", entry)); - entry->object.vm_object->uip = entry->uip; + KASSERT(entry->object.vm_object->cred == NULL, + ("OVERCOMMIT: vm_entry_clip_start: both cred e %p", entry)); + entry->object.vm_object->cred = entry->cred; entry->object.vm_object->charge = entry->end - entry->start; VM_OBJECT_UNLOCK(entry->object.vm_object); - entry->uip = NULL; + entry->cred = NULL; } new_entry = vm_map_entry_create(map); @@ -1585,8 +1585,8 @@ _vm_map_clip_start(vm_map_t map, vm_map_ new_entry->end = start; entry->offset += (start - entry->start); entry->start = start; - if (new_entry->uip != NULL) - uihold(entry->uip); + if (new_entry->cred != NULL) + crhold(entry->cred); vm_map_entry_link(map, entry->prev, new_entry); @@ -1632,21 +1632,21 @@ _vm_map_clip_end(vm_map_t map, vm_map_en atop(entry->end - entry->start)); entry->object.vm_object = object; entry->offset = 0; - if (entry->uip != NULL) { - object->uip = entry->uip; + if (entry->cred != NULL) { + object->cred = entry->cred; object->charge = entry->end - entry->start; - entry->uip = NULL; + entry->cred = NULL; } } else if (entry->object.vm_object != NULL && ((entry->eflags & MAP_ENTRY_NEEDS_COPY) == 0) && - entry->uip != NULL) { + entry->cred != NULL) { VM_OBJECT_LOCK(entry->object.vm_object); - KASSERT(entry->object.vm_object->uip == NULL, - ("OVERCOMMIT: vm_entry_clip_end: both uip e %p", entry)); - entry->object.vm_object->uip = entry->uip; + KASSERT(entry->object.vm_object->cred == NULL, + ("OVERCOMMIT: vm_entry_clip_end: both cred e %p", entry)); + entry->object.vm_object->cred = entry->cred; entry->object.vm_object->charge = entry->end - entry->start; VM_OBJECT_UNLOCK(entry->object.vm_object); - entry->uip = NULL; + entry->cred = NULL; } /* @@ -1657,8 +1657,8 @@ _vm_map_clip_end(vm_map_t map, vm_map_en new_entry->start = entry->end = end; new_entry->offset += (end - entry->start); - if (new_entry->uip != NULL) - uihold(entry->uip); + if (new_entry->cred != NULL) + crhold(entry->cred); vm_map_entry_link(map, entry, new_entry); @@ -1812,7 +1812,7 @@ vm_map_protect(vm_map_t map, vm_offset_t { vm_map_entry_t current, entry; vm_object_t obj; - struct uidinfo *uip; + struct ucred *cred; vm_prot_t old_prot; vm_map_lock(map); @@ -1858,7 +1858,7 @@ vm_map_protect(vm_map_t map, vm_offset_t continue; } - uip = curthread->td_ucred->cr_ruidinfo; + cred = curthread->td_ucred; obj = current->object.vm_object; if (obj == NULL || (current->eflags & MAP_ENTRY_NEEDS_COPY)) { @@ -1866,8 +1866,8 @@ vm_map_protect(vm_map_t map, vm_offset_t vm_map_unlock(map); return (KERN_RESOURCE_SHORTAGE); } - uihold(uip); - current->uip = uip; + crhold(cred); + current->cred = cred; continue; } @@ -1890,8 +1890,8 @@ vm_map_protect(vm_map_t map, vm_offset_t return (KERN_RESOURCE_SHORTAGE); } - uihold(uip); - obj->uip = uip; + crhold(cred); + obj->cred = cred; obj->charge = ptoa(obj->size); VM_OBJECT_UNLOCK(obj); } @@ -2640,16 +2640,16 @@ vm_map_entry_delete(vm_map_t map, vm_map size = entry->end - entry->start; map->size -= size; - if (entry->uip != NULL) { - swap_release_by_uid(size, entry->uip); - uifree(entry->uip); + if (entry->cred != NULL) { + swap_release_by_cred(size, entry->cred); + crfree(entry->cred); } if ((entry->eflags & MAP_ENTRY_IS_SUB_MAP) == 0 && (object != NULL)) { - KASSERT(entry->uip == NULL || object->uip == NULL || + KASSERT(entry->cred == NULL || object->cred == NULL || (entry->eflags & MAP_ENTRY_NEEDS_COPY), - ("OVERCOMMIT vm_map_entry_delete: both uip %p", entry)); + ("OVERCOMMIT vm_map_entry_delete: both cred %p", entry)); count = OFF_TO_IDX(size); offidxstart = OFF_TO_IDX(entry->offset); offidxend = offidxstart + count; @@ -2665,11 +2665,11 @@ vm_map_entry_delete(vm_map_t map, vm_map offidxstart < object->size) { size1 = object->size; object->size = offidxstart; - if (object->uip != NULL) { + if (object->cred != NULL) { size1 -= object->size; KASSERT(object->charge >= ptoa(size1), ("vm_map_entry_delete: object->charge < 0")); - swap_release_by_uid(ptoa(size1), object->uip); + swap_release_by_cred(ptoa(size1), object->cred); object->charge -= ptoa(size1); } } @@ -2855,7 +2855,7 @@ vm_map_copy_entry( { vm_object_t src_object; vm_offset_t size; - struct uidinfo *uip; + struct ucred *cred; int charged; VM_MAP_ASSERT_LOCKED(dst_map); @@ -2894,25 +2894,25 @@ vm_map_copy_entry( } vm_object_reference_locked(src_object); vm_object_clear_flag(src_object, OBJ_ONEMAPPING); - if (src_entry->uip != NULL && + if (src_entry->cred != NULL && !(src_entry->eflags & MAP_ENTRY_NEEDS_COPY)) { - KASSERT(src_object->uip == NULL, - ("OVERCOMMIT: vm_map_copy_entry: uip %p", + KASSERT(src_object->cred == NULL, + ("OVERCOMMIT: vm_map_copy_entry: cred %p", src_object)); - src_object->uip = src_entry->uip; + src_object->cred = src_entry->cred; src_object->charge = size; } VM_OBJECT_UNLOCK(src_object); dst_entry->object.vm_object = src_object; if (charged) { - uip = curthread->td_ucred->cr_ruidinfo; - uihold(uip); - dst_entry->uip = uip; + cred = curthread->td_ucred; + crhold(cred); + dst_entry->cred = cred; *fork_charge += size; if (!(src_entry->eflags & MAP_ENTRY_NEEDS_COPY)) { - uihold(uip); - src_entry->uip = uip; + crhold(cred); + src_entry->cred = cred; *fork_charge += size; } } @@ -2922,9 +2922,9 @@ vm_map_copy_entry( } else { dst_entry->object.vm_object = NULL; dst_entry->offset = 0; - if (src_entry->uip != NULL) { - dst_entry->uip = curthread->td_ucred->cr_ruidinfo; - uihold(dst_entry->uip); + if (src_entry->cred != NULL) { + dst_entry->cred = curthread->td_ucred; + crhold(dst_entry->cred); *fork_charge += size; } } @@ -3026,11 +3026,11 @@ vmspace_fork(struct vmspace *vm1, vm_oof atop(old_entry->end - old_entry->start)); old_entry->object.vm_object = object; old_entry->offset = 0; - if (old_entry->uip != NULL) { - object->uip = old_entry->uip; + if (old_entry->cred != NULL) { + object->cred = old_entry->cred; object->charge = old_entry->end - old_entry->start; - old_entry->uip = NULL; + old_entry->cred = NULL; } } @@ -3058,11 +3058,11 @@ vmspace_fork(struct vmspace *vm1, vm_oof } VM_OBJECT_LOCK(object); vm_object_clear_flag(object, OBJ_ONEMAPPING); - if (old_entry->uip != NULL) { - KASSERT(object->uip == NULL, ("vmspace_fork both uip")); - object->uip = old_entry->uip; + if (old_entry->cred != NULL) { + KASSERT(object->cred == NULL, ("vmspace_fork both cred")); + object->cred = old_entry->cred; object->charge = old_entry->end - old_entry->start; - old_entry->uip = NULL; + old_entry->cred = NULL; } VM_OBJECT_UNLOCK(object); @@ -3102,7 +3102,7 @@ vmspace_fork(struct vmspace *vm1, vm_oof MAP_ENTRY_IN_TRANSITION); new_entry->wired_count = 0; new_entry->object.vm_object = NULL; - new_entry->uip = NULL; + new_entry->cred = NULL; vm_map_entry_link(new_map, new_map->header.prev, new_entry); vmspace_map_entry_forked(vm1, vm2, new_entry); @@ -3241,7 +3241,7 @@ vm_map_growstack(struct proc *p, vm_offs size_t grow_amount, max_grow; rlim_t stacklim, vmemlim; int is_procstack, rv; - struct uidinfo *uip; + struct ucred *cred; Retry: PROC_LOCK(p); @@ -3412,17 +3412,17 @@ Retry: } grow_amount = addr - stack_entry->end; - uip = stack_entry->uip; - if (uip == NULL && stack_entry->object.vm_object != NULL) - uip = stack_entry->object.vm_object->uip; - if (uip != NULL && !swap_reserve_by_uid(grow_amount, uip)) + cred = stack_entry->cred; + if (cred == NULL && stack_entry->object.vm_object != NULL) + cred = stack_entry->object.vm_object->cred; + if (cred != NULL && !swap_reserve_by_cred(grow_amount, cred)) rv = KERN_NO_SPACE; /* Grow the underlying object if applicable. */ else if (stack_entry->object.vm_object == NULL || vm_object_coalesce(stack_entry->object.vm_object, stack_entry->offset, (vm_size_t)(stack_entry->end - stack_entry->start), - (vm_size_t)grow_amount, uip != NULL)) { + (vm_size_t)grow_amount, cred != NULL)) { map->size += (addr - stack_entry->end); /* Update the current entry. */ stack_entry->end = addr; @@ -3503,7 +3503,7 @@ vmspace_unshare(struct proc *p) newvmspace = vmspace_fork(oldvmspace, &fork_charge); if (newvmspace == NULL) return (ENOMEM); - if (!swap_reserve_by_uid(fork_charge, p->p_ucred->cr_ruidinfo)) { + if (!swap_reserve_by_cred(fork_charge, p->p_ucred)) { vmspace_free(newvmspace); return (ENOMEM); } @@ -3553,7 +3553,7 @@ vm_map_lookup(vm_map_t *var_map, /* IN/ vm_prot_t prot; vm_prot_t fault_type = fault_typea; vm_object_t eobject; - struct uidinfo *uip; + struct ucred *cred; vm_ooffset_t size; RetryLookup:; @@ -3627,19 +3627,19 @@ RetryLookup:; if (vm_map_lock_upgrade(map)) goto RetryLookup; - if (entry->uip == NULL) { + if (entry->cred == NULL) { /* * The debugger owner is charged for * the memory. */ - uip = curthread->td_ucred->cr_ruidinfo; - uihold(uip); - if (!swap_reserve_by_uid(size, uip)) { - uifree(uip); + cred = curthread->td_ucred; + crhold(cred); + if (!swap_reserve_by_cred(size, cred)) { + crfree(cred); vm_map_unlock(map); return (KERN_RESOURCE_SHORTAGE); } - entry->uip = uip; + entry->cred = cred; } vm_object_shadow( &entry->object.vm_object, @@ -3647,19 +3647,19 @@ RetryLookup:; atop(size)); entry->eflags &= ~MAP_ENTRY_NEEDS_COPY; eobject = entry->object.vm_object; - if (eobject->uip != NULL) { + if (eobject->cred != NULL) { /* * The object was not shadowed. */ - swap_release_by_uid(size, entry->uip); - uifree(entry->uip); - entry->uip = NULL; - } else if (entry->uip != NULL) { + swap_release_by_cred(size, entry->cred); + crfree(entry->cred); + entry->cred = NULL; + } else if (entry->cred != NULL) { VM_OBJECT_LOCK(eobject); - eobject->uip = entry->uip; + eobject->cred = entry->cred; eobject->charge = size; VM_OBJECT_UNLOCK(eobject); - entry->uip = NULL; + entry->cred = NULL; } vm_map_lock_downgrade(map); @@ -3682,12 +3682,12 @@ RetryLookup:; entry->object.vm_object = vm_object_allocate(OBJT_DEFAULT, atop(size)); entry->offset = 0; - if (entry->uip != NULL) { + if (entry->cred != NULL) { VM_OBJECT_LOCK(entry->object.vm_object); - entry->object.vm_object->uip = entry->uip; + entry->object.vm_object->cred = entry->cred; entry->object.vm_object->charge = size; VM_OBJECT_UNLOCK(entry->object.vm_object); - entry->uip = NULL; + entry->cred = NULL; } vm_map_lock_downgrade(map); } @@ -3861,14 +3861,14 @@ DB_SHOW_COMMAND(map, vm_map_print) db_indent -= 2; } } else { - if (entry->uip != NULL) - db_printf(", uip %d", entry->uip->ui_uid); + if (entry->cred != NULL) + db_printf(", ruid %d", entry->cred->cr_ruid); db_printf(", object=%p, offset=0x%jx", (void *)entry->object.vm_object, (uintmax_t)entry->offset); - if (entry->object.vm_object && entry->object.vm_object->uip) - db_printf(", obj uip %d charge %jx", - entry->object.vm_object->uip->ui_uid, + if (entry->object.vm_object && entry->object.vm_object->cred) + db_printf(", obj ruid %d charge %jx", + entry->object.vm_object->cred->cr_ruid, (uintmax_t)entry->object.vm_object->charge); if (entry->eflags & MAP_ENTRY_COW) db_printf(", copy (%s)", Modified: head/sys/vm/vm_map.h ============================================================================== --- head/sys/vm/vm_map.h Thu Dec 2 17:36:47 2010 (r216127) +++ head/sys/vm/vm_map.h Thu Dec 2 17:37:16 2010 (r216128) @@ -114,7 +114,7 @@ struct vm_map_entry { vm_inherit_t inheritance; /* inheritance */ int wired_count; /* can be paged if = 0 */ vm_pindex_t lastr; /* last read */ - struct uidinfo *uip; /* tmp storage for creator ref */ + struct ucred *cred; /* tmp storage for creator ref */ }; #define MAP_ENTRY_NOSYNC 0x0001 Modified: head/sys/vm/vm_object.c ============================================================================== --- head/sys/vm/vm_object.c Thu Dec 2 17:36:47 2010 (r216127) +++ head/sys/vm/vm_object.c Thu Dec 2 17:37:16 2010 (r216128) @@ -213,7 +213,7 @@ _vm_object_allocate(objtype_t type, vm_p object->ref_count = 1; object->memattr = VM_MEMATTR_DEFAULT; object->flags = 0; - object->uip = NULL; + object->cred = NULL; object->charge = 0; if ((object->type == OBJT_DEFAULT) || (object->type == OBJT_SWAP)) object->flags = OBJ_ONEMAPPING; @@ -634,15 +634,15 @@ vm_object_destroy(vm_object_t object) /* * Release the allocation charge. */ - if (object->uip != NULL) { + if (object->cred != NULL) { KASSERT(object->type == OBJT_DEFAULT || object->type == OBJT_SWAP, - ("vm_object_terminate: non-swap obj %p has uip", + ("vm_object_terminate: non-swap obj %p has cred", object)); - swap_release_by_uid(object->charge, object->uip); + swap_release_by_cred(object->charge, object->cred); object->charge = 0; - uifree(object->uip); - object->uip = NULL; + crfree(object->cred); + object->cred = NULL; } /* @@ -1247,9 +1247,9 @@ vm_object_split(vm_map_entry_t entry) orig_object->backing_object_offset + entry->offset; new_object->backing_object = source; } - if (orig_object->uip != NULL) { - new_object->uip = orig_object->uip; - uihold(orig_object->uip); + if (orig_object->cred != NULL) { + new_object->cred = orig_object->cred; + crhold(orig_object->cred); new_object->charge = ptoa(size); KASSERT(orig_object->charge >= ptoa(size), ("orig_object->charge < 0")); @@ -1928,20 +1928,20 @@ vm_object_coalesce(vm_object_t prev_obje /* * Account for the charge. */ - if (prev_object->uip != NULL) { + if (prev_object->cred != NULL) { /* * If prev_object was charged, then this mapping, * althought not charged now, may become writable - * later. Non-NULL uip in the object would prevent + * later. Non-NULL cred in the object would prevent * swap reservation during enabling of the write * access, so reserve swap now. Failed reservation * cause allocation of the separate object for the map * entry, and swap reservation for this entry is * managed in appropriate time. */ - if (!reserved && !swap_reserve_by_uid(ptoa(next_size), - prev_object->uip)) { + if (!reserved && !swap_reserve_by_cred(ptoa(next_size), + prev_object->cred)) { return (FALSE); } prev_object->charge += ptoa(next_size); @@ -1959,7 +1959,7 @@ vm_object_coalesce(vm_object_t prev_obje swap_pager_freespace(prev_object, next_pindex, next_size); #if 0 - if (prev_object->uip != NULL) { + if (prev_object->cred != NULL) { KASSERT(prev_object->charge >= ptoa(prev_object->size - next_pindex), ("object %p overcharged 1 %jx %jx", prev_object, @@ -2111,10 +2111,10 @@ DB_SHOW_COMMAND(object, vm_object_print_ return; db_iprintf( - "Object %p: type=%d, size=0x%jx, res=%d, ref=%d, flags=0x%x uip %d charge %jx\n", + "Object %p: type=%d, size=0x%jx, res=%d, ref=%d, flags=0x%x ruid %d charge %jx\n", object, (int)object->type, (uintmax_t)object->size, object->resident_page_count, object->ref_count, object->flags, - object->uip ? object->uip->ui_uid : -1, (uintmax_t)object->charge); + object->cred ? object->cred->cr_ruid : -1, (uintmax_t)object->charge); db_iprintf(" sref=%d, backing_object(%d)=(%p)+0x%jx\n", object->shadow_count, object->backing_object ? object->backing_object->ref_count : 0, Modified: head/sys/vm/vm_object.h ============================================================================== --- head/sys/vm/vm_object.h Thu Dec 2 17:36:47 2010 (r216127) +++ head/sys/vm/vm_object.h Thu Dec 2 17:37:16 2010 (r216128) @@ -143,7 +143,7 @@ struct vm_object { int swp_bcount; } swp; } un_pager; - struct uidinfo *uip; + struct ucred *cred; vm_ooffset_t charge; };