On Mon, Apr 11, 2022 at 11:06 AM Bart Van Assche <bvanassche@xxxxxxx> 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. I will send V2. Zhu Yanjun > > Thanks, > > Bart.