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

Subsystems: dma buffer sharing framework, the rest

STALE1840d

6 messages, 2 authors, 2021-07-20 · open the first message on its own page

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

From: <hidden>
Date: 2021-07-19 05:19:53

From: Guangming Cao <redacted>

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.

Signed-off-by: Guangming Cao <redacted>
---
 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);
-- 
2.17.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

From: Christian König <christian.koenig@amd.com>
Date: 2021-07-19 11:16:34

Hi Guangming,

Am 19.07.21 um 07:19 schrieb guangming.cao@mediatek.com:
From: Guangming Cao <redacted>

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.
quoted hunk
Signed-off-by: Guangming Cao <redacted>
---
  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);

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

From: Christian König <christian.koenig@amd.com>
Date: 2021-07-20 09:32:25

Am 19.07.21 um 07:19 schrieb guangming.cao@mediatek.com:
From: Guangming Cao <redacted>

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.
Please rebase on current drm-misc-next. The attachment sysfs files have 
been removed in the meantime.

Thanks,
Christian.
quoted hunk
Signed-off-by: Guangming Cao <redacted>
---
  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);

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

From: <hidden>
Date: 2021-07-20 10:32:11

From: Guangming Cao <redacted>

On Tue, 2021-07-20 at 11:31 +0200, Christian König wrote:
Am 19.07.21 um 07:19 schrieb guangming.cao@mediatek.com:
quoted
From: Guangming Cao <redacted>

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.
Please rebase on current drm-misc-next. The attachment sysfs files
have 
been removed in the meantime.

Thanks,
Christian.
updated, thanks for your reminding.
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

[PATCH v2] dma_buf: remove dmabuf sysfs teardown before release

From: <hidden>
Date: 2021-07-20 10:33:43

From: Guangming Cao <redacted>

Dmabuf sysfs stat is used for dmabuf info track.
But these file maybe still in use after buffer released,
should clear it before buffer release.

Signed-off-by: Guangming Cao <redacted>
---
 drivers/dma-buf/dma-buf.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
index b1a6db71c656..63d32261b63f 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);
-- 
2.17.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

Re: [PATCH v2] dma_buf: remove dmabuf sysfs teardown before release

From: Christian König <christian.koenig@amd.com>
Date: 2021-07-20 11:05:35

Am 20.07.21 um 12:31 schrieb guangming.cao@mediatek.com:
From: Guangming Cao <redacted>

Dmabuf sysfs stat is used for dmabuf info track.
But these file maybe still in use after buffer released,
should clear it before buffer release.

Signed-off-by: Guangming Cao <redacted>
Reviewed and pushed to drm-misc-next.

Thanks,
Christian.
quoted hunk
---
  drivers/dma-buf/dma-buf.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
index b1a6db71c656..63d32261b63f 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);

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help