summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHuang Shijie <sjhuang@iluvatar.ai>2018-08-22 10:40:27 +0800
committerVinod Koul <vkoul@kernel.org>2018-08-27 11:16:04 +0530
commit111b009f7e8bcdfc8d565b1f0e3ee5072bb7490b (patch)
tree8f50bd17840261c04a0853ff21a4e083204b7f25
parent5b394b2ddf0347bef56e50c69a58773c94343ff3 (diff)
downloadlinux-111b009f7e8bcdfc8d565b1f0e3ee5072bb7490b.tar.gz
linux-111b009f7e8bcdfc8d565b1f0e3ee5072bb7490b.tar.bz2
linux-111b009f7e8bcdfc8d565b1f0e3ee5072bb7490b.zip
dmaengine: mic_x100_dma: use devm_kzalloc to fix an issue
The following patch introduced an issue. commit f6206f00d8c5 ("dmaengine: mic_x100_dma: use the new helper to simplify the code") This issue is : kfree(mic_dma_dev) ..... dma_async_device_unregister(mic_dma_dev->device); Free the memory, and use it again. So use devm_kzalloc to allocate mic_dma_dev to fix it. When the Devres try to release the resources, it will call release at the following order: dma_async_device_unregister(mic_dma_dev->device); ..... kfree(mic_dma_dev) Fixes: f6206f00d8c5 ("dmaengine: mic_x100_dma: use the new helper to simplify the code") Signed-off-by: Huang Shijie <sjhuang@iluvatar.ai> Signed-off-by: Vinod Koul <vkoul@kernel.org>
-rw-r--r--drivers/dma/mic_x100_dma.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/drivers/dma/mic_x100_dma.c b/drivers/dma/mic_x100_dma.c
index b76cb17d879c..adfd316db1a8 100644
--- a/drivers/dma/mic_x100_dma.c
+++ b/drivers/dma/mic_x100_dma.c
@@ -639,7 +639,7 @@ static struct mic_dma_device *mic_dma_dev_reg(struct mbus_device *mbdev,
int ret;
struct device *dev = &mbdev->dev;
- mic_dma_dev = kzalloc(sizeof(*mic_dma_dev), GFP_KERNEL);
+ mic_dma_dev = devm_kzalloc(dev, sizeof(*mic_dma_dev), GFP_KERNEL);
if (!mic_dma_dev) {
ret = -ENOMEM;
goto alloc_error;
@@ -664,7 +664,6 @@ static struct mic_dma_device *mic_dma_dev_reg(struct mbus_device *mbdev,
reg_error:
mic_dma_uninit(mic_dma_dev);
init_error:
- kfree(mic_dma_dev);
mic_dma_dev = NULL;
alloc_error:
dev_err(dev, "Error at %s %d ret=%d\n", __func__, __LINE__, ret);
@@ -674,7 +673,6 @@ alloc_error:
static void mic_dma_dev_unreg(struct mic_dma_device *mic_dma_dev)
{
mic_dma_uninit(mic_dma_dev);
- kfree(mic_dma_dev);
}
/* DEBUGFS CODE */