static long kgsl_ioctl_gpumem_get_info_compat(struct kgsl_device_private *dev_priv, unsigned int cmd, void *data) { int result = 0; struct kgsl_gpumem_get_info_compat *param32 = data; struct kgsl_gpumem_get_info param; param.gpuaddr = (unsigned long)param32->gpuaddr; param.id = param32->id; param.flags = param32->flags; param.size = (size_t)param32->size; param.mmapsize = (size_t)param32->mmapsize; param.useraddr = (unsigned long)param32->useraddr; result = kgsl_ioctl_gpumem_get_info(dev_priv, cmd, ¶m); param32->gpuaddr = gpuaddr_to_compat(param.gpuaddr); param32->id = param.id; param32->flags = param.flags; param32->size = sizet_to_compat(param.size); param32->mmapsize = sizet_to_compat(param.mmapsize); param32->useraddr = (compat_ulong_t)param.useraddr; return result; }
static long kgsl_ioctl_gpumem_alloc_id_compat(struct kgsl_device_private *dev_priv, unsigned int cmd, void *data) { int result = 0; struct kgsl_gpumem_alloc_id_compat *param32 = data; struct kgsl_gpumem_alloc_id param; param.id = param32->id; param.flags = param32->flags; param.size = (size_t)param32->size; param.mmapsize = (size_t)param32->mmapsize; param.gpuaddr = (unsigned long)param32->gpuaddr; /* * Since this is a 32 bit application the page aligned size is expected * to fit inside of 32 bits - check for overflow and return error if so */ if (PAGE_ALIGN(param.size) >= UINT_MAX) return -EINVAL; result = kgsl_ioctl_gpumem_alloc_id(dev_priv, cmd, ¶m); param32->id = param.id; param32->flags = param.flags; param32->size = sizet_to_compat(param.size); param32->mmapsize = sizet_to_compat(param.mmapsize); param32->gpuaddr = gpuaddr_to_compat(param.gpuaddr); return result; }
static long kgsl_ioctl_gpumem_alloc_compat(struct kgsl_device_private *dev_priv, unsigned int cmd, void *data) { int result = 0; struct kgsl_gpumem_alloc_compat *param32 = data; struct kgsl_gpumem_alloc param; param.gpuaddr = (unsigned long)param32->gpuaddr; param.size = (size_t)param32->size; param.flags = param32->flags; result = kgsl_ioctl_gpumem_alloc(dev_priv, cmd, ¶m); param32->gpuaddr = gpuaddr_to_compat(param.gpuaddr); param32->size = sizet_to_compat(param.size); param32->flags = param.flags; return result; }
static long kgsl_ioctl_map_user_mem_compat(struct kgsl_device_private *dev_priv, unsigned int cmd, void *data) { int result = 0; struct kgsl_map_user_mem_compat *param32 = data; struct kgsl_map_user_mem param; param.fd = param32->fd; param.gpuaddr = (unsigned long)param32->gpuaddr; param.len = (size_t)param32->len; param.offset = (size_t)param32->offset; param.hostptr = (unsigned long)param32->hostptr; param.memtype = param32->memtype; param.flags = param32->flags; result = kgsl_ioctl_map_user_mem(dev_priv, cmd, ¶m); param32->gpuaddr = gpuaddr_to_compat(param.gpuaddr); param32->flags = param.flags; return result; }