summaryrefslogtreecommitdiff
path: root/gralloc/gralloc_priv.h
diff options
context:
space:
mode:
authorChia-I Wu <olv@google.com>2017-05-08 12:46:13 -0700
committerChia-I Wu <olv@google.com>2017-05-08 13:35:44 -0700
commita12e37d48f32a32c919228a4649e50c89587db22 (patch)
tree15403bd1830e0b2d910d1fb152b8210cd873e61d /gralloc/gralloc_priv.h
parentfba69b56ea4522483aa0df21342362b219a146dd (diff)
downloadhikey-a12e37d48f32a32c919228a4649e50c89587db22.tar.gz
gralloc: fix numFds for framebuffer handles
It is an error to claim one fd, while the fd is -1. Bug: 37550237 Test: boots Change-Id: I7ad0d7c2bbe0bff8f462666bbf5fab38e9115578
Diffstat (limited to 'gralloc/gralloc_priv.h')
-rw-r--r--gralloc/gralloc_priv.h18
1 files changed, 15 insertions, 3 deletions
diff --git a/gralloc/gralloc_priv.h b/gralloc/gralloc_priv.h
index 547027e8..36159606 100644
--- a/gralloc/gralloc_priv.h
+++ b/gralloc/gralloc_priv.h
@@ -313,9 +313,21 @@ struct private_handle_t
{
const private_handle_t *hnd = (const private_handle_t *)h;
- if (!h || h->version != sizeof(native_handle) || h->numFds != sNumFds ||
- h->numInts != (sizeof(private_handle_t) - sizeof(native_handle)) / sizeof(int) - sNumFds ||
- hnd->magic != sMagic)
+ if (!h || h->version != sizeof(native_handle) || hnd->magic != sMagic)
+ {
+ return -EINVAL;
+ }
+
+ int numFds = sNumFds;
+ int numInts = (sizeof(private_handle_t) - sizeof(native_handle)) / sizeof(int) - sNumFds;
+#if GRALLOC_ARM_DMA_BUF_MODULE
+ if (hnd->share_fd < 0) {
+ numFds--;
+ numInts++;
+ }
+#endif
+
+ if (h->numFds != numFds || h->numInts != numInts)
{
return -EINVAL;
}