[S390] dasd: fix panic caused by alias device offline

When an alias device is set offline while it is in use this may
result in a panic in the cleanup part of the dasd_block_tasklet.
The problem here is that there may exist some ccw requests that were
originally created for the alias device and transferred to the base
device when the alias was set offline. When these request are
cleaned up later, the discipline pointer in the alias device may not
be valid anymore. To fix this use the base device discipline to find
the cleanup function.

Signed-off-by: Stefan Weinhuber <wein@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>

authored by Stefan Weinhuber and committed by Martin Schwidefsky fe6b8e76 6c5f57c7

+1 -1
+1 -1
drivers/s390/block/dasd.c
··· 1706 1707 req = (struct request *) cqr->callback_data; 1708 dasd_profile_end(cqr->block, cqr, req); 1709 - status = cqr->memdev->discipline->free_cp(cqr, req); 1710 if (status <= 0) 1711 error = status ? status : -EIO; 1712 dasd_end_request(req, error);
··· 1706 1707 req = (struct request *) cqr->callback_data; 1708 dasd_profile_end(cqr->block, cqr, req); 1709 + status = cqr->block->base->discipline->free_cp(cqr, req); 1710 if (status <= 0) 1711 error = status ? status : -EIO; 1712 dasd_end_request(req, error);