Add compat handler for "get config" ioctl. Signed-off-by: Michael Zoran <mzoran@xxxxxxxxxxxx> --- .../vc04_services/interface/vchiq_arm/vchiq_arm.c | 32 ++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c index 98a67c434cfd..84ede7d1285f 100644 --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c @@ -1546,6 +1546,37 @@ vchiq_ioctl_compat_internal( DEBUG_TRACE(DEQUEUE_MESSAGE_LINE); } break; + case VCHIQ_IOC_GET_CONFIG32: { + VCHIQ_GET_CONFIG_T args; + struct vchiq_get_config32 args32; + VCHIQ_CONFIG_T config; + + if (copy_from_user(&args32, (const void __user *)arg, + sizeof(args32))) { + ret = -EFAULT; + break; + } + + args.pconfig = compat_ptr(args32.pconfig); + args.config_size = args32.config_size; + + if (args.config_size > sizeof(config)) { + ret = -EINVAL; + break; + } + + status = vchiq_get_config(instance, args.config_size, &config); + + if (status == VCHIQ_SUCCESS) { + if (copy_to_user((void __user *)args.pconfig, + &config, + args.config_size)) { + ret = -EFAULT; + break; + } + } + } break; + default: ret = -ENOTTY; break; @@ -1592,6 +1623,7 @@ vchiq_ioctl_compat(struct file *file, unsigned int cmd, unsigned long arg) case VCHIQ_IOC_QUEUE_BULK_RECEIVE32: case VCHIQ_IOC_AWAIT_COMPLETION32: case VCHIQ_IOC_DEQUEUE_MESSAGE32: + case VCHIQ_IOC_GET_CONFIG32: return vchiq_ioctl_compat_internal(file, cmd, arg); default: return vchiq_ioctl(file, cmd, arg); -- 2.11.0 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel