linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / drivers / s390 / net / iucv.c
index 821dde8..760e77e 100644 (file)
@@ -1,4 +1,4 @@
-/*
+/* 
  * IUCV network driver
  *
  * Copyright (C) 2001 IBM Deutschland Entwicklung GmbH, IBM Corporation
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  *
  */
-
+\f
 /* #define DEBUG */
 
 #include <linux/module.h>
 #include <linux/moduleparam.h>
+#include <linux/config.h>
 
 #include <linux/spinlock.h>
 #include <linux/kernel.h>
@@ -80,7 +81,7 @@ iucv_bus_match (struct device *dev, struct device_driver *drv)
 struct bus_type iucv_bus = {
        .name = "iucv",
        .match = iucv_bus_match,
-};
+};     
 
 struct device *iucv_root;
 
@@ -296,7 +297,7 @@ MODULE_LICENSE("GPL");
 /*
  * Debugging stuff
  *******************************************************************************/
-
+\f
 
 #ifdef DEBUG
 static int debuglevel = 0;
@@ -335,15 +336,15 @@ do { \
 
 #else
 
-#define iucv_debug(lvl, fmt, args...)  do { } while (0)
-#define iucv_dumpit(title, buf, len)   do { } while (0)
+#define iucv_debug(lvl, fmt, args...)
+#define iucv_dumpit(title, buf, len)
 
 #endif
 
 /*
  * Internal functions
  *******************************************************************************/
-
+\f
 /**
  * print start banner
  */
@@ -385,7 +386,7 @@ iucv_init(void)
        }
 
        /* Note: GFP_DMA used used to get memory below 2G */
