[PATCH 0/1] grlib/genirq: Issue when enabling/disabling interrupt
gabriel.moyano at dlr.de
Mon Apr 12 09:15:58 UTC 2021
I've found what can be an issue in the function genirq_set_active(): under some conditions it can return a value greater than 1.
This function is used by genirq_enable() and genirq_disable() and both of them returns the value returned by genirq_set_active(). According to the documentation in genirq.h, they should return -1, 0 or 1.
When this issue can happen? If there are 3 entries in the list of IRQ and 2 of them are already enabled, the variable `enabled` would be 2, because of `enabled += isrentry->enabled`.
As a possible solution, the value of `enabled` can changed to 1 if it's greater than 1 (see the patch) or maybe improve the search.
Thanks in advance,
Moyano, Gabriel (1):
grlib/genirq: Taking into account that it could be more than one ISR
bsps/shared/grlib/irq/genirq.c | 5 +++++
1 file changed, 5 insertions(+)
More information about the devel