summaryrefslogtreecommitdiff
authorVictor Wan <victor.wan@amlogic.com>2018-08-07 06:45:33 (GMT)
committer Victor Wan <victor.wan@amlogic.com>2018-08-07 06:46:15 (GMT)
commit7152bce7ca274fd6b9cfe9ac0db22feda27dcaae (patch)
tree03c9778f8ad9db4bc3cdf82e907577624d49849a
parentcc7b1eac546a25e7d4f2e057ef9b817af6597598 (diff)
downloadcommon-7152bce7ca274fd6b9cfe9ac0db22feda27dcaae.zip
common-7152bce7ca274fd6b9cfe9ac0db22feda27dcaae.tar.gz
common-7152bce7ca274fd6b9cfe9ac0db22feda27dcaae.tar.bz2
Revert "BACKPORT: dma-buf/sync_file: Allow multiple sync_files to wrap a single dma-fence"
This reverts commit 74fa0af47306baf118b32b7acdba4ae98eda7a7d. The commit 74fa0af caused GPU driver loading failed. Change-Id: I255eb6b7a26e3b00e4f11489ece49896ff004d79
Diffstat
-rw-r--r--drivers/dma-buf/sync_file.c5
-rw-r--r--include/linux/sync_file.h3
2 files changed, 3 insertions, 5 deletions
diff --git a/drivers/dma-buf/sync_file.c b/drivers/dma-buf/sync_file.c
index 267546a..56a45cd 100644
--- a/drivers/dma-buf/sync_file.c
+++ b/drivers/dma-buf/sync_file.c
@@ -278,7 +278,7 @@ static void sync_file_free(struct kref *kref)
struct sync_file *sync_file = container_of(kref, struct sync_file,
kref);
- if (test_bit(POLL_ENABLED, &sync_file->flags))
+ if (test_bit(POLL_ENABLED, &sync_file->fence->flags))
fence_remove_callback(sync_file->fence, &sync_file->cb);
fence_put(sync_file->fence);
kfree(sync_file);
@@ -298,8 +298,7 @@ static unsigned int sync_file_poll(struct file *file, poll_table *wait)
poll_wait(file, &sync_file->wq, wait);
- if (list_empty(&sync_file->cb.node) &&
- !test_and_set_bit(POLL_ENABLED, &sync_file->flags)) {
+ if (!test_and_set_bit(POLL_ENABLED, &sync_file->fence->flags)) {
if (fence_add_callback(sync_file->fence, &sync_file->cb,
fence_check_cb_func) < 0)
wake_up_all(&sync_file->wq);
diff --git a/include/linux/sync_file.h b/include/linux/sync_file.h
index 35ec6c4..aa17ccf 100644
--- a/include/linux/sync_file.h
+++ b/include/linux/sync_file.h
@@ -40,13 +40,12 @@ struct sync_file {
#endif
wait_queue_head_t wq;
- unsigned long flags;
struct fence *fence;
struct fence_cb cb;
};
-#define POLL_ENABLED 0
+#define POLL_ENABLED FENCE_FLAG_USER_BITS
struct sync_file *sync_file_create(struct fence *fence);
struct fence *sync_file_get_fence(int fd);