On 4/10/22 22:06, Bart Van Assche wrote: > On 4/10/22 15:39, Bob Pearson wrote: >> Fixes: 3225717f6dfa ("RDMA/rxe: Replace red-black trees by carrays") > ^^^^^^^ > xarrays? > >> @@ -138,8 +140,10 @@ void *rxe_alloc(struct rxe_pool *pool) >> elem->obj = obj; >> kref_init(&elem->ref_cnt); >> - err = xa_alloc_cyclic(&pool->xa, &elem->index, elem, pool->limit, >> + xa_lock_irqsave(xa, flags); >> + err = __xa_alloc_cyclic(&pool->xa, &elem->index, elem, pool->limit, >> &pool->next, GFP_KERNEL); >> + xa_unlock_irqrestore(xa, flags); > > Please take a look at the xas_unlock_type() and xas_lock_type() calls in __xas_nomem(). I think that the above change will trigger a GFP_KERNEL allocation with interrupts disabled. My understanding is that GFP_KERNEL allocations may sleep and hence that the above code may cause __xas_nomem() to sleep with interrupts disabled. I don't think that is allowed. > > Thanks, > > Bart. You're right. I missed that. Zhu wants to write the patch so hopefully he's on top of that. For now we could use GFP_ATOMIC. Bob