dasd: remove strings from s390dbf
authorStefan Haberland <stefan.haberland@de.ibm.com>
Mon, 7 Dec 2009 11:51:52 +0000 (12:51 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 23 Feb 2010 15:37:54 +0000 (07:37 -0800)
commit b8ed5dd54895647c2690575aad6f07748c2c618a upstream.

Remove strings from s390 debugfeature entries that could lead to a
crash when the data is read from dbf because the strings do not exist
any more.

Signed-off-by: Stefan Haberland <stefan.haberland@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/s390/block/dasd.c
drivers/s390/block/dasd_eckd.c
drivers/s390/block/dasd_fba.c
drivers/s390/block/dasd_int.h

index 513dec9403846d9a5acf45f02c75072236bf40d3..d0ef15af23aa79bbc49916ea8af9145df713d48d 100644 (file)
@@ -994,10 +994,9 @@ static void dasd_handle_killed_request(struct ccw_device *cdev,
                return;
        cqr = (struct dasd_ccw_req *) intparm;
        if (cqr->status != DASD_CQR_IN_IO) {
-               DBF_EVENT(DBF_DEBUG,
-                       "invalid status in handle_killed_request: "
-                       "bus_id %s, status %02x",
-                       dev_name(&cdev->dev), cqr->status);
+               DBF_EVENT_DEVID(DBF_DEBUG, cdev,
+                               "invalid status in handle_killed_request: "
+                               "%02x", cqr->status);
                return;
        }
 
@@ -1045,12 +1044,13 @@ void dasd_int_handler(struct ccw_device *cdev, unsigned long intparm,
                case -EIO:
                        break;
                case -ETIMEDOUT:
-                       DBF_EVENT(DBF_WARNING, "%s(%s): request timed out\n",
-                              __func__, dev_name(&cdev->dev));
+                       DBF_EVENT_DEVID(DBF_WARNING, cdev, "%s: "
+                                       "request timed out\n", __func__);
                        break;
                default:
-                       DBF_EVENT(DBF_WARNING, "%s(%s): unknown error %ld\n",
-                              __func__, dev_name(&cdev->dev), PTR_ERR(irb));
+                       DBF_EVENT_DEVID(DBF_WARNING, cdev, "%s: "
+                                       "unknown error %ld\n", __func__,
+                                       PTR_ERR(irb));
                }
                dasd_handle_killed_request(cdev, intparm);
                return;
@@ -2217,9 +2217,9 @@ int dasd_generic_probe(struct ccw_device *cdev,
        }
        ret = dasd_add_sysfs_files(cdev);
        if (ret) {
-               DBF_EVENT(DBF_WARNING,
-                      "dasd_generic_probe: could not add sysfs entries "
-                      "for %s\n", dev_name(&cdev->dev));
+               DBF_EVENT_DEVID(DBF_WARNING, cdev, "%s",
+                               "dasd_generic_probe: could not add "
+                               "sysfs entries");
                return ret;
        }
        cdev->handler = &dasd_int_handler;
index 80c205bb95ac61fd1f59d7e151704019bac795eb..678bb946cd39ea918b22e5eb12cb282e7957d6eb 100644 (file)
@@ -88,9 +88,9 @@ dasd_eckd_probe (struct ccw_device *cdev)
        /* set ECKD specific ccw-device options */
        ret = ccw_device_set_options(cdev, CCWDEV_ALLOW_FORCE);
        if (ret) {
-               DBF_EVENT(DBF_WARNING,
-                      "dasd_eckd_probe: could not set ccw-device options "
-                      "for %s\n", dev_name(&cdev->dev));
+               DBF_EVENT_DEVID(DBF_WARNING, cdev, "%s",
+                               "dasd_eckd_probe: could not set "
+                               "ccw-device options");
                return ret;
        }
        ret = dasd_generic_probe(cdev, &dasd_eckd_discipline);
@@ -885,16 +885,15 @@ static int dasd_eckd_read_conf(struct dasd_device *device)
                        rc = dasd_eckd_read_conf_lpm(device, &conf_data,
                                                     &conf_len, lpm);
                        if (rc && rc != -EOPNOTSUPP) {  /* -EOPNOTSUPP is ok */
-                               DBF_EVENT(DBF_WARNING,
+                               DBF_EVENT_DEVID(DBF_WARNING, device->cdev,
                                          "Read configuration data returned "
-                                         "error %d for device: %s", rc,
-                                         dev_name(&device->cdev->dev));
+                                         "error %d", rc);
                                return rc;
                        }
                        if (conf_data == NULL) {
-                               DBF_EVENT(DBF_WARNING, "No configuration "
-                                         "data retrieved for device: %s",
-                                         dev_name(&device->cdev->dev));
+                               DBF_EVENT_DEVID(DBF_WARNING, device->cdev, "%s",
+                                               "No configuration data "
+                                               "retrieved");
                                continue;       /* no error */
                        }
                        /* save first valid configuration data */
@@ -941,9 +940,8 @@ static int dasd_eckd_read_features(struct dasd_device *device)
                                    sizeof(struct dasd_rssd_features)),
                                   device);
        if (IS_ERR(cqr)) {
-               DBF_EVENT(DBF_WARNING, "Could not allocate initialization "
-                         "request for device: %s",
-                         dev_name(&device->cdev->dev));
+               DBF_EVENT_DEVID(DBF_WARNING, device->cdev, "%s", "Could not "
+                               "allocate initialization request");
                return PTR_ERR(cqr);
        }
        cqr->startdev = device;
