[PATCH] dma_buf: remove dmabuf sysfs teardown before release/detach

Christian König christian.koenig at amd.com
Mon Jul 19 04:16:13 PDT 2021


Hi Guangming,

Am 19.07.21 um 07:19 schrieb guangming.cao at mediatek.com:
> From: Guangming Cao <Guangming.Cao at mediatek.com>
>
> Dmabuf sysfs stat is used for dmabuf info track.
> but these file maybe still use after buffer release/detach,
> should clear it before buffer release/detach.

In general looks correct to me, but Hridya already send out a patch to 
partially revert the attachment sysfs files since they caused a bunch of 
more problems for some users.

Please wait for that to land in branch drm-misc-next and then rebase 
yours on top of it. I will give you a ping when that is done.

Thanks,
Christian.

>
> Signed-off-by: Guangming Cao <Guangming.Cao at mediatek.com>
> ---
>   drivers/dma-buf/dma-buf.c | 5 +++--
>   1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
> index 510b42771974..9fa4620bd4bb 100644
> --- a/drivers/dma-buf/dma-buf.c
> +++ b/drivers/dma-buf/dma-buf.c
> @@ -76,12 +76,12 @@ static void dma_buf_release(struct dentry *dentry)
>   	 */
>   	BUG_ON(dmabuf->cb_shared.active || dmabuf->cb_excl.active);
>   
> +	dma_buf_stats_teardown(dmabuf);
>   	dmabuf->ops->release(dmabuf);
>   
>   	if (dmabuf->resv == (struct dma_resv *)&dmabuf[1])
>   		dma_resv_fini(dmabuf->resv);
>   
> -	dma_buf_stats_teardown(dmabuf);
>   	module_put(dmabuf->owner);
>   	kfree(dmabuf->name);
>   	kfree(dmabuf);
> @@ -875,10 +875,11 @@ void dma_buf_detach(struct dma_buf *dmabuf, struct dma_buf_attachment *attach)
>   	dma_resv_lock(dmabuf->resv, NULL);
>   	list_del(&attach->node);
>   	dma_resv_unlock(dmabuf->resv);
> +
> +	dma_buf_attach_stats_teardown(attach);
>   	if (dmabuf->ops->detach)
>   		dmabuf->ops->detach(dmabuf, attach);
>   
> -	dma_buf_attach_stats_teardown(attach);
>   	kfree(attach);
>   }
>   EXPORT_SYMBOL_GPL(dma_buf_detach);




More information about the linux-arm-kernel mailing list