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

Collapse All | Expand All

(-)vm/vm_fault.c (+2 lines)
Lines 423-428 fast_failed: Link Here
423
		 * If the object is dead, we stop here
423
		 * If the object is dead, we stop here
424
		 */
424
		 */
425
		if (fs.object->flags & OBJ_DEAD) {
425
		if (fs.object->flags & OBJ_DEAD) {
426
printf("%d vm_fault OBJ_DEAD %p\n", curproc->p_pid, fs.object);
427
stack_print(&fs.object->dead_stack);
426
			unlock_and_deallocate(&fs);
428
			unlock_and_deallocate(&fs);
427
			return (KERN_PROTECTION_FAILURE);
429
			return (KERN_PROTECTION_FAILURE);
428
		}
430
		}
(-)vm/vm_object.c (+1 lines)
Lines 265-270 _vm_object_allocate(objtype_t type, vm_pindex_t si Link Here
265
	LIST_INIT(&object->rvq);
265
	LIST_INIT(&object->rvq);
266
#endif
266
#endif
267
	umtx_shm_object_init(object);
267
	umtx_shm_object_init(object);
268
stack_zero(&object->dead_stack);
268
}
269
}
269
270
270
/*
271
/*
(-)vm/vm_object.h (+4 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>
78
77
/*
79
/*
78
 *	Types defined:
80
 *	Types defined:
79
 *
81
 *
Lines 175-180 struct vm_object { Link Here
175
	struct ucred *cred;
177
	struct ucred *cred;
176
	vm_ooffset_t charge;
178
	vm_ooffset_t charge;
177
	void *umtx_data;
179
	void *umtx_data;
180
	struct stack dead_stack;
178
};
181
};
179
182
180
/*
183
/*
Lines 257-262 static __inline void Link Here
257
vm_object_set_flag(vm_object_t object, u_short bits)
260
vm_object_set_flag(vm_object_t object, u_short bits)
258
{
261
{
259
262
263
if ((bits & OBJ_DEAD) != 0) stack_save(&object->dead_stack);
260
	object->flags |= bits;
264
	object->flags |= bits;
261
}
265
}
262
266

Return to bug 204426