summaryrefslogtreecommitdiff
path: root/drivers/base/dmabuf-sync.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/base/dmabuf-sync.c')
-rw-r--r--drivers/base/dmabuf-sync.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/base/dmabuf-sync.c b/drivers/base/dmabuf-sync.c
index fdf3bce61a0..abfd8e3f009 100644
--- a/drivers/base/dmabuf-sync.c
+++ b/drivers/base/dmabuf-sync.c
@@ -320,7 +320,9 @@ EXPORT_SYMBOL(is_dmabuf_sync_supported);
* The caller can get a new sync object for buffer synchronization
* through this function.
*/
-struct dmabuf_sync *dmabuf_sync_init(void *priv, const char *name)
+struct dmabuf_sync *dmabuf_sync_init(const char *name,
+ struct dmabuf_sync_priv_ops *ops,
+ void *priv)
{
struct dmabuf_sync *sync;
@@ -330,6 +332,7 @@ struct dmabuf_sync *dmabuf_sync_init(void *priv, const char *name)
strncpy(sync->name, name, ARRAY_SIZE(sync->name) - 1);
+ sync->ops = ops;
sync->priv = priv;
INIT_LIST_HEAD(&sync->syncs);
mutex_init(&sync->lock);
@@ -353,6 +356,9 @@ void dmabuf_sync_fini(struct dmabuf_sync *sync)
if (WARN_ON(!sync))
return;
+ if (sync->ops && sync->ops->free)
+ sync->ops->free(sync->priv);
+
kfree(sync);
}
EXPORT_SYMBOL(dmabuf_sync_fini);