Page MenuHomeFreeBSD

D2725.id5912.diff
No OneTemporary

D2725.id5912.diff

Index: sys/vm/uma_core.c
===================================================================
--- sys/vm/uma_core.c
+++ sys/vm/uma_core.c
@@ -1940,6 +1940,19 @@
args.dtor = dtor;
args.uminit = uminit;
args.fini = fini;
+#ifdef INVARIANTS
+ /*
+ * If a zone is being created with an empty constructor and destructor,
+ * pass UMA constructor/destructor which checks for memory use after
+ * free.
+ */
+ if ((!(flags & UMA_ZONE_ZINIT)) && ctor == NULL && dtor == NULL && uminit == NULL && fini == NULL) {
+ args.ctor = trash_ctor;
+ args.dtor = trash_dtor;
+ args.uminit = trash_init;
+ args.fini = trash_fini;
+ }
+#endif
args.align = align;
args.flags = flags;
args.keg = NULL;
Index: sys/vm/uma_dbg.c
===================================================================
--- sys/vm/uma_dbg.c
+++ sys/vm/uma_dbg.c
@@ -69,8 +69,13 @@
for (p = mem; cnt > 0; cnt--, p++)
if (*p != uma_junk) {
+#ifdef INVARIANTS
+ panic("Memory modified after free %p(%d) val=%x @ %p\n",
+ mem, size, *p, p);
+#else
printf("Memory modified after free %p(%d) val=%x @ %p\n",
mem, size, *p, p);
+#endif
return (0);
}
return (0);

File Metadata

Mime Type
text/plain
Expires
Mon, Apr 13, 4:13 AM (11 h, 3 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31393556
Default Alt Text
D2725.id5912.diff (1 KB)

Event Timeline