s390/dasd: fix panic for failed online processing
authorStefan Haberland <sth@linux.ibm.com>
Wed, 25 Jul 2018 11:27:10 +0000 (13:27 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Thu, 9 Aug 2018 10:49:30 +0000 (12:49 +0200)
Fix a panic that occurs for a device that got an error in
dasd_eckd_check_characteristics() during online processing.
For example the read configuration data command may have failed.

If this error occurs the device is not being set online and the earlier
invoked steps during online processing are rolled back. Therefore
dasd_eckd_uncheck_device() is called which needs a valid private
structure. But this pointer is not valid if
dasd_eckd_check_characteristics() has failed.

Check for a valid device->private pointer to prevent a panic.

Reviewed-by: Jan Hoeppner <hoeppner@linux.ibm.com>
Signed-off-by: Stefan Haberland <sth@linux.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
drivers/s390/block/dasd_eckd.c

index c5a55513b07c08f20c149acb0093377598cab24c..1e97378d4f6069bfcf1d149e0c53ac601c93e93d 100644 (file)
@@ -1780,6 +1780,9 @@ static void dasd_eckd_uncheck_device(struct dasd_device *device)
        struct dasd_eckd_private *private = device->private;
        int i;
 
+       if (!private)
+               return;
+
        dasd_alias_disconnect_device_from_lcu(device);
        private->ned = NULL;
        private->sneq = NULL;