AArch64: Calculate private_handle_t's numInts

A constant sNumInts with a value of 6 was being assigned to the numInts
attribute in the private_handle_t constructor, and was also used in the
validate method. That constant value is appropriate for 32-bit systems
but is not appropriate for a 64-bit system where uintptr_t used for
base attribute will be 64-bit.

sNumInts is now changed to a static inline function that calculates
numInts.

Change-Id: I482ddb5915c9ff55fb2e2a87887a0ec2dc2299ed
Signed-off-by: Marcus Oakland <marcus.oakland@arm.com>
Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
This commit is contained in:
Ashok Bhat 2014-02-06 14:11:08 +00:00 committed by David Butcher
parent 037335ebe8
commit d2be74aa57

View file

@ -79,7 +79,9 @@ struct private_handle_t {
int pid; int pid;
#ifdef __cplusplus #ifdef __cplusplus
static const int sNumInts = 6; static inline int sNumInts() {
return (((sizeof(private_handle_t) - sizeof(native_handle_t))/sizeof(int)) - sNumFds);
}
static const int sNumFds = 1; static const int sNumFds = 1;
static const int sMagic = 0x3141592; static const int sMagic = 0x3141592;
@ -88,7 +90,7 @@ struct private_handle_t {
base(0), pid(getpid()) base(0), pid(getpid())
{ {
version = sizeof(native_handle); version = sizeof(native_handle);
numInts = sNumInts; numInts = sNumInts();
numFds = sNumFds; numFds = sNumFds;
} }
~private_handle_t() { ~private_handle_t() {
@ -98,7 +100,7 @@ struct private_handle_t {
static int validate(const native_handle* h) { static int validate(const native_handle* h) {
const private_handle_t* hnd = (const private_handle_t*)h; const private_handle_t* hnd = (const private_handle_t*)h;
if (!h || h->version != sizeof(native_handle) || if (!h || h->version != sizeof(native_handle) ||
h->numInts != sNumInts || h->numFds != sNumFds || h->numInts != sNumInts() || h->numFds != sNumFds ||
hnd->magic != sMagic) hnd->magic != sMagic)
{ {
ALOGE("invalid gralloc handle (at %p)", h); ALOGE("invalid gralloc handle (at %p)", h);