gpu: ion: Add support for flushing via fd
Userspace clients pass fds around, not handles. Support flushing
via fd.
Change-Id: Ic22d9327e9fa72cb604c3010a2a6f798be8dfdb1
Signed-off-by: Laura Abbott <lauraa@codeaurora.org>
diff --git a/drivers/gpu/ion/ion.c b/drivers/gpu/ion/ion.c
index 50420ba..48dc9c0 100644
--- a/drivers/gpu/ion/ion.c
+++ b/drivers/gpu/ion/ion.c
@@ -1170,6 +1170,8 @@
{
struct ion_flush_data data;
unsigned long start, end;
+ struct ion_handle *handle = NULL;
+ int ret;
if (copy_from_user(&data, (void __user *)arg,
sizeof(struct ion_flush_data)))
@@ -1184,8 +1186,24 @@
return -EINVAL;
}
- return ion_do_cache_op(client, data.handle, data.vaddr,
- data.offset, data.length, cmd);
+ if (!data.handle) {
+ handle = ion_import_fd(client, data.fd);
+ if (IS_ERR_OR_NULL(handle)) {
+ pr_info("%s: Could not import handle: %d\n",
+ __func__, (int)handle);
+ return -EINVAL;
+ }
+ }
+
+ ret = ion_do_cache_op(client,
+ data.handle ? data.handle : handle,
+ data.vaddr, data.offset, data.length,
+ cmd);
+
+ if (!data.handle)
+ ion_free(client, handle);
+
+ break;
}
case ION_IOC_GET_FLAGS: