[S390] tape: fix race with stack local wait_queue_head_t.
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Fri, 30 May 2008 08:03:33 +0000 (10:03 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Fri, 30 May 2008 08:03:36 +0000 (10:03 +0200)
commit4657fb8a98a4e02981a574492bbe470c147b6657
tree9363e9452ce5b798cad43b83b0276bda6a7568c9
parent54ad64129cc166b9eec7151f3f9fc83589e33555
[S390] tape: fix race with stack local wait_queue_head_t.

A wait_event call with a stack local wait_queue_head_t structure that is
used to do the wake up for the wait_event is inherently racy. After the
wait_event finished the wake_up call might not have completed yet.
Replace the stack local wait_queue_head_t in tape_do_io and
tape_do_io_interruptible with a per device wait queue.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
drivers/s390/char/tape.h
drivers/s390/char/tape_core.c