Commit 18ea671b authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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
parents 4fc2ea6a bad83565
Loading
Loading
Loading
Loading
+12 −9
Original line number Diff line number Diff line
@@ -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 {
+1 −1
Original line number Diff line number Diff line
@@ -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,
+2 −2

File changed.

Contains only whitespace changes.