A potential race in drivers/scsi/megaraid.ko

From: Pavel Andrianov
Date: Fri Aug 12 2016 - 06:52:33 EST


Hi!

There is a potential data race in drivers/scsi/megaraid.ko
Regards such case:

Thread 1 Thread 2
... ...
-> megaraid_probe_one
-> request_irq - now an interrupt may arise
-> mega_query_adapter
-> issue_scb_block
interrupt comes
-> megaraid_isr_iomapped
-> mega_runpendq
-> __mega_runpendq
-> issue_skb

In this case the structure 'mbox' is modified from two threads simultaneously. Or, more correct, the first modification is interrupted by the second one. Likely, the first thread should acquire the same spinlock adapter->lock as the second one.

--
Pavel Andrianov
Linux Verification Center, ISPRAS
web: http://linuxtesting.org
e-mail: andrianov@xxxxxxxxx