summaryrefslogtreecommitdiff
path: root/drivers/staging/nmf-cm/cm_syscall.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/nmf-cm/cm_syscall.c')
-rw-r--r--drivers/staging/nmf-cm/cm_syscall.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/drivers/staging/nmf-cm/cm_syscall.c b/drivers/staging/nmf-cm/cm_syscall.c
index ca8d664abb4..304b86ffee7 100644
--- a/drivers/staging/nmf-cm/cm_syscall.c
+++ b/drivers/staging/nmf-cm/cm_syscall.c
@@ -1115,6 +1115,33 @@ out:
return 0;
}
+
+inline int cmld_WriteComponentAttribute(struct cm_process_priv *procPriv,
+ CM_WriteComponentAttribute_t __user *param)
+{
+ CM_WriteComponentAttribute_t data;
+ char attrName[MAX_ATTRIBUTE_NAME_LENGTH];
+
+ /* Copy user input data in kernel space */
+ if (copy_from_user(&data.in, &param->in, sizeof(data.in)))
+ return -EFAULT;
+
+ if ((data.out.error = copy_string_from_user(attrName,
+ data.in.attrName,
+ sizeof(attrName))))
+ goto out;
+
+ data.out.error = CM_ENGINE_WriteComponentAttribute(data.in.component,
+ attrName,
+ data.in.value);
+out:
+ /* Copy results back to userspace */
+ if (copy_to_user(&param->out, &data.out, sizeof(data.out)))
+ return -EFAULT;
+ return 0;
+}
+
+
inline int cmld_GetExecutiveEngineHandle(struct cm_process_priv *procPriv,
CM_GetExecutiveEngineHandle_t __user *param)
{