[SCSI] qla2xxx: Fix race that could hang kthread_stop()
authorJames Bottomley <James.Bottomley@suse.de>
Thu, 27 Jan 2011 21:12:37 +0000 (16:12 -0500)
committerJames Bottomley <James.Bottomley@suse.de>
Sat, 12 Feb 2011 16:17:13 +0000 (10:17 -0600)
commit563585ec4bf1319f193c2f51682985bcae400cb4
treede6d2b98f972fc9a414c5d39638c5c0bc3c4a09a
parent3c6c0d6ca386fe7a8e44e887a51f333c2499c829
[SCSI] qla2xxx: Fix race that could hang kthread_stop()

There is a small race window in qla2x00_do_dpc() between
checking for kthread_should_stop() and going to sleep after
setting TASK_INTERRUPTIBLE. If qla2x00_free_device() is called
in this window, kthread_stop will wait forever because there
will be no one to wake up the process.

Fix by making sure we only set TASK_INTERRUPTIBLE before checking
kthread_stop().

Reported-by: Bandan Das <bandan.das@stratus.com>
Acked-by: Madhuranath Iyengar <Madhu.Iyengar@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/scsi/qla2xxx/qla_os.c