summaryrefslogtreecommitdiff
path: root/drivers/char/applicom.c
diff options
context:
space:
mode:
authorPaul Fulghum <paulkf@microgate.com>2010-10-27 15:34:20 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2010-10-27 18:03:14 -0700
commitffd7d6baa65e6161cfd996a59d55c48571c2a5f3 (patch)
treed54651c55afcdc57a23b6aae48782b616219f2e3 /drivers/char/applicom.c
parentdcade5ed16cce572e375bf4e63dd2150c351bf49 (diff)
downloadlinux-3.10-ffd7d6baa65e6161cfd996a59d55c48571c2a5f3.tar.gz
linux-3.10-ffd7d6baa65e6161cfd996a59d55c48571c2a5f3.tar.bz2
linux-3.10-ffd7d6baa65e6161cfd996a59d55c48571c2a5f3.zip
synclink_gt: fix per device locking
Fix a long standing bug with per device locking. Each device has an associated spinlock for synchronizing access to hardware and state information with the ISR. A single hardware card has one or more devices. Bug: Non ISR code correctly acquires and releases the per device lock. ISR incorrectly always acquires and releases the lock of the first device on the card. The decoupled and list based nature of the ISR and deferred processing interaction allowed this to work in normal operation. Exceptional events like an application forcing hardware shutdown, reset, or reconfiguration while active can trigger the bug. Fixed ISR to acquire and release the per device lock. One exception is manipulation of the GPIO card resource which is global and effectively owned by the first device of the card. Non-ISR access to GPIO resource is changed to use lock of first device on card. Signed-off-by: Paul Fulghum <paulkf@microgate.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/char/applicom.c')
0 files changed, 0 insertions, 0 deletions