int compat_put_timeval(const struct timeval *tv, void __user *utv) { if (COMPAT_USE_64BIT_TIME) return copy_to_user(utv, tv, sizeof *tv) ? -EFAULT : 0; else return put_compat_timeval(tv, utv); }
long compat_put_hwcam_buf_status_data(hwcam_buf_status_t *kp, hwcam_buf_status_t32 __user *up) { long ret = 0; ret = put_user(kp->id, &up->id); ret |= put_user(kp->buf_status, &up->buf_status); ret |= put_compat_timeval(&kp->tv, &up->tv); return ret; }
long compat_put_hwisp_stream_buf_info(hwisp_stream_buf_info_t *kp, hwisp_stream_buf_info_t32 __user *up) { long ret = 0; ret = put_user(kp->user_buffer_handle, &up->user_buffer_handle); ret |= put_user(kp->y_addr_phy, &up->y_addr_phy); ret |= put_user(kp->u_addr_phy, &up->u_addr_phy); ret |= put_user(kp->v_addr_phy, &up->v_addr_phy); ret |= put_user(kp->y_addr_iommu, &up->y_addr_iommu); ret |= put_user(kp->u_addr_iommu, &up->u_addr_iommu); ret |= put_user(kp->v_addr_iommu, &up->v_addr_iommu); ret |= put_user(kp->ion_fd, &up->ion_fd); ret |= put_user(kp->ion_vc_hdl, &up->ion_vc_hdl); ret |= put_user(kp->ion_vaddr, &up->ion_vaddr); ret |= put_compat_timeval(&kp->timestamp, &up->timestamp); ret |= copy_in_user(&up->port, &kp->port, sizeof(ovisp23_port_info_t)); return ret; }
asmlinkage int sys32_gettimeofday(struct compat_timeval __user *tv, struct timezone __user *tz) { extern void do_gettimeofday(struct timeval *tv); if (tv) { struct timeval ktv; do_gettimeofday(&ktv); if (put_compat_timeval(tv, &ktv)) return -EFAULT; } if (tz) { extern struct timezone sys_tz; if (copy_to_user(tz, &sys_tz, sizeof(sys_tz))) return -EFAULT; } return 0; }
long compat_put_hwcam_buf_status_data(hwcam_buf_status_t __user *pdata, hwcam_buf_status_t32 __user *pdata32) { long ret = 0; compat_int_t id; compat_int_t status; struct timeval tv; if (!access_ok(VERIFY_WRITE, pdata32, sizeof(hwcam_buf_status_t32))) return -EFAULT; ret = get_user(id, &pdata->id); ret |= put_user(id, &pdata32->id); ret |= get_user(status, &pdata->buf_status); ret |= put_user(status, &pdata32->buf_status); /* ret |= get_compat_timeval(&tv, &pdata->tv); */ ret |= copy_from_user(&tv, &pdata->tv, sizeof(tv)); ret |= put_compat_timeval(&tv, &pdata32->tv); return ret; }