diff options
| author | Ian Abbott <[email protected]> | 2014-10-29 17:35:12 +0000 |
|---|---|---|
| committer | Greg Kroah-Hartman <[email protected]> | 2014-10-30 13:29:31 -0700 |
| commit | 0a43f75ef57fcf20b9637fa49889e6721ceb5ea7 (patch) | |
| tree | d88b8a8677bb521ae77ce04bc93d794c0c33aa96 /tools/perf/scripts/python | |
| parent | ab784e5075698ed3b767d5e264a50aab39add209 (diff) | |
staging: comedi: das16: use spin-lock when setting timer
"das16" sets a timer running in `das16_cmd_exec()` and sets
`devpriv->timer_running` to indicate that it is running. The timer
expiration routine `das16_timer_interrupt()` checks
`devpriv->timer_running` to check whether it needs to reschedule the
timer, but this is not synchronized with `das16_cmd_exec()`. Since
`das16_cancel()` acquires the `dev->spinlock` spin-lock when clearing
`devpriv->timer_running` and removing the timer from the queue, use the
same spin-lock in `das16_cmd_exec()` and `das16_timer_interrupt()`
around the setting and checking of `devpriv->timer_running`.
Since `das16_interrupt()` (called from `das16_timer_interrupt()`) checks
whether DMA is enabled in the device while holding `dev->spinlock`, and
DMA is enabled by `das16_cmd_exec()` around the time it schedules the
timer, enable the DMA in the device while holding the spin-lock.
Signed-off-by: Ian Abbott <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
Diffstat (limited to 'tools/perf/scripts/python')
0 files changed, 0 insertions, 0 deletions