ALLOC_MEMSET in kalloc.c and kmalloc.c

上级 79cbd037
...@@ -137,7 +137,7 @@ kfree_pool(struct kmem *m, char *v) ...@@ -137,7 +137,7 @@ kfree_pool(struct kmem *m, char *v)
panic("kfree_pool: unknown region %p", v); panic("kfree_pool: unknown region %p", v);
// Fill with junk to catch dangling refs. // Fill with junk to catch dangling refs.
if (kalloc_memset && kinited && m->size <= 16384) if (ALLOC_MEMSET && kinited && m->size <= 16384)
memset(v, 1, m->size); memset(v, 1, m->size);
acquire(&m->lock); acquire(&m->lock);
...@@ -189,7 +189,7 @@ kalloc_pool(struct kmem *km) ...@@ -189,7 +189,7 @@ kalloc_pool(struct kmem *km)
mtlabel(mtrace_label_block, r, m->size, "kalloc", sizeof("kalloc")); mtlabel(mtrace_label_block, r, m->size, "kalloc", sizeof("kalloc"));
if (kalloc_memset && m->size <= 16384) if (ALLOC_MEMSET && m->size <= 16384)
memset(r, 2, m->size); memset(r, 2, m->size);
return (char*)r; return (char*)r;
} }
...@@ -303,7 +303,7 @@ verifyfree(char *ptr, u64 nbytes) ...@@ -303,7 +303,7 @@ verifyfree(char *ptr, u64 nbytes)
if (KBASE < x && x < KBASE+(128ull<<30)) { if (KBASE < x && x < KBASE+(128ull<<30)) {
struct klockstat *kls = (struct klockstat *) x; struct klockstat *kls = (struct klockstat *) x;
if (kls->magic == LOCKSTAT_MAGIC) if (kls->magic == LOCKSTAT_MAGIC)
panic("verifyunmarked: LOCKSTAT_MAGIC %p(%lu):%p->%p", panic("LOCKSTAT_MAGIC %p(%lu):%p->%p",
ptr, nbytes, p, kls); ptr, nbytes, p, kls);
} }
} }
......
...@@ -12,5 +12,3 @@ struct kmem { ...@@ -12,5 +12,3 @@ struct kmem {
} __mpalign__; } __mpalign__;
extern struct kmem kmems[NCPU]; extern struct kmem kmems[NCPU];
enum { kalloc_memset = 1 };
...@@ -102,10 +102,13 @@ kmfree(void *ap) ...@@ -102,10 +102,13 @@ kmfree(void *ap)
b = (long) h->next; b = (long) h->next;
if(b < 0 || b > KMMAX) if(b < 0 || b > KMMAX)
panic("kmfree bad bucket"); panic("kmfree bad bucket");
verifyfree(ap, (1 << b) - sizeof(struct header));
verifyfree(ap, (1<<b) - sizeof(struct header));
if (ALLOC_MEMSET)
memset(ap, 3, (1<<b) - sizeof(struct header));
h->next = freelists[c].buckets[b]; h->next = freelists[c].buckets[b];
freelists[c].buckets[b] = h; freelists[c].buckets[b] = h;
mtunlabel(mtrace_label_heap, ap); mtunlabel(mtrace_label_heap, ap);
release(&freelists[c].lock); release(&freelists[c].lock);
} }
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#define SPINLOCK_DEBUG 1 // Debug spin locks #define SPINLOCK_DEBUG 1 // Debug spin locks
#define LOCKSTAT 0 #define LOCKSTAT 0
#define VERIFYFREE LOCKSTAT #define VERIFYFREE LOCKSTAT
#define ALLOC_MEMSET 1
#if defined(HW_josmp) #if defined(HW_josmp)
#define NCPU 16 // maximum number of CPUs #define NCPU 16 // maximum number of CPUs
#define MTRACE 0 #define MTRACE 0
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论