equal
deleted
inserted
replaced
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; |