android: Fix 32-bit app crashing in 64-bit Android
authorMauro Rossi <issor.oruam@gmail.com>
Tue, 11 Dec 2018 22:22:35 +0000 (23:22 +0100)
committerRobert Foss <robert.foss@collabora.com>
Tue, 18 Dec 2018 20:18:19 +0000 (21:18 +0100)
commit597725e9511f8c0405fdd8d92d749bce58c0bce3
treee233090edb01c2f07d0e110c8c5974eac873493c
parent2c02f1e610ebd4620852e53f88e8a605fdc936b2
android: Fix 32-bit app crashing in 64-bit Android

Seemingly the 64-bit int is always aligned to 8 in LP64.
But this is not hold in LP32.

Consequently sizeof(gralloc_drm_handle_t) are different
between LP64 (which is 18 ints) and LP32 (which is 16 ints).
As a result, 32-bit apps will crash in 64-bit OS since the
checking handle->base.numInts != GRALLOC_GBM_HANDLE_NUM_INTS
is true.

Fix it by always aligning 64-bit int to 8. Besides, to avoid
additional padding, just exchange the order of data_owner
and modifier. It aligns modifier to 8 natually.
This makes gralloc_drm_handle_t fit in 16 ints perfectly.

(v2) gralloc_drm_handle.h patch now applied in gralloc_handle.h
     and GRALLOC_HANDLE_VERSION updated to 4

Reported-by: Mauro Rossi <issor.oruam@gmail.com>
Signed-off-by: Chih-Wei Huang <cwhuang@linux.org.tw>
Reviewed-by: Robert Foss <robert.foss@collabora.com>
android/gralloc_handle.h