Fixed SDO download via library.
This commit is contained in:
parent
388e43b7e6
commit
f73cdc7a6b
|
|
@ -2273,6 +2273,7 @@ int ec_cdev_ioctl_sdo_request_write(
|
|||
ec_ioctl_sdo_request_t data;
|
||||
ec_slave_config_t *sc;
|
||||
ec_sdo_request_t *req;
|
||||
int ret;
|
||||
|
||||
if (unlikely(!priv->requested))
|
||||
return -EPERM;
|
||||
|
|
@ -2280,6 +2281,11 @@ int ec_cdev_ioctl_sdo_request_write(
|
|||
if (copy_from_user(&data, (void __user *) arg, sizeof(data)))
|
||||
return -EFAULT;
|
||||
|
||||
if (!data.size) {
|
||||
EC_ERR("Sdo download: Data size may not be zero!\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (down_interruptible(&master->master_sem))
|
||||
return -EINTR;
|
||||
|
||||
|
|
@ -2295,6 +2301,14 @@ int ec_cdev_ioctl_sdo_request_write(
|
|||
|
||||
up(&master->master_sem);
|
||||
|
||||
ret = ec_sdo_request_alloc(req, data.size);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (copy_from_user(req->data, (void __user *) data.data, data.size))
|
||||
return -EFAULT;
|
||||
|
||||
req->data_size = data.size;
|
||||
ecrt_sdo_request_write(req);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue