On 21-06-18, 14:28, Matthew Wilcox wrote: > Simpler and shorter code. I couldn't find ida_alloc/ida_free in 4.18-rc1 so I assume this will go thru tree adding this so: Acked-by: Vinod Koul <vkoul@xxxxxxxxxx> > > Signed-off-by: Matthew Wilcox <willy@xxxxxxxxxxxxx> > --- > drivers/dma/dmaengine.c | 20 +++++--------------- > 1 file changed, 5 insertions(+), 15 deletions(-) > > diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c > index 08ba8473a284..1e9bdadfc312 100644 > --- a/drivers/dma/dmaengine.c > +++ b/drivers/dma/dmaengine.c > @@ -161,9 +161,7 @@ static void chan_dev_release(struct device *dev) > > chan_dev = container_of(dev, typeof(*chan_dev), device); > if (atomic_dec_and_test(chan_dev->idr_ref)) { > - mutex_lock(&dma_list_mutex); > - ida_remove(&dma_ida, chan_dev->dev_id); > - mutex_unlock(&dma_list_mutex); > + ida_free(&dma_ida, chan_dev->dev_id); > kfree(chan_dev->idr_ref); > } > kfree(chan_dev); > @@ -896,16 +894,10 @@ static bool device_has_all_tx_types(struct dma_device *device) > > static int get_dma_id(struct dma_device *device) > { > - int rc; > - > - do { > - if (!ida_pre_get(&dma_ida, GFP_KERNEL)) > - return -ENOMEM; > - mutex_lock(&dma_list_mutex); > - rc = ida_get_new(&dma_ida, &device->dev_id); > - mutex_unlock(&dma_list_mutex); > - } while (rc == -EAGAIN); > + int rc = ida_alloc(&dma_ida, GFP_KERNEL); > > + if (rc >= 0) > + device->dev_id = rc; > return rc; > } > > @@ -1090,9 +1082,7 @@ int dma_async_device_register(struct dma_device *device) > err_out: > /* if we never registered a channel just release the idr */ > if (atomic_read(idr_ref) == 0) { > - mutex_lock(&dma_list_mutex); > - ida_remove(&dma_ida, device->dev_id); > - mutex_unlock(&dma_list_mutex); > + ida_free(&dma_ida, device->dev_id); > kfree(idr_ref); > return rc; > } > -- > 2.17.1 -- ~Vinod -- To unsubscribe from this list: send the line "unsubscribe dmaengine" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html