Merge master.kernel.org:/home/rmk/linux-2.6-serial
[pandora-kernel.git] / drivers / s390 / cio / qdio.c
index a5bf272..7c93a87 100644 (file)
@@ -30,7 +30,6 @@
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
-#include <linux/config.h>
 #include <linux/module.h>
 #include <linux/init.h>
 
@@ -1640,7 +1639,7 @@ next:
 
        }
        kfree(irq_ptr->qdr);
-       kfree(irq_ptr);
+       free_page((unsigned long) irq_ptr);
 }
 
 static void
@@ -2736,7 +2735,7 @@ qdio_free(struct ccw_device *cdev)
        QDIO_DBF_TEXT1(0,trace,dbf_text);
        QDIO_DBF_TEXT0(0,setup,dbf_text);
 
-       cdev->private->qdio_data = 0;
+       cdev->private->qdio_data = NULL;
 
        up(&irq_ptr->setting_up_sema);
 
@@ -2983,7 +2982,7 @@ qdio_allocate(struct qdio_initialize *init_data)
        qdio_allocate_do_dbf(init_data);
 
        /* create irq */
-       irq_ptr = kzalloc(sizeof(struct qdio_irq), GFP_KERNEL | GFP_DMA);
+       irq_ptr = (void *) get_zeroed_page(GFP_KERNEL | GFP_DMA);
 
        QDIO_DBF_TEXT0(0,setup,"irq_ptr:");
        QDIO_DBF_HEX0(0,setup,&irq_ptr,sizeof(void*));
@@ -2998,7 +2997,7 @@ qdio_allocate(struct qdio_initialize *init_data)
        /* QDR must be in DMA area since CCW data address is only 32 bit */
        irq_ptr->qdr=kmalloc(sizeof(struct qdr), GFP_KERNEL | GFP_DMA);
        if (!(irq_ptr->qdr)) {
-               kfree(irq_ptr);
+               free_page((unsigned long) irq_ptr);
                QDIO_PRINT_ERR("kmalloc of irq_ptr->qdr failed!\n");
                return -ENOMEM;
                }