Commit 932f0549f872cde022eed200910ee3291b1d3c69
Committed by
Martin Schwidefsky
1 parent
2c17124bf3
Exists in
ti-lsk-linux-4.1.y
and in
10 other branches
s390/dasd: fix list corruption for sleep_on requests
Fix race for sleep_on requests leading to list corruption. The SLEEP_ON_END_TAG is set during CQR clean up. Remove it from interrupt handler to avoid the CQR from being cleared when it is still in the device_queue. Signed-off-by: Stefan Haberland <stefan.haberland@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Showing 1 changed file with 0 additions and 3 deletions Side-by-side Diff
drivers/s390/block/dasd.c
... | ... | @@ -1697,11 +1697,8 @@ |
1697 | 1697 | if (cqr->status == DASD_CQR_CLEAR_PENDING && |
1698 | 1698 | scsw_fctl(&irb->scsw) & SCSW_FCTL_CLEAR_FUNC) { |
1699 | 1699 | cqr->status = DASD_CQR_CLEARED; |
1700 | - if (cqr->callback_data == DASD_SLEEPON_START_TAG) | |
1701 | - cqr->callback_data = DASD_SLEEPON_END_TAG; | |
1702 | 1700 | dasd_device_clear_timer(device); |
1703 | 1701 | wake_up(&dasd_flush_wq); |
1704 | - wake_up(&generic_waitq); | |
1705 | 1702 | dasd_schedule_device_bh(device); |
1706 | 1703 | return; |
1707 | 1704 | } |