mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-10 21:07:02 +09:00
staging: android: binder: Add copy_flat_binder_object()
This patch adds copy_flat_binder_object macro() that will help dereference struct flat_binder_object on 64bit systems where the structure differs between 32bit and 64bit userspace. This patch is a temporary patch that will be extended with 32bit compat handling. Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com> Signed-off-by: John Stultz <john.stultz@linaro.org>
This commit is contained in:
committed by
John Stultz
parent
63efce4893
commit
46bd93ed20
@@ -145,6 +145,11 @@ module_param_call(stop_on_user_error, binder_set_stop_on_user_error,
|
||||
#define deref_helper(ptr) (*(typeof(size_t *))ptr)
|
||||
#define size_helper(x) sizeof(x)
|
||||
|
||||
static inline struct flat_binder_object *copy_flat_binder_object(void __user *ptr)
|
||||
{
|
||||
return (struct flat_binder_object *)ptr;
|
||||
}
|
||||
|
||||
enum binder_stat_types {
|
||||
BINDER_STAT_PROC,
|
||||
BINDER_STAT_THREAD,
|
||||
@@ -1258,7 +1263,7 @@ static void binder_transaction_buffer_release(struct binder_proc *proc,
|
||||
debug_id, deref_helper(offp), buffer->data_size);
|
||||
continue;
|
||||
}
|
||||
fp = (struct flat_binder_object *)(buffer->data + deref_helper(offp));
|
||||
fp = copy_flat_binder_object(buffer->data + deref_helper(offp));
|
||||
switch (fp->type) {
|
||||
case BINDER_TYPE_BINDER:
|
||||
case BINDER_TYPE_WEAK_BINDER: {
|
||||
@@ -1512,7 +1517,7 @@ static void binder_transaction(struct binder_proc *proc,
|
||||
return_error = BR_FAILED_REPLY;
|
||||
goto err_bad_offset;
|
||||
}
|
||||
fp = (struct flat_binder_object *)(t->buffer->data + deref_helper(offp));
|
||||
fp = copy_flat_binder_object(t->buffer->data + deref_helper(offp));
|
||||
switch (fp->type) {
|
||||
case BINDER_TYPE_BINDER:
|
||||
case BINDER_TYPE_WEAK_BINDER: {
|
||||
|
||||
Reference in New Issue
Block a user