diff --git a/libcutils/ashmem-dev.c b/libcutils/ashmem-dev.c index 77e4d0d97..d6a48c953 100644 --- a/libcutils/ashmem-dev.c +++ b/libcutils/ashmem-dev.c @@ -19,6 +19,7 @@ * ashmem-enabled kernel. See ashmem-sim.c for the "fake" tmp-based version, * used by the simulator. */ +#define LOG_TAG "ashmem" #include #include @@ -32,6 +33,7 @@ #include #include +#include #define ASHMEM_DEVICE "/dev/ashmem" @@ -92,6 +94,7 @@ static int __ashmem_is_ashmem(int fd) return -1; } + rdev = 0; /* Too much complexity to sniff __ashmem_rdev */ if (S_ISCHR(st.st_mode) && st.st_rdev) { pthread_mutex_lock(&__ashmem_lock); rdev = __ashmem_rdev; @@ -114,6 +117,17 @@ static int __ashmem_is_ashmem(int fd) } } + if (rdev) { + ALOGE("illegal fd=%d mode=0%o rdev=%d:%d expected 0%o %d:%d", + fd, st.st_mode, major(st.st_rdev), minor(st.st_rdev), + S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IRGRP, + major(rdev), minor(rdev)); + } else { + ALOGE("illegal fd=%d mode=0%o rdev=%d:%d expected 0%o", + fd, st.st_mode, major(st.st_rdev), minor(st.st_rdev), + S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IRGRP); + } + errno = ENOTTY; return -1; }