mirror of
https://gitlab.com/etherlab.org/ethercat.git
synced 2026-08-18 17:17:23 +08:00
releasing of refcounted requests fixed: do not call EC_SLAVE_DBG without valid slave
This commit is contained in:
+1
-1
@@ -864,9 +864,9 @@ int ec_cdev_ioctl_slave_sdo_upload(
|
||||
if (!(request->slave = ec_master_find_slave(
|
||||
master, 0, data.slave_position))) {
|
||||
ec_mutex_unlock(&master->master_mutex);
|
||||
kref_put(&request->refcount,ec_master_sdo_request_release);
|
||||
EC_MASTER_ERR(master, "Slave %u does not exist!\n",
|
||||
data.slave_position);
|
||||
kref_put(&request->refcount,ec_master_sdo_request_release);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
||||
+10
-5
@@ -1240,7 +1240,8 @@ void ec_fsm_master_state_reg_request(
|
||||
void ec_master_sii_write_request_release(struct kref *ref)
|
||||
{
|
||||
ec_sii_write_request_t *request = container_of(ref, ec_sii_write_request_t, refcount);
|
||||
EC_SLAVE_DBG(request->slave, 1, "Releasing SII write request %p.\n",request);
|
||||
if (request->slave)
|
||||
EC_SLAVE_DBG(request->slave, 1, "Releasing SII write request %p.\n",request);
|
||||
kfree(request->words);
|
||||
kfree(request);
|
||||
}
|
||||
@@ -1253,7 +1254,8 @@ void ec_master_sii_write_request_release(struct kref *ref)
|
||||
void ec_master_reg_request_release(struct kref *ref)
|
||||
{
|
||||
ec_reg_request_t *request = container_of(ref, ec_reg_request_t, refcount);
|
||||
EC_SLAVE_DBG(request->slave, 1, "Releasing reg request %p.\n",request);
|
||||
if (request->slave)
|
||||
EC_SLAVE_DBG(request->slave, 1, "Releasing reg request %p.\n",request);
|
||||
if (request->data)
|
||||
kfree(request->data);
|
||||
kfree(request);
|
||||
@@ -1267,7 +1269,8 @@ void ec_master_reg_request_release(struct kref *ref)
|
||||
void ec_master_sdo_request_release(struct kref *ref)
|
||||
{
|
||||
ec_master_sdo_request_t *request = container_of(ref, ec_master_sdo_request_t, refcount);
|
||||
EC_SLAVE_DBG(request->slave, 1, "Releasing SDO request %p.\n",request);
|
||||
if (request->slave)
|
||||
EC_SLAVE_DBG(request->slave, 1, "Releasing SDO request %p.\n",request);
|
||||
ec_sdo_request_clear(&request->req);
|
||||
kfree(request);
|
||||
}
|
||||
@@ -1280,7 +1283,8 @@ void ec_master_sdo_request_release(struct kref *ref)
|
||||
void ec_master_foe_request_release(struct kref *ref)
|
||||
{
|
||||
ec_master_foe_request_t *request = container_of(ref, ec_master_foe_request_t, refcount);
|
||||
EC_SLAVE_DBG(request->slave, 1, "Releasing FoE request %p.\n",request);
|
||||
if (request->slave)
|
||||
EC_SLAVE_DBG(request->slave, 1, "Releasing FoE request %p.\n",request);
|
||||
ec_foe_request_clear(&request->req);
|
||||
kfree(request);
|
||||
}
|
||||
@@ -1293,7 +1297,8 @@ void ec_master_foe_request_release(struct kref *ref)
|
||||
void ec_master_soe_request_release(struct kref *ref)
|
||||
{
|
||||
ec_master_soe_request_t *request = container_of(ref, ec_master_soe_request_t, refcount);
|
||||
EC_SLAVE_DBG(request->slave, 1, "Releasing SoE request %p.\n",request);
|
||||
if (request->slave)
|
||||
EC_SLAVE_DBG(request->slave, 1, "Releasing SoE request %p.\n",request);
|
||||
ec_soe_request_clear(&request->req);
|
||||
kfree(request);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user