----- 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