diff options
author | Vitalii Demianets <vitas@nppfactor.kiev.ua> | 2013-06-20 15:36:00 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-06-25 01:31:21 +0200 |
commit | 34cb27528398738bea94852b99ef8fb05944ec41 (patch) | |
tree | 88a9e99282138bd21af563b98ab65ccc8ab088be /drivers/misc/mei/interrupt.c | |
parent | drivers: uio_dmem_genirq: Use of_match_ptr() macro (diff) | |
download | linux-34cb27528398738bea94852b99ef8fb05944ec41.tar.xz linux-34cb27528398738bea94852b99ef8fb05944ec41.zip |
UIO: Fix concurrency issue
In a SMP case there was a race condition issue between
uio_pdrv_genirq_irqcontrol() running on one CPU and irq handler on
another CPU. Fix it by spin_locking shared resources access inside irq
handler. Also:
- Change disable_irq to disable_irq_nosync to avoid deadlock, because
disable_irq waits for the completion of the irq handler;
- Change atomic bit-manipulation routines to their non-atomic
counterparts as we already are guarding the code by spinlock.
Signed-off-by: Vitalii Demianets <vitas@nppfactor.kiev.ua>
Reviewed-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/misc/mei/interrupt.c')
0 files changed, 0 insertions, 0 deletions