View | Details | Raw Unified | Return to bug 198431 | Differences between
and this patch

Collapse All | Expand All

(-)sys/compat/linprocfs/linprocfs.c (-4 / +5 lines)
Lines 1050-1062 linprocfs_doprocmaps(PFS_FILL_ARGS) Link Here
1050
		ino = 0;
1050
		ino = 0;
1051
		if (lobj) {
1051
		if (lobj) {
1052
			off = IDX_TO_OFF(lobj->size);
1052
			off = IDX_TO_OFF(lobj->size);
1053
			if (lobj->type == OBJT_VNODE) {
1053
			if (lobj->type == OBJT_VNODE)
1054
				vp = lobj->handle;
1054
				vp = lobj->handle;
1055
				if (vp)
1055
			else if (lobj->type == OBJT_SWAP && (lobj->flags & OBJ_TMPFS) != 0)
1056
					vref(vp);
1056
				vp = lobj->un_pager.swp.swp_tmpfs;
1057
			}
1058
			else
1057
			else
1059
				vp = NULL;
1058
				vp = NULL;
1059
			if (vp)
1060
				vref(vp);
1060
			if (lobj != obj)
1061
			if (lobj != obj)
1061
				VM_OBJECT_RUNLOCK(lobj);
1062
				VM_OBJECT_RUNLOCK(lobj);
1062
			flags = obj->flags;
1063
			flags = obj->flags;
(-)sys/dev/hwpmc/hwpmc_mod.c (-3 / +8 lines)
Lines 1655-1673 pmc_log_process_mappings(struct pmc_owner *po, struct proc *p) Link Here
1655
			continue;
1655
			continue;
1656
		}
1656
		}
1657
1657
1658
		if (lobj->type != OBJT_VNODE || lobj->handle == NULL) {
1658
		if ((lobj->type != OBJT_VNODE || lobj->handle == NULL) &&
1659
			(lobj->type != OBJT_SWAP || (lobj->flags & OBJ_TMPFS) == 0)) {
1659
			if (lobj != obj)
1660
			if (lobj != obj)
1660
				VM_OBJECT_RUNLOCK(lobj);
1661
				VM_OBJECT_RUNLOCK(lobj);
1661
			VM_OBJECT_RUNLOCK(obj);
1662
			VM_OBJECT_RUNLOCK(obj);
1662
			continue;
1663
			continue;
1663
		}
1664
		}
1664
1665
1666
		if (lobj->type == OBJT_VNODE)
1667
			vp = lobj->handle;
1668
		else if (lobj->type == OBJT_SWAP && (lobj->flags & OBJ_TMPFS) != 0)
1669
			vp = lobj->un_pager.swp.swp_tmpfs;
1670
1665
		/*
1671
		/*
1666
		 * Skip contiguous regions that point to the same
1672
		 * Skip contiguous regions that point to the same
1667
		 * vnode, so we don't emit redundant MAP-IN
1673
		 * vnode, so we don't emit redundant MAP-IN
1668
		 * directives.
1674
		 * directives.
1669
		 */
1675
		 */
