From 9eb251225ab4dbea3119cfcf4c5194eed223a740 Mon Sep 17 00:00:00 2001 From: Stefan Haberland Date: Fri, 26 Feb 2010 22:37:46 +0100 Subject: [S390] dasd: fix online/offline race Setting a DASD online and offline in quick succession may cause a kernel panic or let the chhccwdev command wait forever. The Online process is split into two parts. After the first part is finished the offline process may be called. This may result in a situation where the second online processing part tries to set the DASD offline as well. Use a mutex to protect online and offline against each other. Also correct some checking. Signed-off-by: Stefan Haberland Signed-off-by: Martin Schwidefsky --- drivers/s390/block/dasd_genhd.c | 1 + 1 file changed, 1 insertion(+) (limited to 'drivers/s390/block/dasd_genhd.c') diff --git a/drivers/s390/block/dasd_genhd.c b/drivers/s390/block/dasd_genhd.c index d3198303b93..94f92a1247f 100644 --- a/drivers/s390/block/dasd_genhd.c +++ b/drivers/s390/block/dasd_genhd.c @@ -88,6 +88,7 @@ void dasd_gendisk_free(struct dasd_block *block) if (block->gdp) { del_gendisk(block->gdp); block->gdp->queue = NULL; + block->gdp->private_data = NULL; put_disk(block->gdp); block->gdp = NULL; } -- cgit v1.2.3