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

Collapse All | Expand All

(-)sys/vm/vm_fault.c (+2 lines)
Lines 426-431 fast_failed: Link Here
426
		 * If the object is dead, we stop here
426
		 * If the object is dead, we stop here
427
		 */
427
		 */
428
		if (fs.object->flags & OBJ_DEAD) {
428
		if (fs.object->flags & OBJ_DEAD) {
429
printf("%d vm_fault OBJ_DEAD %p\n", curproc->p_pid, fs.object);
430
stack_print(&fs.object->dead_stack);
429
			unlock_and_deallocate(&fs);
431
			unlock_and_deallocate(&fs);
430
			return (KERN_PROTECTION_FAILURE);
432
			return (KERN_PROTECTION_FAILURE);
431
		}
433
		}
(-)sys/vm/vm_object.c (+1 lines)
Lines 265-270 _vm_object_allocate(objtype_t type, vm_pindex_t si Link Here
265
#if VM_NRESERVLEVEL > 0
265
#if VM_NRESERVLEVEL > 0
266
	LIST_INIT(&object->rvq);
266
	LIST_INIT(&object->rvq);
267
#endif
267
#endif
268
stack_zero(&object->dead_stack);
268
}
269
}
269
270
270
/*
271
/*
(-)sys/vm/vm_object.h (-2 / +6 lines)
Lines 74-79 Link Here
74
74
75
#include <vm/_vm_radix.h>
75
#include <vm/_vm_radix.h>
76
76
77
#include <sys/stack.h>
77
/*
78
/*
78
 *	Types defined:
79
 *	Types defined:
79
 *
80
 *
Lines 110-117 struct vm_object { Link Here
110
	int shadow_count;		/* how many objects that this is a shadow for */
111
	int shadow_count;		/* how many objects that this is a shadow for */
111
	vm_memattr_t memattr;		/* default memory attribute for pages */
112
	vm_memattr_t memattr;		/* default memory attribute for pages */
112
	objtype_t type;			/* type of pager */
113
	objtype_t type;			/* type of pager */
113
	u_short flags;			/* see below */
114
	u_int flags;			/* see below */
114
	u_short pg_color;		/* (c) color of first page in obj */
115
	u_int pg_color;		/* (c) color of first page in obj */
115
	u_int paging_in_progress;	/* Paging (in or out) so don't collapse or destroy */
116
	u_int paging_in_progress;	/* Paging (in or out) so don't collapse or destroy */
116
	int resident_page_count;	/* number of resident pages */
117
	int resident_page_count;	/* number of resident pages */
117
	struct vm_object *backing_object; /* object that I'm a shadow of */
118
	struct vm_object *backing_object; /* object that I'm a shadow of */
Lines 174-179 struct vm_object { Link Here
174
	} un_pager;
175
	} un_pager;
175
	struct ucred *cred;
176
	struct ucred *cred;
176
	vm_ooffset_t charge;
177
	vm_ooffset_t charge;
178
struct stack dead_stack;
177
};
179
};
178
180
179
/*
181
/*
Lines 253-258 static __inline void Link Here
253
vm_object_set_flag(vm_object_t object, u_short bits)
255
vm_object_set_flag(vm_object_t object, u_short bits)
254
{
256
{
255
257
258
VM_OBJECT_ASSERT_WLOCKED(object);
259
if ((bits & OBJ_DEAD) != 0) stack_save(&object->dead_stack);
256
	object->flags |= bits;
260
	object->flags |= bits;
257
}
261
}
258
262

Return to bug 204426