1670
		if (entry->start == last_end && lobj->handle == last_vp) {
1676
		if (entry->start == last_end && vp == last_vp) {
1671
			last_end = entry->end;
1677
			last_end = entry->end;
1672
			if (lobj != obj)
1678
			if (lobj != obj)
1673
				VM_OBJECT_RUNLOCK(lobj);
1679
				VM_OBJECT_RUNLOCK(lobj);
Lines 1690-1696 pmc_log_process_mappings(struct pmc_owner *po, struct proc *p) Link Here
1690
		last_timestamp = map->timestamp;
1696
		last_timestamp = map->timestamp;
1691
		vm_map_unlock_read(map);
1697
		vm_map_unlock_read(map);
1692
1698
1693
		vp = lobj->handle;
1694
		vref(vp);
1699
		vref(vp);
1695
		if (lobj != obj)
1700
		if (lobj != obj)
1696
			VM_OBJECT_RUNLOCK(lobj);
1701
			VM_OBJECT_RUNLOCK(lobj);
(-)sys/fs/procfs/procfs_map.c (-2 / +10 lines)
Lines 171-178 procfs_doprocmap(PFS_FILL_ARGS) Link Here
171
				vref(vp);
171
				vref(vp);
172
				break;
172
				break;
173
			case OBJT_SWAP:
173
			case OBJT_SWAP:
174
				type = "swap";
174
				if ((lobj->flags & OBJ_TMPFS_NODE) != 0) {
175
				vp = NULL;
175
					type = "vnode";
176
					if ((lobj->flags & OBJ_TMPFS) != 0) {
177
						vp = lobj->un_pager.swp.swp_tmpfs;
178
						vref(vp);
179
					}
180
				} else {
181
					type = "swap";
182
					vp = NULL;
183
				}
176
				break;
184
				break;
177
			case OBJT_SG:
185
			case OBJT_SG:
178
			case OBJT_DEVICE:
186
			case OBJT_DEVICE:
(-)sys/kern/kern_proc.c (-2 / +18 lines)
Lines 2110-2116 sysctl_kern_proc_ovmmap(SYSCTL_HANDLER_ARGS) Link Here
2110
				vref(vp);
2110
				vref(vp);
2111
				break;
2111
				break;
2112
			case OBJT_SWAP:
2112
			case OBJT_SWAP:
2113
				kve->kve_type = KVME_TYPE_SWAP;
2113
				if ((lobj->flags & OBJ_TMPFS_NODE) != 0) {
2114
					kve->kve_type = KVME_TYPE_VNODE;
2115
					if ((lobj->flags & OBJ_TMPFS) != 0) {
2116
						vp = lobj->un_pager.swp.swp_tmpfs;
2117
						vref(vp);
2118
					}
2119
				} else {
2120
					kve->kve_type = KVME_TYPE_SWAP;
2121
				}
2114
				break;
2122
				break;
2115
			case OBJT_DEVICE:
2123
			case OBJT_DEVICE:
2116
				kve->kve_type = KVME_TYPE_DEVICE;
2124
				kve->kve_type = KVME_TYPE_DEVICE;
Lines 2336-2342 kern_proc_vmmap_out(struct proc *p, struct sbuf *sb) Link Here
2336
				vref(vp);
2344
				vref(vp);
2337
				break;
2345
				break;
2338
			case OBJT_SWAP:
2346
			case OBJT_SWAP:
2339
				kve->kve_type = KVME_TYPE_SWAP;
2347
				if ((lobj->flags & OBJ_TMPFS_NODE) != 0) {
2348
					kve->kve_type = KVME_TYPE_VNODE;
2349
					if ((lobj->flags & OBJ_TMPFS) != 0) {
2350
						vp = lobj->un_pager.swp.swp_tmpfs;
2351
						vref(vp);
2352
					}
2353
				} else {
2354
					kve->kve_type = KVME_TYPE_SWAP;
2355
				}
2340
				break;
2356
				break;
2341
			case OBJT_DEVICE:
2357
			case OBJT_DEVICE:
2342
				kve->kve_type = KVME_TYPE_DEVICE;
2358
				kve->kve_type = KVME_TYPE_DEVICE;
(-)sys/kern/sys_process.c (-1 / +8 lines)
Lines 402-410 ptrace_vm_entry(struct thread *td, struct proc *p, struct ptrace_vm_entry *pve) Link Here
402
			lobj = tobj;
402
			lobj = tobj;
403
			pve->pve_offset += tobj->backing_object_offset;
403
			pve->pve_offset += tobj->backing_object_offset;
404
		}
404
		}
405
		vp = (lobj->type == OBJT_VNODE) ? lobj->handle : NULL;
405
406
		if (lobj->type == OBJT_VNODE)
407
			vp = lobj->handle;
408
		else if (lobj->type == OBJT_SWAP && (lobj->flags & OBJ_TMPFS) != 0)
409
			vp = lobj->un_pager.swp.swp_tmpfs;
410
		else
411
			vp = NULL;
406
		if (vp != NULL)
412
		if (vp != NULL)
407
			vref(vp);
413
			vref(vp);
414
408
		if (lobj != obj)
415
		if (lobj != obj)
409
			VM_OBJECT_RUNLOCK(lobj);
416
			VM_OBJECT_RUNLOCK(lobj);
410
		VM_OBJECT_RUNLOCK(obj);
417
		VM_OBJECT_RUNLOCK(obj);

Return to bug 198431