Hello everyone,

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,

Gabriel Moyano



Moyano, Gabriel (1):
  grlib/genirq: Taking into account that it could be more than one ISR
    enabled/disabled

 bsps/shared/grlib/irq/genirq.c | 5 +++++
 1 file changed, 5 insertions(+)

-- 
2.17.1

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to