On Tue Jan 22, 2008 at 12:37:45 +0100, Marc CHALAND wrote:
After more investigation, I've found that slab_alloc and slab_free on l4rm_region_cache are not all into a critical section (for example: l4rm_attach may be called by several threads). At first, I though region_list_lock aimed at that, but in fact, this is not the case.
My first idea is to put slab_alloc between l4rm_lock_region_list and l4rm_unlock_region_list into l4rm_region_desc_alloc. Same for slab_free. But I'm not sure this is a good idea. What is your opinion ?
You're right that the slab objects themselves were not locked. The fix was not as easy as proposed but I think I have fixed this (update l4env and l4rm packages). I hope this fixes your issue. Thanks for reporting, very valuable!
Adam