firmware/br-ext-chip-allwinner/board/v83x/kernel/patches/00000-drivers_dma-buf_sw_sy...

50 lines
1.4 KiB
Diff

diff -drupN a/drivers/dma-buf/sw_sync.c b/drivers/dma-buf/sw_sync.c
--- a/drivers/dma-buf/sw_sync.c 2018-08-06 17:23:04.000000000 +0300
+++ b/drivers/dma-buf/sw_sync.c 2022-06-12 05:28:14.000000000 +0300
@@ -169,6 +169,11 @@ static bool timeline_fence_enable_signal
return true;
}
+static void timeline_fence_disable_signaling(struct fence *fence)
+{
+ return;
+}
+
static void timeline_fence_value_str(struct fence *fence,
char *str, int size)
{
@@ -187,6 +192,7 @@ static const struct fence_ops timeline_f
.get_driver_name = timeline_fence_get_driver_name,
.get_timeline_name = timeline_fence_get_timeline_name,
.enable_signaling = timeline_fence_enable_signaling,
+ .disable_signaling = timeline_fence_disable_signaling,
.signaled = timeline_fence_signaled,
.wait = fence_default_wait,
.release = timeline_fence_release,
@@ -216,7 +222,6 @@ static void sync_timeline_signal(struct
if (!timeline_fence_signaled(&pt->base))
break;
- list_del_init(&pt->link);
rb_erase(&pt->node, &obj->pt_tree);
/*
@@ -228,6 +233,7 @@ static void sync_timeline_signal(struct
* timeline_fence_release().
*/
fence_signal_locked(&pt->base);
+ list_del_init(&pt->link);
}
spin_unlock_irq(&obj->lock);
@@ -360,8 +366,8 @@ static long sw_sync_ioctl_create_fence(s
}
sync_file = sync_file_create(&pt->base);
+ fence_put(&pt->base);
if (!sync_file) {
- fence_put(&pt->base);
err = -ENOMEM;
goto err;
}