Invalidate processing register requests when clearing configuration.
This commit is contained in:
parent
1322a3b6a8
commit
0456ad0de8
|
|
@ -336,6 +336,12 @@ void ec_fsm_slave_state_reg_request(
|
|||
ec_slave_t *slave = fsm->slave;
|
||||
ec_reg_request_t *reg = fsm->reg_request;
|
||||
|
||||
if (!reg) {
|
||||
// configuration was cleared in the meantime
|
||||
fsm->state = ec_fsm_slave_state_ready;
|
||||
return;
|
||||
}
|
||||
|
||||
if (fsm->datagram->state != EC_DATAGRAM_RECEIVED) {
|
||||
EC_SLAVE_ERR(slave, "Failed to receive register"
|
||||
" request datagram: ");
|
||||
|
|
|
|||
|
|
@ -268,7 +268,18 @@ void ec_slave_config_detach(
|
|||
)
|
||||
{
|
||||
if (sc->slave) {
|
||||
ec_reg_request_t *reg;
|
||||
|
||||
sc->slave->config = NULL;
|
||||
|
||||
// invalidate processing register request
|
||||
list_for_each_entry(reg, &sc->reg_requests, list) {
|
||||
if (sc->slave->fsm.reg_request == reg) {
|
||||
sc->slave->fsm.reg_request = NULL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
sc->slave = NULL;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue