size = octdevsize + priv_size + configsize +
                (sizeof(struct octeon_dispatch) * DISPATCH_LIST_SIZE);
 
-       buf = vmalloc(size);
+       buf = vzalloc(size);
        if (!buf)
                return NULL;
 
-       memset(buf, 0, size);
-
        oct = (struct octeon_device *)buf;
        oct->priv = (void *)(buf + octdevsize);
        oct->chip = (void *)(buf + octdevsize + priv_size);
 
        size = sizeof(struct octeon_ioq_vector) * num_ioqs;
 
-       oct->ioq_vector = vmalloc(size);
+       oct->ioq_vector = vzalloc(size);
        if (!oct->ioq_vector)
                return 1;
-       memset(oct->ioq_vector, 0, size);
        for (i = 0; i < num_ioqs; i++) {
                ioq_vector              = &oct->ioq_vector[i];
                ioq_vector->oct_dev     = oct;