#include <asm/uaccess.h>
 
 #define OSM_NAME       "config-osm"
-#define OSM_VERSION    "1.317"
+#define OSM_VERSION    "1.323"
 #define OSM_DESCRIPTION        "I2O Configuration OSM"
 
 /* access mode user rw */
 
 
 /* IOP */
 extern struct i2o_controller *i2o_iop_alloc(void);
-extern void i2o_iop_free(struct i2o_controller *);
+
+/**
+ *     i2o_iop_free - Free the i2o_controller struct
+ *     @c: I2O controller to free
+ */
+static inline void i2o_iop_free(struct i2o_controller *c)
+{
+       i2o_pool_free(&c->in_msg);
+       kfree(c);
+}
 
 extern int i2o_iop_add(struct i2o_controller *);
 extern void i2o_iop_remove(struct i2o_controller *);
 
 {
        struct i2o_device *dev;
 
-       dev = kmalloc(sizeof(*dev), GFP_KERNEL);
+       dev = kzalloc(sizeof(*dev), GFP_KERNEL);
        if (!dev)
                return ERR_PTR(-ENOMEM);
 
-       memset(dev, 0, sizeof(*dev));
-
        INIT_LIST_HEAD(&dev->list);
        init_MUTEX(&dev->lock);
 
 
                /* cut of header from message size (in 32-bit words) */
                size = (le32_to_cpu(msg->u.head[0]) >> 16) - 5;
 
-               evt = kmalloc(size * 4 + sizeof(*evt), GFP_ATOMIC);
+               evt = kzalloc(size * 4 + sizeof(*evt), GFP_ATOMIC);
                if (!evt)
                        return -ENOMEM;
-               memset(evt, 0, size * 4 + sizeof(*evt));
 
                evt->size = size;
                evt->tcntxt = le32_to_cpu(msg->u.s.tcntxt);
        osm_info("max drivers = %d\n", i2o_max_drivers);
 
        i2o_drivers =
-           kmalloc(i2o_max_drivers * sizeof(*i2o_drivers), GFP_KERNEL);
+           kzalloc(i2o_max_drivers * sizeof(*i2o_drivers), GFP_KERNEL);
        if (!i2o_drivers)
                return -ENOMEM;
 
-       memset(i2o_drivers, 0, i2o_max_drivers * sizeof(*i2o_drivers));
-
        rc = bus_register(&i2o_bus_type);
 
        if (rc < 0)
 
 {
        struct i2o_exec_wait *wait;
 
-       wait = kmalloc(sizeof(*wait), GFP_KERNEL);
+       wait = kzalloc(sizeof(*wait), GFP_KERNEL);
        if (!wait)
                return NULL;
 
-       memset(wait, 0, sizeof(*wait));
-
        INIT_LIST_HEAD(&wait->list);
 
        return wait;
 
 #include "i2o_block.h"
 
 #define OSM_NAME       "block-osm"
-#define OSM_VERSION    "1.316"
+#define OSM_VERSION    "1.325"
 #define OSM_DESCRIPTION        "I2O Block Device OSM"
 
 static struct i2o_driver i2o_block_driver;
        struct request_queue *queue;
        int rc;
 
-       dev = kmalloc(sizeof(*dev), GFP_KERNEL);
+       dev = kzalloc(sizeof(*dev), GFP_KERNEL);
        if (!dev) {
                osm_err("Insufficient memory to allocate I2O Block disk.\n");
                rc = -ENOMEM;
                goto exit;
        }
-       memset(dev, 0, sizeof(*dev));
 
        INIT_LIST_HEAD(&dev->open_queue);
        spin_lock_init(&dev->lock);
 
        reply_size >>= 16;
        reply_size <<= 2;
 
-       reply = kmalloc(reply_size, GFP_KERNEL);
+       reply = kzalloc(reply_size, GFP_KERNEL);
        if (!reply) {
                printk(KERN_WARNING "%s: Could not allocate reply buffer\n",
                       c->name);
                return -ENOMEM;
        }
-       memset(reply, 0, reply_size);
 
        sg_offset = (msg->u.head[0] >> 4) & 0x0f;
 
        reply_size >>= 16;
        reply_size <<= 2;
 
-       reply = kmalloc(reply_size, GFP_KERNEL);
+       reply = kzalloc(reply_size, GFP_KERNEL);
        if (!reply) {
                printk(KERN_WARNING "%s: Could not allocate reply buffer\n",
                       c->name);
                return -ENOMEM;
        }
-       memset(reply, 0, reply_size);
 
        sg_offset = (msg->u.head[0] >> 4) & 0x0f;
 
 
 #include "core.h"
 
 #define OSM_NAME       "i2o"
-#define OSM_VERSION    "1.316"
+#define OSM_VERSION    "1.325"
 #define OSM_DESCRIPTION        "I2O subsystem"
 
 /* global I2O controller list */
        i2o_systab.len = sizeof(struct i2o_sys_tbl) + num_controllers *
            sizeof(struct i2o_sys_tbl_entry);
 
-       systab = i2o_systab.virt = kmalloc(i2o_systab.len, GFP_KERNEL);
+       systab = i2o_systab.virt = kzalloc(i2o_systab.len, GFP_KERNEL);
        if (!systab) {
                osm_err("unable to allocate memory for System Table\n");
                return -ENOMEM;
        }
-       memset(systab, 0, i2o_systab.len);
 
        systab->version = I2OVERSION;
        systab->change_ind = change_ind + 1;
        return -EBUSY;
 }
 
-/**
- *     i2o_iop_free - Free the i2o_controller struct
- *     @c: I2O controller to free
- */
-void i2o_iop_free(struct i2o_controller *c)
-{
-       i2o_pool_free(&c->in_msg);
-       kfree(c);
-};
-
 /**
  *     i2o_iop_release - release the memory for a I2O controller
  *     @dev: I2O controller which should be released
        struct i2o_controller *c;
        char poolname[32];
 
-       c = kmalloc(sizeof(*c), GFP_KERNEL);
+       c = kzalloc(sizeof(*c), GFP_KERNEL);
        if (!c) {
                osm_err("i2o: Insufficient memory to allocate a I2O controller."
                        "\n");
                return ERR_PTR(-ENOMEM);
        }
-       memset(c, 0, sizeof(*c));
 
        c->unit = unit++;
        sprintf(c->name, "iop%d", c->unit);