summaryrefslogtreecommitdiff
path: root/crypto/lzo.c
diff options
context:
space:
mode:
authorStefan Haberland <sth@linux.vnet.ibm.com>2018-02-07 17:39:14 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2018-05-30 07:51:57 +0200
commitd0d9330fa2a382dbe09574e6d3f69d24ca242ab9 (patch)
tree230bc3aa627feffee867820b4d21a2f5a72e7a57 /crypto/lzo.c
parente08f866978350ecc9dd90a2cfeb907b2abb74392 (diff)
downloadlinux-rt-d0d9330fa2a382dbe09574e6d3f69d24ca242ab9.tar.gz
s390/dasd: fix handling of internal requests
[ Upstream commit 9487cfd3430d07366801886bdf185799a2b6f066 ] Internal DASD device driver I/O such as query host access count or path verification is started using the _sleep_on() function. To mark a request as started or ended the callback_data is set to either DASD_SLEEPON_START_TAG or DASD_SLEEPON_END_TAG. In cases where the request has to be stopped unconditionally the status is set to DASD_SLEEPON_END_TAG as well which leads to immediate clearing of the request. But the request might still be on a device request queue for normal operation which might lead to a panic because of a BUG() statement in __dasd_device_process_final_queue() or a list corruption of the device request queue. Fix by removing the setting of DASD_SLEEPON_END_TAG in the dasd_cancel_req() and dasd_generic_requeue_all_requests() functions and ensure that the request is not deleted in the requeue function. Trigger the device tasklet in the requeue function and let the normal processing cleanup the request. Signed-off-by: Stefan Haberland <sth@linux.vnet.ibm.com> Reviewed-by: Jan Hoeppner <hoeppner@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'crypto/lzo.c')
0 files changed, 0 insertions, 0 deletions