-       iucv_external_int_buffer = kzalloc(sizeof(iucv_GeneralInterrupt),
+       iucv_external_int_buffer = kmalloc(sizeof(iucv_GeneralInterrupt),
                                           GFP_KERNEL|GFP_DMA);
        if (!iucv_external_int_buffer) {
                printk(KERN_WARNING
@@ -395,9 +396,10 @@ iucv_init(void)
                bus_unregister(&iucv_bus);
                return -ENOMEM;
        }
+       memset(iucv_external_int_buffer, 0, sizeof(iucv_GeneralInterrupt));
 
        /* Initialize parameter pool */
-       iucv_param_pool = kzalloc(sizeof(iucv_param) * PARAM_POOL_SIZE,
+       iucv_param_pool = kmalloc(sizeof(iucv_param) * PARAM_POOL_SIZE,
                                  GFP_KERNEL|GFP_DMA);
        if (!iucv_param_pool) {
                printk(KERN_WARNING "%s: Could not allocate param pool\n",
@@ -408,6 +410,7 @@ iucv_init(void)
                bus_unregister(&iucv_bus);
                return -ENOMEM;
        }
+       memset(iucv_param_pool, 0, sizeof(iucv_param) * PARAM_POOL_SIZE);
 
        /* Initialize irq queue */
        INIT_LIST_HEAD(&iucv_irq_queue);
@@ -692,7 +695,7 @@ iucv_retrieve_buffer (void)
        iucv_debug(1, "entering");
        if (iucv_cpuid != -1) {
                smp_call_function_on(iucv_retrieve_buffer_cpuid,
-                                    NULL, 0, 1, iucv_cpuid);
+                                    0, 0, 1, iucv_cpuid);
                /* Release the cpu reserved by iucv_declare_buffer. */
                smp_put_cpu(iucv_cpuid);
                iucv_cpuid = -1;
@@ -790,14 +793,15 @@ iucv_register_program (__u8 pgmname[16],
                }
 
                max_connections = iucv_query_maxconn();
-               iucv_pathid_table = kcalloc(max_connections, sizeof(handler *),
-                                       GFP_ATOMIC);
+               iucv_pathid_table = kmalloc(max_connections * sizeof(handler *),
+                                      GFP_ATOMIC);
                if (iucv_pathid_table == NULL) {
                        printk(KERN_WARNING "%s: iucv_pathid_table storage "
                               "allocation failed\n", __FUNCTION__);
                        kfree(new_handler);
                        return NULL;
                }
+               memset (iucv_pathid_table, 0, max_connections * sizeof(handler *));
        }
        memset(new_handler, 0, sizeof (handler));
        memcpy(new_handler->id.user_data, pgmname,
@@ -809,7 +813,7 @@ iucv_register_program (__u8 pgmname[16],
                        sizeof (new_handler->id.userid));
                EBC_TOUPPER (new_handler->id.userid,
                             sizeof (new_handler->id.userid));
-
+               
                if (pgmmask) {
                        memcpy (new_handler->id.mask, pgmmask,
                                sizeof (new_handler->id.mask));
@@ -1228,7 +1232,7 @@ iucv_purge (__u16 pathid, __u32 msgid, __u32 srccls, __u32 *audit)
                /* parm->ipaudit has only 3 bytes */
                *audit >>= 8;
        }
-
+       
        release_param(parm);
 
        iucv_debug(1, "b2f0_result = %ld", b2f0_result);
@@ -2329,14 +2333,14 @@ iucv_do_int(iucv_GeneralInterrupt * int_buf)
                                        temp_buff1[j] &= (h->id.mask)[j];
                                        temp_buff2[j] &= (h->id.mask)[j];
                                }
-
+                               
                                iucv_dumpit("temp_buff1:",
                                            temp_buff1, sizeof(temp_buff1));
                                iucv_dumpit("temp_buff2",
                                            temp_buff2, sizeof(temp_buff2));
-
+                               
                                if (!memcmp (temp_buff1, temp_buff2, 24)) {
-
+                                       
                                        iucv_debug(2,
                                                   "found a matching handler");
                                        break;
@@ -2367,7 +2371,7 @@ iucv_do_int(iucv_GeneralInterrupt * int_buf)
                        } else
                                iucv_sever(int_buf->ippathid, no_listener);
                        break;
-
+                       
                case 0x02:              /*connection complete */
                        if (messagesDisabled) {
                            iucv_setmask(~0);
@@ -2386,7 +2390,7 @@ iucv_do_int(iucv_GeneralInterrupt * int_buf)
                        } else
                                iucv_sever(int_buf->ippathid, no_listener);
                        break;
-
+                       
                case 0x03:              /* connection severed */
                        if (messagesDisabled) {
                            iucv_setmask(~0);
@@ -2397,13 +2401,13 @@ iucv_do_int(iucv_GeneralInterrupt * int_buf)
                                        interrupt->ConnectionSevered(
                                                (iucv_ConnectionSevered *)int_buf,
                                                h->pgm_data);
-
+                               
                                else
                                        iucv_sever (int_buf->ippathid, no_listener);
                        } else
                                iucv_sever(int_buf->ippathid, no_listener);
                        break;
-
+                       
                case 0x04:              /* connection quiesced */
                        if (messagesDisabled) {
                            iucv_setmask(~0);
@@ -2419,7 +2423,7 @@ iucv_do_int(iucv_GeneralInterrupt * int_buf)
                                                   "ConnectionQuiesced not called");
                        }
                        break;
-
+                       
                case 0x05:              /* connection resumed */
                        if (messagesDisabled) {
                            iucv_setmask(~0);
@@ -2435,7 +2439,7 @@ iucv_do_int(iucv_GeneralInterrupt * int_buf)
                                                   "ConnectionResumed not called");
                        }
                        break;
-
+                       
                case 0x06:              /* priority message complete */
                case 0x07:              /* nonpriority message complete */
                        if (h) {
@@ -2448,7 +2452,7 @@ iucv_do_int(iucv_GeneralInterrupt * int_buf)
                                                   "MessageComplete not called");
                        }
                        break;
-
+                       
                case 0x08:              /* priority message pending  */
                case 0x09:              /* nonpriority message pending  */
                        if (h) {
@@ -2466,7 +2470,7 @@ iucv_do_int(iucv_GeneralInterrupt * int_buf)
                               __FUNCTION__);
                        break;
        }                       /* end switch */
-
+       
        iucv_debug(2, "exiting pathid %d, type %02X",
                 int_buf->ippathid, int_buf->iptype);