@@ -1071,10 +1069,8 @@ static int dasd_eckd_validate_server(struct dasd_device *device)
        /* may be requested feature is not available on server,
         * therefore just report error and go ahead */
        private = (struct dasd_eckd_private *) device->private;
-       DBF_EVENT(DBF_WARNING, "PSF-SSC on storage subsystem %s.%s.%04x "
-                 "returned rc=%d for device: %s",
-                 private->uid.vendor, private->uid.serial,
-                 private->uid.ssid, rc, dev_name(&device->cdev->dev));
+       DBF_EVENT_DEVID(DBF_WARNING, device->cdev, "PSF-SSC for SSID %04x "
+                       "returned rc=%d", private->uid.ssid, rc);
        /* RE-Read Configuration Data */
        return dasd_eckd_read_conf(device);
 }
@@ -1123,9 +1119,9 @@ dasd_eckd_check_characteristics(struct dasd_device *device)
        if (private->uid.type == UA_BASE_DEVICE) {
                block = dasd_alloc_block();
                if (IS_ERR(block)) {
-                       DBF_EVENT(DBF_WARNING, "could not allocate dasd "
-                                 "block structure for device: %s",
-                                 dev_name(&device->cdev->dev));
+                       DBF_EVENT_DEVID(DBF_WARNING, device->cdev, "%s",
+                                       "could not allocate dasd "
+                                       "block structure");
                        rc = PTR_ERR(block);
                        goto out_err1;
                }
@@ -1153,9 +1149,8 @@ dasd_eckd_check_characteristics(struct dasd_device *device)
        rc = dasd_generic_read_dev_chars(device, DASD_ECKD_MAGIC,
                                         &private->rdc_data, 64);
        if (rc) {
-               DBF_EVENT(DBF_WARNING,
-                         "Read device characteristics failed, rc=%d for "
-                         "device: %s", rc, dev_name(&device->cdev->dev));
+               DBF_EVENT_DEVID(DBF_WARNING, device->cdev,
+                               "Read device characteristic failed, rc=%d", rc);
                goto out_err3;
        }
        /* find the vaild cylinder size */
@@ -3253,9 +3248,8 @@ int dasd_eckd_restore_device(struct dasd_device *device)
        rc = dasd_generic_read_dev_chars(device, DASD_ECKD_MAGIC,
                                         &temp_rdc_data, 64);
        if (rc) {
-               DBF_EVENT(DBF_WARNING,
-                         "Read device characteristics failed, rc=%d for "
-                         "device: %s", rc, dev_name(&device->cdev->dev));
+               DBF_EVENT_DEVID(DBF_WARNING, device->cdev,
+                               "Read device characteristic failed, rc=%d", rc);
                goto out_err;
        }
        spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags);
index f245377e8e27809876196d12fd459fade197505d..227b4e91b18ec9265b2ee2b2d31c5b777152fcc3 100644 (file)
@@ -141,9 +141,8 @@ dasd_fba_check_characteristics(struct dasd_device *device)
        }
        block = dasd_alloc_block();
        if (IS_ERR(block)) {
-               DBF_EVENT(DBF_WARNING, "could not allocate dasd block "
-                         "structure for device: %s",
-                         dev_name(&device->cdev->dev));
+               DBF_EVENT_DEVID(DBF_WARNING, cdev, "%s", "could not allocate "
+                               "dasd block structure");
                device->private = NULL;
                kfree(private);
                return PTR_ERR(block);
@@ -155,9 +154,8 @@ dasd_fba_check_characteristics(struct dasd_device *device)
        rc = dasd_generic_read_dev_chars(device, DASD_FBA_MAGIC,
                                         &private->rdc_data, 32);
        if (rc) {
-               DBF_EVENT(DBF_WARNING, "Read device characteristics returned "
-                         "error %d for device: %s",
-                         rc, dev_name(&device->cdev->dev));
+               DBF_EVENT_DEVID(DBF_WARNING, cdev, "Read device "
+                               "characteristics returned error %d", rc);
                device->block = NULL;
                dasd_free_block(block);
                device->private = NULL;
index 8afd9fa0087592d555f1bbcbcac59806f0c24355..b19f309f3abee057d51185f623edecc75f69885a 100644 (file)
@@ -108,6 +108,16 @@ do { \
                            d_data); \
 } while(0)
 
+#define DBF_EVENT_DEVID(d_level, d_cdev, d_str, d_data...)     \
+do { \
+       struct ccw_dev_id __dev_id;                     \
+       ccw_device_get_id(d_cdev, &__dev_id);           \
+       debug_sprintf_event(dasd_debug_area,            \
+                           d_level,                                    \
+                           "0.%x.%04x " d_str "\n",                    \
+                           __dev_id.ssid, __dev_id.devno, d_data);     \
+} while (0)
+
 #define DBF_EXC(d_level, d_str, d_data...)\
 do { \
        debug_sprintf_exception(dasd_debug_area, \