master/cdev.c
changeset 949 e424c0074c67
parent 948 1cfab7161491
child 950 8b00e63fff90
equal deleted inserted replaced
948:1cfab7161491 949:e424c0074c67
   377                     break;
   377                     break;
   378                 }
   378                 }
   379                 break;
   379                 break;
   380             }
   380             }
   381 
   381 
       
   382         case EC_IOCTL_DATA:
       
   383             {
       
   384                 ec_ioctl_data_t data;
       
   385                 const ec_domain_t *domain;
       
   386 
       
   387                 if (copy_from_user(&data, (void __user *) arg, sizeof(data))) {
       
   388                     retval = -EFAULT;
       
   389                     break;
       
   390                 }
       
   391                 
       
   392                 if (!(domain = ec_master_find_domain(master, data.domain_index))) {
       
   393                     EC_ERR("Domain %u does not exist!\n", data.domain_index);
       
   394                     retval = -EINVAL;
       
   395                     break;
       
   396                 }
       
   397 
       
   398                 if (domain->data_size != data.data_size) {
       
   399                     EC_ERR("Data size mismatch %u/%u!\n",
       
   400                             data.data_size, domain->data_size);
       
   401                     retval = -EFAULT;
       
   402                     break;
       
   403                 }
       
   404 
       
   405                 if (copy_to_user((void __user *) data.target, domain->data,
       
   406                             domain->data_size)) {
       
   407                     retval = -EFAULT;
       
   408                     break;
       
   409                 }
       
   410                 break;
       
   411             }
       
   412 
   382         default:
   413         default:
   383             retval = -ENOIOCTLCMD;
   414             retval = -ENOIOCTLCMD;
   384     }
   415     }
   385 
   416 
   386     return retval;
   417     return retval;