summaryrefslogtreecommitdiff
path: root/drivers/dma-buf/dma-buf-sysfs-stats.h
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2022-12-06 16:07:49 +0300
committerChristian König <christian.koenig@amd.com>2022-12-13 10:31:45 +0300
commitf728a5ea27c92133893590e731ce10f6561ced87 (patch)
tree63eb59e9cdfe516011c355091154c0111493717e /drivers/dma-buf/dma-buf-sysfs-stats.h
parentc4252650a8c4770b669398fe7270ed8c94fc0eba (diff)
downloadlinux-f728a5ea27c92133893590e731ce10f6561ced87.tar.xz
dma-buf: fix dma_buf_export init order v2
The init order and resulting error handling in dma_buf_export was pretty messy. Subordinate objects like the file and the sysfs kernel objects were initializing and wiring itself up with the object in the wrong order resulting not only in complicating and partially incorrect error handling, but also in publishing only halve initialized DMA-buf objects. Clean this up thoughtfully by allocating the file independent of the DMA-buf object. Then allocate and initialize the DMA-buf object itself, before publishing it through sysfs. If everything works as expected the file is then connected with the DMA-buf object and publish it through debugfs. Also adds the missing dma_resv_fini() into the error handling. v2: add some missing changes to dma_bug_getfile() and a missing NULL check in dma_buf_file_release() Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Michael J. Ruhl <michael.j.ruhl@intel.com> Reviewed-by: T.J. Mercier <tjmercier@google.com> Acked-by: Sumit Semwal <sumit.semwal@linaro.org> Link: https://patchwork.freedesktop.org/patch/msgid/20221209071535.933698-1-christian.koenig@amd.com
Diffstat (limited to 'drivers/dma-buf/dma-buf-sysfs-stats.h')
-rw-r--r--drivers/dma-buf/dma-buf-sysfs-stats.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/dma-buf/dma-buf-sysfs-stats.h b/drivers/dma-buf/dma-buf-sysfs-stats.h
index a49c6e2650cc..7a8a995b75ba 100644
--- a/drivers/dma-buf/dma-buf-sysfs-stats.h
+++ b/drivers/dma-buf/dma-buf-sysfs-stats.h
@@ -13,7 +13,7 @@
int dma_buf_init_sysfs_statistics(void);
void dma_buf_uninit_sysfs_statistics(void);
-int dma_buf_stats_setup(struct dma_buf *dmabuf);
+int dma_buf_stats_setup(struct dma_buf *dmabuf, struct file *file);
void dma_buf_stats_teardown(struct dma_buf *dmabuf);
#else
@@ -25,7 +25,7 @@ static inline int dma_buf_init_sysfs_statistics(void)
static inline void dma_buf_uninit_sysfs_statistics(void) {}
-static inline int dma_buf_stats_setup(struct dma_buf *dmabuf)
+static inline int dma_buf_stats_setup(struct dma_buf *dmabuf, struct file *file)
{
return 0;
}