----- Original Message -----
>
> So I don't understand how you got into a loop unless the kmem_cache list
> walk-through is the real problem. If you were to print out the "cache"
> address each time through the do-while loop, does the list start repeating
> itself?
>
> And if that's true, perhaps the kmem_cache_init() should use the
> hq_open()/hq_enter()/hq_close() facility on each cache address to
> catch a duplicate (false) entry.
And if that's true, does the attached patch help?
Thanks,
Dave
--- memory.c 25 Apr 2012 15:06:59 -0000 1.278
+++ memory.c 25 Apr 2012 18:24:51 -0000
@@ -7918,6 +7918,7 @@
kmem_cache_downsize();
cache_buf = GETBUF(SIZE(kmem_cache_s));
+ hq_open();
do {
cache_count++;
@@ -7929,6 +7930,17 @@
error(INFO,
"%sunable to initialize kmem slab cache subsystem\n\n",
DUMPFILE() ? "\n" : "");
+ hq_close();
+ return;
+ }
+
+ if (!hq_enter(cache)) {
+ error(WARNING,
+ "%sduplicate kmem_cache entry in cache list: %lx\n",
+ DUMPFILE() ? "\n" : "", cache);
+ error(INFO, "unable to initialize kmem slab cache subsystem\n\n");
+ vt->flags |= KMEM_CACHE_UNAVAIL;
+ hq_close();
return;
}
@@ -7944,6 +7956,7 @@
*/
if (vt->flags & KMEM_CACHE_UNAVAIL) {
FREEBUF(cache_buf);
+ hq_close();
return;
}
@@ -7965,6 +7978,7 @@
} while (cache != cache_end);
+ hq_close();
FREEBUF(cache_buf);
vt->kmem_max_c_num = max_cnum;
--
Crash-utility mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/crash-utility