aboutsummaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorParag Warudkar <pwarudkar@aol.com>2007-05-08 00:31:09 -0700
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-05-08 11:15:13 -0700
commit8e39c933b1b7df501dbb68879fb1640e277b8a5c (patch)
tree870bb5506fb670d0e44c00a7d330ee064239298b /arch
parent53ab97a1c1536015d4d6d900363ea96fece5ed97 (diff)
tpm: fix sleep-in-spinlock
flush_scheduled_work() can sleep, and we're calling it under spinlock. AFAICS, moving flush_scheduled_work before spin_lock() should not cause any problems. Reason being - The only thing that can race against tpm_release is tpm_open (tpm_release is called when last reference to the file is closed and only thing that can happen after that is tpm_open??) and tpm_open acquires driver_lock and more over it bails out with EBUSY if chip->num_opens is greater than 0. I also moved chip->num_pending-- to after deleting timer and setting data pending as it looks more correct for the paranoid although it probably doesn't matter as it is guarded by driver_lock. None the less this change should not cause problems. While I was at it I noticed a missing NULL check in tpm_register_hardware which is fixed with this patch as well. Signed-off-by: Parag Warudkar <parag.warudkar@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch')
0 files changed, 0 insertions, 0 deletions