queue->small_page = NULL;
 
        /* allocate queue page pointers */
-       queue->queue_pages = vmalloc(nr_of_pages * sizeof(void *));
+       queue->queue_pages = kmalloc(nr_of_pages * sizeof(void *), GFP_KERNEL);
        if (!queue->queue_pages) {
                ehca_gen_err("Couldn't allocate queue page list");
                return 0;
 ipz_queue_ctor_exit0:
        ehca_gen_err("Couldn't alloc pages queue=%p "
                 "nr_of_pages=%x",  queue, nr_of_pages);
-       vfree(queue->queue_pages);
+       kfree(queue->queue_pages);
 
        return 0;
 }
                        free_page((unsigned long)queue->queue_pages[i]);
        }
 
-       vfree(queue->queue_pages);
+       kfree(queue->queue_pages);
 
        return 1;
 }