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

Collapse All | Expand All

(-)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
		}
(-)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
/*
(-)vm/vm_object.h (+3 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 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
if ((bits & OBJ_DEAD) != 0) stack_save(&object->dead_stack);
256
	object->flags |= bits;
259
	object->flags |= bits;
257
}
260
}
258
261

Return to bug 204426