memset(stats, 0, sizeof(*stats));
 
-       cb2 = kzalloc(PAGE_SIZE, GFP_ATOMIC);
+       cb2 = (void *)get_zeroed_page(GFP_ATOMIC);
        if (!cb2) {
                ehea_error("no mem for cb2");
                goto out;
        stats->rx_packets = rx_packets;
 
 out_herr:
-       kfree(cb2);
+       free_page((unsigned long)cb2);
 out:
        return stats;
 }
        struct hcp_ehea_port_cb0 *cb0;
 
        /* may be called via ehea_neq_tasklet() */
-       cb0 = kzalloc(PAGE_SIZE, GFP_ATOMIC);
+       cb0 = (void *)get_zeroed_page(GFP_ATOMIC);
        if (!cb0) {
                ehea_error("no mem for cb0");
                ret = -ENOMEM;
 out_free:
        if (ret || netif_msg_probe(port))
                ehea_dump(cb0, sizeof(*cb0), "ehea_sense_port_attr");
-       kfree(cb0);
+       free_page((unsigned long)cb0);
 out:
        return ret;
 }
        u64 hret;
        int ret = 0;
 
-       cb4 = kzalloc(PAGE_SIZE, GFP_KERNEL);
+       cb4 = (void *)get_zeroed_page(GFP_KERNEL);
        if (!cb4) {
                ehea_error("no mem for cb4");
                ret = -ENOMEM;
        if (!prop_carrier_state || (port->phy_link == EHEA_PHY_LINK_UP))
                netif_carrier_on(port->netdev);
 
-       kfree(cb4);
+       free_page((unsigned long)cb4);
 out:
        return ret;
 }
        struct hcp_ehea_port_cb0 *cb0;
 
        ret = -ENOMEM;
-       cb0 = kzalloc(PAGE_SIZE, GFP_KERNEL);
+       cb0 = (void *)get_zeroed_page(GFP_KERNEL);
        if (!cb0)
                goto out;
 
        ret = 0;
 
 out_free:
-       kfree(cb0);
+       free_page((unsigned long)cb0);
 out:
        return ret;
 }
                goto out;
        }
 
-       cb0 = kzalloc(PAGE_SIZE, GFP_KERNEL);
+       cb0 = (void *)get_zeroed_page(GFP_KERNEL);
        if (!cb0) {
                ehea_error("no mem for cb0");
                ret = -ENOMEM;
        ehea_update_bcmc_registrations();
        spin_unlock(&ehea_bcmc_regs.lock);
 out_free:
-       kfree(cb0);
+       free_page((unsigned long)cb0);
 out:
        return ret;
 }
        if ((enable && port->promisc) || (!enable && !port->promisc))
                return;
 
-       cb7 = kzalloc(PAGE_SIZE, GFP_ATOMIC);
+       cb7 = (void *)get_zeroed_page(GFP_ATOMIC);
        if (!cb7) {
                ehea_error("no mem for cb7");
                goto out;
 
        port->promisc = enable;
 out:
-       kfree(cb7);
+       free_page((unsigned long)cb7);
        return;
 }
 
 
        port->vgrp = grp;
 
-       cb1 = kzalloc(PAGE_SIZE, GFP_KERNEL);
+       cb1 = (void *)get_zeroed_page(GFP_KERNEL);
        if (!cb1) {
                ehea_error("no mem for cb1");
                goto out;
        if (hret != H_SUCCESS)
                ehea_error("modify_ehea_port failed");
 
-       kfree(cb1);
+       free_page((unsigned long)cb1);
 out:
        return;
 }
        int index;
        u64 hret;
 
-       cb1 = kzalloc(PAGE_SIZE, GFP_KERNEL);
+       cb1 = (void *)get_zeroed_page(GFP_KERNEL);
        if (!cb1) {
                ehea_error("no mem for cb1");
                goto out;
        if (hret != H_SUCCESS)
                ehea_error("modify_ehea_port failed");
 out:
-       kfree(cb1);
+       free_page((unsigned long)cb1);
        return;
 }
 
 
        vlan_group_set_device(port->vgrp, vid, NULL);
 
-       cb1 = kzalloc(PAGE_SIZE, GFP_KERNEL);
+       cb1 = (void *)get_zeroed_page(GFP_KERNEL);
        if (!cb1) {
                ehea_error("no mem for cb1");
                goto out;
        if (hret != H_SUCCESS)
                ehea_error("modify_ehea_port failed");
 out:
-       kfree(cb1);
+       free_page((unsigned long)cb1);
        return;
 }
 
        u64 dummy64 = 0;
        struct hcp_modify_qp_cb0 *cb0;
 
-       cb0 = kzalloc(PAGE_SIZE, GFP_KERNEL);
+       cb0 = (void *)get_zeroed_page(GFP_KERNEL);
        if (!cb0) {
                ret = -ENOMEM;
                goto out;
 
        ret = 0;
 out:
-       kfree(cb0);
+       free_page((unsigned long)cb0);
        return ret;
 }
 
        u64 dummy64 = 0;
        u16 dummy16 = 0;
 
-       cb0 = kzalloc(PAGE_SIZE, GFP_KERNEL);
+       cb0 = (void *)get_zeroed_page(GFP_KERNEL);
        if (!cb0) {
                ret = -ENOMEM;
                goto out;
 
        ret = 0;
 out:
-       kfree(cb0);
+       free_page((unsigned long)cb0);
 
        return ret;
 }
        u64 dummy64 = 0;
        u16 dummy16 = 0;
 
-       cb0 = kzalloc(PAGE_SIZE, GFP_KERNEL);
+       cb0 = (void *)get_zeroed_page(GFP_KERNEL);
        if (!cb0) {
                ret = -ENOMEM;
                goto out;
                ehea_refill_rq3(pr, 0);
        }
 out:
-       kfree(cb0);
+       free_page((unsigned long)cb0);
 
        return ret;
 }
        u64 hret;
        int ret;
 
-       cb = kzalloc(PAGE_SIZE, GFP_KERNEL);
+       cb = (void *)get_zeroed_page(GFP_KERNEL);
        if (!cb) {
                ret = -ENOMEM;
                goto out;
        ret = 0;
 
 out_herr:
-       kfree(cb);
+       free_page((unsigned long)cb);
 out:
        return ret;
 }
        *jumbo = 0;
 
        /* (Try to) enable *jumbo frames */
-       cb4 = kzalloc(PAGE_SIZE, GFP_KERNEL);
+       cb4 = (void *)get_zeroed_page(GFP_KERNEL);
        if (!cb4) {
                ehea_error("no mem for cb4");
                ret = -ENOMEM;
                } else
                        ret = -EINVAL;
 
-               kfree(cb4);
+               free_page((unsigned long)cb4);
        }
 out:
        return ret;