mirror of
https://gitlab.com/etherlab.org/ethercat.git
synced 2026-02-05 19:39:50 +08:00
Use -ENOBUFS to indicate insufficient preallocated buffer
This commit is contained in:
@@ -2079,7 +2079,7 @@ ec_request_state_t ecrt_sdo_request_state(
|
|||||||
* \ingroup ApplicationInterfaceRT
|
* \ingroup ApplicationInterfaceRT
|
||||||
* \return 0 on success, otherwise negative error code.
|
* \return 0 on success, otherwise negative error code.
|
||||||
* \retval -EINVAL Invalid input data, e.g. data size == 0.
|
* \retval -EINVAL Invalid input data, e.g. data size == 0.
|
||||||
* \retval -ENOMEM Reserved memory in ecrt_slave_config_create_sdo_request()
|
* \retval -ENOBUFS Reserved memory in ecrt_slave_config_create_sdo_request()
|
||||||
* too small.
|
* too small.
|
||||||
*/
|
*/
|
||||||
EC_PUBLIC_API int ecrt_sdo_request_write(
|
EC_PUBLIC_API int ecrt_sdo_request_write(
|
||||||
@@ -2220,7 +2220,7 @@ EC_PUBLIC_API ec_request_state_t ecrt_soe_request_state(
|
|||||||
* \ingroup ApplicationInterfaceRT
|
* \ingroup ApplicationInterfaceRT
|
||||||
* \return 0 on success, otherwise negative error code.
|
* \return 0 on success, otherwise negative error code.
|
||||||
* \retval -EINVAL Invalid input data, e.g. data size == 0.
|
* \retval -EINVAL Invalid input data, e.g. data size == 0.
|
||||||
* \retval -ENOMEM Reserved memory in ecrt_slave_config_create_soe_request()
|
* \retval -ENOBUFS Reserved memory in ecrt_slave_config_create_soe_request()
|
||||||
* too small.
|
* too small.
|
||||||
*/
|
*/
|
||||||
EC_PUBLIC_API int ecrt_soe_request_write(
|
EC_PUBLIC_API int ecrt_soe_request_write(
|
||||||
@@ -2342,6 +2342,8 @@ EC_PUBLIC_API size_t ecrt_voe_handler_data_size(
|
|||||||
*
|
*
|
||||||
* \ingroup ApplicationInterfaceRT
|
* \ingroup ApplicationInterfaceRT
|
||||||
* \return 0 on success, otherwise negative error code.
|
* \return 0 on success, otherwise negative error code.
|
||||||
|
* \retval -ENOBUFS Reserved memory in ecrt_slave_config_create_voe_handler
|
||||||
|
* too small.
|
||||||
*/
|
*/
|
||||||
EC_PUBLIC_API int ecrt_voe_handler_write(
|
EC_PUBLIC_API int ecrt_voe_handler_write(
|
||||||
ec_voe_handler_t *voe, /**< VoE handler. */
|
ec_voe_handler_t *voe, /**< VoE handler. */
|
||||||
@@ -2473,6 +2475,8 @@ ec_request_state_t ecrt_reg_request_state(
|
|||||||
*
|
*
|
||||||
* \ingroup ApplicationInterfaceRT
|
* \ingroup ApplicationInterfaceRT
|
||||||
* \return 0 on success, otherwise negative error code.
|
* \return 0 on success, otherwise negative error code.
|
||||||
|
* \retval -ENOBUFS Reserved memory in ecrt_slave_config_create_reg_request
|
||||||
|
* too small.
|
||||||
*/
|
*/
|
||||||
EC_PUBLIC_API int ecrt_reg_request_write(
|
EC_PUBLIC_API int ecrt_reg_request_write(
|
||||||
ec_reg_request_t *req, /**< Register request. */
|
ec_reg_request_t *req, /**< Register request. */
|
||||||
@@ -2493,6 +2497,8 @@ EC_PUBLIC_API int ecrt_reg_request_write(
|
|||||||
*
|
*
|
||||||
* \ingroup ApplicationInterfaceRT
|
* \ingroup ApplicationInterfaceRT
|
||||||
* \return 0 on success, otherwise negative error code.
|
* \return 0 on success, otherwise negative error code.
|
||||||
|
* \retval -ENOBUFS Reserved memory in ecrt_slave_config_create_reg_request
|
||||||
|
* too small.
|
||||||
*/
|
*/
|
||||||
EC_PUBLIC_API int ecrt_reg_request_read(
|
EC_PUBLIC_API int ecrt_reg_request_read(
|
||||||
ec_reg_request_t *req, /**< Register request. */
|
ec_reg_request_t *req, /**< Register request. */
|
||||||
|
|||||||
@@ -1309,7 +1309,7 @@ void ec_fsm_coe_down_start(
|
|||||||
if (slave->configured_rx_mailbox_size <
|
if (slave->configured_rx_mailbox_size <
|
||||||
EC_MBOX_HEADER_SIZE + EC_COE_DOWN_REQ_HEADER_SIZE) {
|
EC_MBOX_HEADER_SIZE + EC_COE_DOWN_REQ_HEADER_SIZE) {
|
||||||
EC_SLAVE_ERR(slave, "Mailbox too small!\n");
|
EC_SLAVE_ERR(slave, "Mailbox too small!\n");
|
||||||
request->errno = EOVERFLOW;
|
request->errno = ENOBUFS;
|
||||||
fsm->state = ec_fsm_coe_error;
|
fsm->state = ec_fsm_coe_error;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -2463,7 +2463,7 @@ void ec_fsm_coe_up_seg_response(
|
|||||||
EC_SLAVE_ERR(slave, "SDO upload 0x%04X:%02X failed: Fragment"
|
EC_SLAVE_ERR(slave, "SDO upload 0x%04X:%02X failed: Fragment"
|
||||||
" exceeding complete size!\n",
|
" exceeding complete size!\n",
|
||||||
request->index, request->subindex);
|
request->index, request->subindex);
|
||||||
request->errno = EOVERFLOW;
|
request->errno = ENOBUFS;
|
||||||
fsm->state = ec_fsm_coe_error;
|
fsm->state = ec_fsm_coe_error;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3626,7 +3626,7 @@ static ATTRIBUTES int ec_ioctl_sdo_request_write(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (data.size > req->mem_size)
|
if (data.size > req->mem_size)
|
||||||
return -ENOMEM;
|
return -ENOBUFS;
|
||||||
|
|
||||||
if (ec_copy_from_user(req->data, (void __user *) data.data,
|
if (ec_copy_from_user(req->data, (void __user *) data.data,
|
||||||
data.size, ctx))
|
data.size, ctx))
|
||||||
@@ -3870,7 +3870,7 @@ static ATTRIBUTES int ec_ioctl_soe_request_write(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (data.size > req->mem_size)
|
if (data.size > req->mem_size)
|
||||||
return -ENOMEM;
|
return -ENOBUFS;
|
||||||
|
|
||||||
if (ec_copy_from_user(req->data, (void __user *) data.data,
|
if (ec_copy_from_user(req->data, (void __user *) data.data,
|
||||||
data.size, ctx))
|
data.size, ctx))
|
||||||
@@ -4048,7 +4048,7 @@ static ATTRIBUTES int ec_ioctl_reg_request_write(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (io.transfer_size > reg->mem_size) {
|
if (io.transfer_size > reg->mem_size) {
|
||||||
return -EOVERFLOW;
|
return -ENOBUFS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ec_copy_from_user(reg->data, (void __user *) io.data,
|
if (ec_copy_from_user(reg->data, (void __user *) io.data,
|
||||||
@@ -4095,7 +4095,7 @@ static ATTRIBUTES int ec_ioctl_reg_request_read(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (io.transfer_size > reg->mem_size) {
|
if (io.transfer_size > reg->mem_size) {
|
||||||
return -EOVERFLOW;
|
return -ENOBUFS;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ecrt_reg_request_read(reg, io.address, io.transfer_size);
|
return ecrt_reg_request_read(reg, io.address, io.transfer_size);
|
||||||
@@ -4306,7 +4306,7 @@ static ATTRIBUTES int ec_ioctl_voe_write(
|
|||||||
|
|
||||||
if (data.size) {
|
if (data.size) {
|
||||||
if (data.size > ec_voe_handler_mem_size(voe))
|
if (data.size > ec_voe_handler_mem_size(voe))
|
||||||
return -EOVERFLOW;
|
return -ENOBUFS;
|
||||||
|
|
||||||
if (ec_copy_from_user(ecrt_voe_handler_data(voe),
|
if (ec_copy_from_user(ecrt_voe_handler_data(voe),
|
||||||
(void __user *) data.data, data.size, ctx))
|
(void __user *) data.data, data.size, ctx))
|
||||||
@@ -4482,7 +4482,7 @@ static ATTRIBUTES int ec_ioctl_slave_foe_read(
|
|||||||
if (request.data_size > io.buffer_size) {
|
if (request.data_size > io.buffer_size) {
|
||||||
EC_SLAVE_ERR(slave, "%s(): Buffer too small.\n", __func__);
|
EC_SLAVE_ERR(slave, "%s(): Buffer too small.\n", __func__);
|
||||||
ec_foe_request_clear(&request);
|
ec_foe_request_clear(&request);
|
||||||
return -EOVERFLOW;
|
return -ENOBUFS;
|
||||||
}
|
}
|
||||||
io.data_size = request.data_size;
|
io.data_size = request.data_size;
|
||||||
if (copy_to_user((void __user *) io.buffer,
|
if (copy_to_user((void __user *) io.buffer,
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ uint8_t *ec_slave_mbox_prepare_send(const ec_slave_t *slave, /**< slave */
|
|||||||
if (unlikely(total_size > slave->configured_rx_mailbox_size)) {
|
if (unlikely(total_size > slave->configured_rx_mailbox_size)) {
|
||||||
EC_SLAVE_ERR(slave, "Data size (%zu) does not fit in mailbox (%u)!\n",
|
EC_SLAVE_ERR(slave, "Data size (%zu) does not fit in mailbox (%u)!\n",
|
||||||
total_size, slave->configured_rx_mailbox_size);
|
total_size, slave->configured_rx_mailbox_size);
|
||||||
return ERR_PTR(-EOVERFLOW);
|
return ERR_PTR(-ENOBUFS);
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = ec_datagram_fpwr(datagram, slave->station_address,
|
ret = ec_datagram_fpwr(datagram, slave->station_address,
|
||||||
|
|||||||
@@ -3092,7 +3092,7 @@ int ecrt_master_sdo_upload(ec_master_t *master, uint16_t slave_position,
|
|||||||
} else {
|
} else {
|
||||||
if (request.data_size > target_size) {
|
if (request.data_size > target_size) {
|
||||||
EC_SLAVE_ERR(slave, "%s(): Buffer too small.\n", __func__);
|
EC_SLAVE_ERR(slave, "%s(): Buffer too small.\n", __func__);
|
||||||
ret = -EOVERFLOW;
|
ret = -ENOBUFS;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
memcpy(target, request.data, request.data_size);
|
memcpy(target, request.data, request.data_size);
|
||||||
@@ -3250,7 +3250,7 @@ int ecrt_master_read_idn(ec_master_t *master, uint16_t slave_position,
|
|||||||
} else { // success
|
} else { // success
|
||||||
if (request.data_size > target_size) {
|
if (request.data_size > target_size) {
|
||||||
EC_SLAVE_ERR(slave, "%s(): Buffer too small.\n", __func__);
|
EC_SLAVE_ERR(slave, "%s(): Buffer too small.\n", __func__);
|
||||||
ret = -EOVERFLOW;
|
ret = -ENOBUFS;
|
||||||
}
|
}
|
||||||
else { // data fits in buffer
|
else { // data fits in buffer
|
||||||
if (result_size) {
|
if (result_size) {
|
||||||
|
|||||||
Reference in New Issue
Block a user