summaryrefslogtreecommitdiffstats
path: root/drivers/s390/block/dasd_ioctl.c
diff options
context:
space:
mode:
authorStefan Weinhuber <wein@de.ibm.com>2010-05-12 09:32:11 +0200
committerMartin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com>2010-05-12 09:32:26 +0200
commit1c1e093cbf6d3a7576ba0bd10363362a1c5c74ee (patch)
treea3970653539aa4a9b71536a204efbe7d5ba8ff07 /drivers/s390/block/dasd_ioctl.c
parentcea0d767c29669bf89f86e4aee46ef462d2ebae8 (diff)
downloadop-kernel-dev-1c1e093cbf6d3a7576ba0bd10363362a1c5c74ee.zip
op-kernel-dev-1c1e093cbf6d3a7576ba0bd10363362a1c5c74ee.tar.gz
[S390] dasd: fix race between tasklet and dasd_sleep_on
The various dasd_sleep_on functions use a global wait queue when waiting for a cqr. The wait condition checks the status and devlist fields of the cqr to determine if it is safe to continue. This evaluation may return true, although the tasklet has not finished processing of the cqr and the callback function has not been called yet. When the callback is finally called, the data in the cqr may already be invalid. The sleep_on wait condition needs a safe way to determine if the tasklet has finished processing. Use the callback_data field of the cqr to store a token, which is set by the callback function itself. Cc: <stable@kernel.org> Signed-off-by: Stefan Weinhuber <wein@de.ibm.com> Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/block/dasd_ioctl.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud