A potential race in drivers/atm/eni.ko

2016-08-08 Thread Pavel Andrianov

Hi!

There is a potential race in drivers/atm/eni.ko.

In the interrupt handler eni_int the field eni_dev->events is masked 
(line 1519) with a spinlock protection. In eni_start eni_dev->events is 
initialized (line 1844), but it is done after interrupts are requested 
(line 1813). Thus, the interrupt may occur while initialization is not 
finishing and the new value of events will be lost. Moreover, the 
spinlock, which is used in the interrupt handler, is also initialized 
(line 1842) after request_irq (line 1813).


--
Pavel Andrianov
Linux Verification Center, ISPRAS
web: http://linuxtesting.org
e-mail: andria...@ispras.ru



A potential race in drivers/atm/eni.ko

2016-08-08 Thread Pavel Andrianov

Hi!

There is a potential race in drivers/atm/eni.ko.

In the interrupt handler eni_int the field eni_dev->events is masked 
(line 1519) with a spinlock protection. In eni_start eni_dev->events is 
initialized (line 1844), but it is done after interrupts are requested 
(line 1813). Thus, the interrupt may occur while initialization is not 
finishing and the new value of events will be lost. Moreover, the 
spinlock, which is used in the interrupt handler, is also initialized 
(line 1842) after request_irq (line 1813).


--
Pavel Andrianov
Linux Verification Center, ISPRAS
web: http://linuxtesting.org
e-mail: andria...@ispras.ru