mirror of
https://github.com/espressif/esp-idf
synced 2025-03-11 10:09:08 -04:00
can: Fix semaphore take in critical section
This commit fixes can_reconfigure_alerts() which could lead to a call to xSemaphoreTake() whilst inside a critical section.
This commit is contained in:
parent
4741e6787d
commit
05adedcc72
@ -957,15 +957,16 @@ esp_err_t can_read_alerts(uint32_t *alerts, TickType_t ticks_to_wait)
|
||||
esp_err_t can_reconfigure_alerts(uint32_t alerts_enabled, uint32_t *current_alerts)
|
||||
{
|
||||
CAN_CHECK(p_can_obj != NULL, ESP_ERR_INVALID_STATE);
|
||||
|
||||
CAN_ENTER_CRITICAL();
|
||||
uint32_t cur_alerts;
|
||||
can_read_alerts(&cur_alerts, 0); //Clear any unhandled alerts
|
||||
//Clear any unhandled alerts
|
||||
if (current_alerts != NULL) {
|
||||
*current_alerts = p_can_obj->alerts_triggered;;
|
||||
}
|
||||
p_can_obj->alerts_triggered = 0;
|
||||
p_can_obj->alerts_enabled = alerts_enabled; //Update enabled alerts
|
||||
CAN_EXIT_CRITICAL();
|
||||
|
||||
if (current_alerts != NULL) {
|
||||
*current_alerts = cur_alerts;
|
||||
}
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user