dmaengine fixes for v5.6-rc1
Fixes for: - Documentation build error fix - Fix dma_request_chan() error return - Remove unneeded conversion in idxd driver - Fix pointer check for dma_async_device_channel_register() - Fix slave-channel symlink cleanup -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEE+vs47OPLdNbVcHzyfBQHDyUjg0cFAl463NAACgkQfBQHDyUj g0eUOA//SZBP/bMgKujbOb976fVbTQrmVs+WnX+h3swkReG6SIkXZ4SWLvDDBiZ3 JVGHbibHdMDD6zYxhXwv/uFlU9hCdBlkinRBSvADQFi90cvN5GQNHwPTre7IxqWv eg1liuUmoVtR/F26BxUmvEoT5tIUwxPxAQOjnoLNlBBdfMjnJUcN+xI44DQvI29J xvKc3CiUiAebsOVcIb01I26z4CRYCTnTKnWT5Qh+3Dgb8r1oJUGb0i7fVb9+gFHM RpeWH73bVFRk8/Z89hIxLC87ZNX0HB6THLdf43ADSGVaEogN950mxV/FqDX/0K5D Kkao5kRyZrvdoHFF87kBIdv37nD5/jXqJ33uiloCZUFO+FiKvimvcw2rRVpGrMOl 76+5rjQ7X713hpeifa4w+3gZFMayEHpi7lpsUtYWM0VKYEf3Z1o1DPVkW8h0jwqF qfk+sxap2GYbkNcIDxva86O1rYDvqmy9OKQN61xpVdaaIC8uXqR9HT5gVAyinqgA t010v7C4LxIouC3/UoGHG9Xl/dzcBQIFsHTfgPuZeSHbSceLGk6aUZ/X4nOiWpru EgyClJxtYpRZlLQJiH+z8DYxCfBFa29MCd0U9N4vYvtKtqIDVaoK0+ejBksF0yaO Z4HqPkwD5OYBJ/jftKsPuukxCnSS8uStyDHeWsQBtpziQBp6lro= =5tXW -----END PGP SIGNATURE----- Merge tag 'dmaengine-fix-5.6-rc1' of git://git.infradead.org/users/vkoul/slave-dma Pull dmaengine fixes from Vinod Koul: "Fixes for: - Documentation build error fix - Fix dma_request_chan() error return - Remove unneeded conversion in idxd driver - Fix pointer check for dma_async_device_channel_register() - Fix slave-channel symlink cleanup" * tag 'dmaengine-fix-5.6-rc1' of git://git.infradead.org/users/vkoul/slave-dma: dmaengine: Cleanups for the slave <-> channel symlink support dmaengine: fix null ptr check for __dma_async_device_channel_register() dmaengine: idxd: fix boolconv.cocci warnings dmaengine: Fix return value for dma_request_chan() in case of failure dmaengine: doc: Properly indent metadata title
This commit is contained in:
commit
18ea671ba4
|
@ -756,22 +756,21 @@ struct dma_chan *dma_request_chan(struct device *dev, const char *name)
|
|||
}
|
||||
mutex_unlock(&dma_list_mutex);
|
||||
|
||||
if (!IS_ERR_OR_NULL(chan))
|
||||
goto found;
|
||||
|
||||
return ERR_PTR(-EPROBE_DEFER);
|
||||
if (IS_ERR_OR_NULL(chan))
|
||||
return chan ? chan : ERR_PTR(-EPROBE_DEFER);
|
||||
|
||||
found:
|
||||
chan->slave = dev;
|
||||
chan->name = kasprintf(GFP_KERNEL, "dma:%s", name);
|
||||
if (!chan->name)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
return chan;
|
||||
chan->slave = dev;
|
||||
|
||||
if (sysfs_create_link(&chan->dev->device.kobj, &dev->kobj,
|
||||
DMA_SLAVE_NAME))
|
||||
dev_err(dev, "Cannot create DMA %s symlink\n", DMA_SLAVE_NAME);
|
||||
dev_warn(dev, "Cannot create DMA %s symlink\n", DMA_SLAVE_NAME);
|
||||
if (sysfs_create_link(&dev->kobj, &chan->dev->device.kobj, chan->name))
|
||||
dev_err(dev, "Cannot create DMA %s symlink\n", chan->name);
|
||||
dev_warn(dev, "Cannot create DMA %s symlink\n", chan->name);
|
||||
|
||||
return chan;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(dma_request_chan);
|
||||
|
@ -830,13 +829,14 @@ void dma_release_channel(struct dma_chan *chan)
|
|||
/* drop PRIVATE cap enabled by __dma_request_channel() */
|
||||
if (--chan->device->privatecnt == 0)
|
||||
dma_cap_clear(DMA_PRIVATE, chan->device->cap_mask);
|
||||
|
||||
if (chan->slave) {
|
||||
sysfs_remove_link(&chan->dev->device.kobj, DMA_SLAVE_NAME);
|
||||
sysfs_remove_link(&chan->slave->kobj, chan->name);
|
||||
kfree(chan->name);
|
||||
chan->name = NULL;
|
||||
chan->slave = NULL;
|
||||
}
|
||||
sysfs_remove_link(&chan->dev->device.kobj, DMA_SLAVE_NAME);
|
||||
mutex_unlock(&dma_list_mutex);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(dma_release_channel);
|
||||
|
@ -962,6 +962,9 @@ static int __dma_async_device_channel_register(struct dma_device *device,
|
|||
|
||||
tchan = list_first_entry_or_null(&device->channels,
|
||||
struct dma_chan, device_node);
|
||||
if (!tchan)
|
||||
return -ENODEV;
|
||||
|
||||
if (tchan->dev) {
|
||||
idr_ref = tchan->dev->idr_ref;
|
||||
} else {
|
||||
|
|
|
@ -66,7 +66,7 @@ static inline bool is_idxd_wq_dmaengine(struct idxd_wq *wq)
|
|||
|
||||
static inline bool is_idxd_wq_cdev(struct idxd_wq *wq)
|
||||
{
|
||||
return wq->type == IDXD_WQT_USER ? true : false;
|
||||
return wq->type == IDXD_WQT_USER;
|
||||
}
|
||||
|
||||
static int idxd_config_bus_match(struct device *dev,
|
||||
|
|
Loading…
Reference in New Issue