[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20220422062436.14384-3-mark-pk.tsai@mediatek.com>
Date: Fri, 22 Apr 2022 14:24:36 +0800
From: Mark-PK Tsai <mark-pk.tsai@...iatek.com>
To: <bjorn.andersson@...aro.org>, <mathieu.poirier@...aro.org>,
<robin.murphy@....com>
CC: <hch@....de>, <m.szyprowski@...sung.com>, <matthias.bgg@...il.com>,
<linux-remoteproc@...r.kernel.org>, <linux-kernel@...r.kernel.org>,
<iommu@...ts.linux-foundation.org>,
<linux-arm-kernel@...ts.infradead.org>,
<linux-mediatek@...ts.infradead.org>, <mark-pk.tsai@...iatek.com>,
<yj.chiang@...iatek.com>
Subject: [PATCH 2/2] remoteproc: Fix dma_mem leak after rproc_shutdown
Release dma coherent memory before rvdev is free in
rproc_rvdev_release().
Below is the kmemleak report:
unreferenced object 0xffffff8051c1a980 (size 128):
comm "sh", pid 4895, jiffies 4295026604 (age 15481.896s)
hex dump (first 32 bytes):
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
backtrace:
[<000000003a0f3ec0>] dma_declare_coherent_memory+0x44/0x11c
[<00000000ad243164>] rproc_add_virtio_dev+0xb8/0x20c
[<00000000d219c8e9>] rproc_vdev_do_start+0x18/0x24
[<00000000e694b468>] rproc_start+0x22c/0x3e0
[<000000000b938941>] rproc_boot+0x4a4/0x860
[<000000003c4dc532>] state_store.52856+0x10c/0x1b8
[<00000000df2297ac>] dev_attr_store+0x34/0x84
[<0000000083a53bdb>] sysfs_kf_write+0x60/0xbc
[<000000008ed830df>] kernfs_fop_write+0x198/0x458
[<0000000072b9ad06>] __vfs_write+0x50/0x210
[<00000000377d7469>] vfs_write+0xe4/0x1a8
[<00000000c3fc594e>] ksys_write+0x78/0x144
[<000000009aef6f4b>] __arm64_sys_write+0x1c/0x28
[<0000000003496a98>] el0_svc_common+0xc8/0x22c
[<00000000ea3fe7a3>] el0_svc_compat_handler+0x1c/0x28
[<00000000d1a85a4e>] el0_svc_compat+0x8/0x24
Signed-off-by: Mark-PK Tsai <mark-pk.tsai@...iatek.com>
---
drivers/remoteproc/remoteproc_core.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c
index c510125769b9..8e28290eefa9 100644
--- a/drivers/remoteproc/remoteproc_core.c
+++ b/drivers/remoteproc/remoteproc_core.c
@@ -461,6 +461,7 @@ static void rproc_rvdev_release(struct device *dev)
struct rproc_vdev *rvdev = container_of(dev, struct rproc_vdev, dev);
of_reserved_mem_device_release(dev);
+ dma_release_coherent_memory(dev);
kfree(rvdev);
}
--
2.18.0
Powered by blists - more mailing lists