From: Al Viro <v...@zeniv.linux.org.uk>

Signed-off-by: Al Viro <v...@zeniv.linux.org.uk>
---
 arch/alpha/include/asm/agp.h                       |  2 +-
 arch/alpha/kernel/pci-noop.c                       |  2 +-
 arch/alpha/kernel/pci_iommu.c                      |  4 ++--
 arch/arc/include/asm/pgalloc.h                     |  6 +++---
 arch/arm/include/asm/tlb.h                         |  2 +-
 arch/arm/kvm/mmu.c                                 |  4 ++--
 arch/arm/mm/pgd.c                                  |  2 +-
 arch/blackfin/include/asm/mmu_context.h            |  2 +-
 arch/cris/arch-v32/drivers/pci/dma.c               |  2 +-
 arch/frv/mm/dma-alloc.c                            |  2 +-
 arch/h8300/kernel/dma.c                            |  2 +-
 arch/ia64/hp/common/sba_iommu.c                    |  2 +-
 arch/ia64/include/asm/agp.h                        |  2 +-
 arch/ia64/include/asm/thread_info.h                |  2 +-
 arch/ia64/include/asm/tlb.h                        |  2 +-
 arch/ia64/kernel/uncached.c                        |  2 +-
 arch/ia64/sn/pci/pci_dma.c                         |  4 ++--
 arch/ia64/sn/pci/tioca_provider.c                  |  2 +-
 arch/m68k/kernel/dma.c                             |  2 +-
 arch/m68k/sun3/sun3dvma.c                          |  4 ++--
 arch/microblaze/kernel/dma.c                       |  2 +-
 arch/microblaze/mm/consistent.c                    |  4 ++--
 arch/mips/include/asm/mach-generic/floppy.h        |  2 +-
 arch/mips/include/asm/mach-jazz/floppy.h           |  2 +-
 arch/mips/include/asm/pgalloc.h                    |  6 +++---
 arch/mips/mm/dma-default.c                         |  2 +-
 arch/mn10300/mm/dma-alloc.c                        |  2 +-
 arch/nios2/include/asm/pgalloc.h                   |  4 ++--
 arch/nios2/mm/dma-mapping.c                        |  2 +-
 arch/parisc/include/asm/agp.h                      |  2 +-
 arch/parisc/include/asm/floppy.h                   |  2 +-
 arch/parisc/include/asm/pgalloc.h                  |  4 ++--
 arch/parisc/kernel/pci-dma.c                       |  4 ++--
 arch/powerpc/include/asm/agp.h                     |  2 +-
 arch/powerpc/kernel/dma.c                          |  2 +-
 arch/powerpc/kernel/iommu.c                        |  6 +++---
 arch/powerpc/kvm/book3s_64_mmu_hv.c                |  4 ++--
 arch/powerpc/kvm/booke.c                           |  2 +-
 arch/powerpc/mm/init_64.c                          |  3 +--
 arch/powerpc/mm/pgtable_32.c                       |  2 +-
 arch/powerpc/platforms/cell/spufs/inode.c          |  2 +-
 arch/powerpc/platforms/powernv/pci-ioda.c          |  2 +-
 arch/powerpc/platforms/ps3/system-bus.c            |  4 ++--
 arch/s390/hypfs/hypfs_diag.c                       |  2 +-
 arch/s390/include/asm/idals.h                      |  5 ++---
 arch/s390/kernel/smp.c                             |  8 ++++----
 arch/s390/kernel/suspend.c                         |  2 +-
 arch/s390/kernel/vdso.c                            |  4 ++--
 arch/s390/mm/pgtable.c                             |  4 ++--
 arch/s390/pci/pci_clp.c                            |  2 +-
 arch/s390/pci/pci_dma.c                            |  4 ++--
 arch/score/include/asm/pgalloc.h                   |  4 ++--
 arch/sh/mm/consistent.c                            |  2 +-
 arch/sparc/include/asm/agp.h                       |  2 +-
 arch/sparc/kernel/iommu.c                          |  4 ++--
 arch/sparc/kernel/ioport.c                         |  6 +++---
 arch/sparc/kernel/ldc.c                            |  6 +++---
 arch/sparc/kernel/pci_fire.c                       |  2 +-
 arch/sparc/kernel/pci_sun4v.c                      |  8 ++++----
 arch/um/drivers/net_kern.c                         |  2 +-
 arch/um/kernel/process.c                           |  2 +-
 arch/unicore32/mm/pgd.c                            |  4 ++--
 arch/x86/include/asm/agp.h                         |  2 +-
 arch/x86/include/asm/floppy.h                      |  2 +-
 arch/x86/include/asm/xen/page-coherent.h           |  2 +-
 arch/x86/kernel/pci-calgary_64.c                   |  6 +++---
 arch/x86/kernel/pci-dma.c                          |  2 +-
 arch/x86/kvm/vmx.c                                 |  2 +-
 arch/x86/mm/init_64.c                              |  2 +-
 arch/x86/platform/efi/efi.c                        |  4 ++--
 arch/x86/um/ldt.c                                  |  2 +-
 arch/x86/xen/pmu.c                                 |  4 ++--
 arch/xtensa/kernel/pci-dma.c                       |  2 +-
 crypto/xor.c                                       |  2 +-
 drivers/base/devres.c                              |  4 ++--
 drivers/block/floppy.c                             |  2 +-
 drivers/block/ps3vram.c                            |  4 ++--
 drivers/block/xen-blkfront.c                       |  4 ++--
 drivers/block/zram/zcomp.c                         |  2 +-
 drivers/char/agp/hp-agp.c                          |  2 +-
 drivers/char/agp/uninorth-agp.c                    |  4 ++--
 drivers/char/mbcs.c                                |  4 ++--
 drivers/crypto/omap-aes.c                          |  4 ++--
 drivers/crypto/omap-des.c                          |  4 ++--
 drivers/dma/ste_dma40.c                            |  6 +++---
 drivers/firmware/dell_rbu.c                        |  9 ++++-----
 drivers/gpu/drm/amd/amdkfd/kfd_events.c            |  2 +-
 drivers/hv/channel.c                               |  4 ++--
 drivers/hv/connection.c                            |  6 +++---
 drivers/infiniband/hw/qib/qib_dma.c                |  2 +-
 drivers/iommu/amd_iommu_init.c                     | 21 ++++++++-------------
 drivers/iommu/exynos-iommu.c                       |  6 +++---
 drivers/iommu/fsl_pamu.c                           |  2 +-
 drivers/iommu/intel-svm.c                          |  8 ++++----
 drivers/iommu/intel_irq_remapping.c                |  2 +-
 drivers/iommu/msm_iommu.c                          |  2 +-
 drivers/md/bcache/bset.c                           | 10 ++++------
 drivers/md/bcache/btree.c                          |  2 +-
 drivers/md/bcache/journal.c                        |  4 ++--
 drivers/md/bcache/super.c                          |  4 ++--
 drivers/md/dm-bufio.c                              |  2 +-
 drivers/media/pci/solo6x10/solo6x10-p2m.c          |  6 +++---
 drivers/media/platform/davinci/dm644x_ccdc.c       |  4 ++--
 drivers/media/platform/omap/omap_voutlib.c         |  2 +-
 drivers/misc/cxl/native.c                          |  2 +-
 drivers/misc/mic/card/mic_virtio.c                 |  2 +-
 drivers/misc/mic/host/mic_virtio.c                 | 11 ++++-------
 drivers/misc/mic/scif/scif_rma.h                   |  2 +-
 drivers/misc/sgi-gru/grufile.c                     |  4 ++--
 drivers/misc/sgi-xp/xpc_uv.c                       |  4 ++--
 drivers/mmc/host/tmio_mmc_dma.c                    |  2 +-
 drivers/net/appletalk/ltpc.c                       |  4 ++--
 drivers/net/ethernet/amd/mvme147.c                 |  4 ++--
 drivers/net/ethernet/cavium/liquidio/octeon_main.h |  4 ++--
 drivers/net/ethernet/cirrus/cs89x0.c               |  2 +-
 drivers/net/ethernet/sgi/ioc3-eth.c                |  2 +-
 drivers/net/ethernet/sun/niu.c                     |  2 +-
 drivers/net/ethernet/tile/tilegx.c                 |  6 ++----
 drivers/net/irda/au1k_ir.c                         |  2 +-
 drivers/net/rionet.c                               |  2 +-
 drivers/net/wireless/b43/debugfs.c                 |  4 ++--
 drivers/net/wireless/b43legacy/debugfs.c           |  4 ++--
 drivers/net/wireless/iwlegacy/common.h             |  2 +-
 drivers/net/wireless/iwlwifi/iwl-trans.h           |  2 +-
 drivers/net/wireless/ti/wlcore/main.c              |  4 ++--
 drivers/parisc/ccio-dma.c                          |  2 +-
 drivers/parisc/ccio-rm-dma.c                       |  2 +-
 drivers/parisc/sba_iommu.c                         | 14 +++++++-------
 drivers/pci/host/pci-tegra.c                       |  2 +-
 drivers/pci/host/pcie-xilinx.c                     |  2 +-
 drivers/s390/block/dasd.c                          |  4 ++--
 drivers/s390/char/hmcdrv_cache.c                   |  2 +-
 drivers/s390/char/hmcdrv_ftp.c                     |  2 +-
 drivers/s390/char/tty3270.c                        |  4 ++--
 drivers/s390/char/vmcp.c                           |  5 ++---
 drivers/s390/cio/cmf.c                             |  4 ++--
 drivers/scsi/cxlflash/main.c                       |  2 +-
 drivers/scsi/libiscsi.c                            |  2 +-
 drivers/scsi/lpfc/lpfc_init.c                      |  4 ++--
 drivers/scsi/megaraid/megaraid_sas_base.c          |  4 ++--
 drivers/scsi/megaraid/megaraid_sas_fusion.c        |  4 ++--
 drivers/scsi/mpt3sas/mpt3sas_base.c                |  4 ++--
 drivers/scsi/ncr53c8xx.c                           |  2 +-
 drivers/scsi/sym53c8xx_2/sym_hipd.h                |  2 +-
 drivers/scsi/vmw_pvscsi.c                          |  5 ++---
 drivers/sh/maple/maple.c                           |  2 +-
 drivers/staging/rdma/ehca/ehca_mrmw.c              |  4 ++--
 drivers/staging/rdma/hfi1/dma.c                    |  2 +-
 drivers/staging/rdma/ipath/ipath_dma.c             |  2 +-
 drivers/usb/core/devices.c                         |  4 ++--
 drivers/video/fbdev/vermilion/vermilion.c          |  2 +-
 drivers/xen/swiotlb-xen.c                          |  4 ++--
 fs/ceph/mds_client.c                               |  2 +-
 fs/ecryptfs/crypto.c                               |  2 +-
 fs/hfs/mdb.c                                       |  2 +-
 fs/jbd2/journal.c                                  |  4 ++--
 fs/nilfs2/ioctl.c                                  |  2 +-
 fs/proc/vmcore.c                                   |  2 +-
 include/linux/gfp.h                                |  4 ++--
 kernel/trace/ftrace.c                              |  4 ++--
 kernel/trace/trace_events.c                        |  8 ++++----
 lib/percpu_ida.c                                   |  2 +-
 lib/raid6/algos.c                                  |  2 +-
 lib/swiotlb.c                                      | 21 +++++++++------------
 mm/memory.c                                        |  2 +-
 mm/page_alloc.c                                    |  8 ++++----
 mm/slob.c                                          |  2 +-
 mm/slub.c                                          |  3 +--
 mm/sparse.c                                        |  2 +-
 net/core/neighbour.c                               |  2 +-
 net/dccp/proto.c                                   |  8 ++++----
 net/ipv4/fib_semantics.c                           |  2 +-
 net/netfilter/nf_conntrack_core.c                  |  3 +--
 net/netlink/af_netlink.c                           |  2 +-
 net/packet/af_packet.c                             |  3 +--
 net/sched/sch_api.c                                |  2 +-
 net/sctp/protocol.c                                |  8 ++++----
 net/sctp/ssnmap.c                                  |  4 ++--
 net/xfrm/xfrm_hash.c                               |  2 +-
 security/integrity/ima/ima_crypto.c                |  2 +-
 sound/core/memalloc.c                              |  2 +-
 sound/oss/dmabuf.c                                 |  2 +-
 sound/usb/usx2y/usb_stream.c                       |  4 ++--
 183 files changed, 310 insertions(+), 333 deletions(-)

diff --git a/arch/alpha/include/asm/agp.h b/arch/alpha/include/asm/agp.h
index a94d48b..2fe5800 100644
--- a/arch/alpha/include/asm/agp.h
+++ b/arch/alpha/include/asm/agp.h
@@ -13,6 +13,6 @@
 #define alloc_gatt_pages(order)                \
        ((char *)__get_free_pages(GFP_KERNEL, (order)))
 #define free_gatt_pages(table, order)  \
-       free_pages((unsigned long)(table), (order))
+       free_pages((table), (order))
 
 #endif
diff --git a/arch/alpha/kernel/pci-noop.c b/arch/alpha/kernel/pci-noop.c
index 2b1f4a1..d3bcb88 100644
--- a/arch/alpha/kernel/pci-noop.c
+++ b/arch/alpha/kernel/pci-noop.c
@@ -127,7 +127,7 @@ static void alpha_noop_free_coherent(struct device *dev, 
size_t size,
                                     void *cpu_addr, dma_addr_t dma_addr,
                                     struct dma_attrs *attrs)
 {
-       free_pages((unsigned long)cpu_addr, get_order(size));
+       free_pages(cpu_addr, get_order(size));
 }
 
 static dma_addr_t alpha_noop_map_page(struct device *dev, struct page *page,
diff --git a/arch/alpha/kernel/pci_iommu.c b/arch/alpha/kernel/pci_iommu.c
index 8969bf2..fb0b20ee 100644
--- a/arch/alpha/kernel/pci_iommu.c
+++ b/arch/alpha/kernel/pci_iommu.c
@@ -455,7 +455,7 @@ try_again:
 
        *dma_addrp = pci_map_single_1(pdev, cpu_addr, size, 0);
        if (*dma_addrp == 0) {
-               free_pages((unsigned long)cpu_addr, order);
+               free_pages(cpu_addr, order);
                if (alpha_mv.mv_pci_tbi || (gfp & GFP_DMA))
                        return NULL;
                /* The address doesn't fit required mask and we
@@ -482,7 +482,7 @@ static void alpha_pci_free_coherent(struct device *dev, 
size_t size,
 {
        struct pci_dev *pdev = alpha_gendev_to_pci(dev);
        pci_unmap_single(pdev, dma_addr, size, PCI_DMA_BIDIRECTIONAL);
-       free_pages((unsigned long)cpu_addr, get_order(size));
+       free_pages(cpu_addr, get_order(size));
 
        DBGA2("pci_free_consistent: [%llx,%zx] from %pf\n",
              dma_addr, size, __builtin_return_address(0));
diff --git a/arch/arc/include/asm/pgalloc.h b/arch/arc/include/asm/pgalloc.h
index 86ed671..1200117 100644
--- a/arch/arc/include/asm/pgalloc.h
+++ b/arch/arc/include/asm/pgalloc.h
@@ -73,7 +73,7 @@ static inline pgd_t *pgd_alloc(struct mm_struct *mm)
 
 static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd)
 {
-       free_pages((unsigned long)pgd, __get_order_pgd());
+       free_pages(pgd, __get_order_pgd());
 }
 
 
@@ -122,13 +122,13 @@ pte_alloc_one(struct mm_struct *mm, unsigned long address)
 
 static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte)
 {
-       free_pages((unsigned long)pte, __get_order_pte()); /* takes phy addr */
+       free_pages(pte, __get_order_pte()); /* takes phy addr */
 }
 
 static inline void pte_free(struct mm_struct *mm, pgtable_t ptep)
 {
        pgtable_page_dtor(virt_to_page(ptep));
-       free_pages((unsigned long)ptep, __get_order_pte());
+       free_pages(ptep, __get_order_pte());
 }
 
 #define __pte_free_tlb(tlb, pte, addr)  pte_free((tlb)->mm, pte)
diff --git a/arch/arm/include/asm/tlb.h b/arch/arm/include/asm/tlb.h
index 3cadb72..c8611f2 100644
--- a/arch/arm/include/asm/tlb.h
+++ b/arch/arm/include/asm/tlb.h
@@ -174,7 +174,7 @@ tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start, 
unsigned long end)
        check_pgt_cache();
 
        if (tlb->pages != tlb->local)
-               free_pages((unsigned long)tlb->pages, 0);
+               free_pages(tlb->pages, 0);
 }
 
 /*
diff --git a/arch/arm/kvm/mmu.c b/arch/arm/kvm/mmu.c
index 5de6c6b..190e9fb 100644
--- a/arch/arm/kvm/mmu.c
+++ b/arch/arm/kvm/mmu.c
@@ -402,7 +402,7 @@ void free_boot_hyp_pgd(void)
        if (boot_hyp_pgd) {
                unmap_range(NULL, boot_hyp_pgd, hyp_idmap_start, PAGE_SIZE);
                unmap_range(NULL, boot_hyp_pgd, TRAMPOLINE_VA, PAGE_SIZE);
-               free_pages((unsigned long)boot_hyp_pgd, hyp_pgd_order);
+               free_pages(boot_hyp_pgd, hyp_pgd_order);
                boot_hyp_pgd = NULL;
        }
 
@@ -436,7 +436,7 @@ void free_hyp_pgds(void)
                for (addr = VMALLOC_START; is_vmalloc_addr((void*)addr); addr 
+= PGDIR_SIZE)
                        unmap_range(NULL, hyp_pgd, KERN_TO_HYP(addr), 
PGDIR_SIZE);
 
-               free_pages((unsigned long)hyp_pgd, hyp_pgd_order);
+               free_pages(hyp_pgd, hyp_pgd_order);
                hyp_pgd = NULL;
        }
        if (merged_hyp_pgd) {
diff --git a/arch/arm/mm/pgd.c b/arch/arm/mm/pgd.c
index e683db1..b8799fa 100644
--- a/arch/arm/mm/pgd.c
+++ b/arch/arm/mm/pgd.c
@@ -24,7 +24,7 @@
 #define __pgd_free(pgd)        kfree(pgd)
 #else
 #define __pgd_alloc()  (pgd_t *)__get_free_pages(GFP_KERNEL | __GFP_REPEAT, 2)
-#define __pgd_free(pgd)        free_pages((unsigned long)pgd, 2)
+#define __pgd_free(pgd)        free_pages(pgd, 2)
 #endif
 
 /*
diff --git a/arch/blackfin/include/asm/mmu_context.h 
b/arch/blackfin/include/asm/mmu_context.h
index 15b16d3..198cb70 100644
--- a/arch/blackfin/include/asm/mmu_context.h
+++ b/arch/blackfin/include/asm/mmu_context.h
@@ -203,7 +203,7 @@ static inline void destroy_context(struct mm_struct *mm)
 #ifdef CONFIG_MPU
        if (current_rwx_mask[cpu] == mm->context.page_rwx_mask)
                current_rwx_mask[cpu] = NULL;
-       free_pages((unsigned long)mm->context.page_rwx_mask, page_mask_order);
+       free_pages(mm->context.page_rwx_mask, page_mask_order);
 #endif
 }
 
diff --git a/arch/cris/arch-v32/drivers/pci/dma.c 
b/arch/cris/arch-v32/drivers/pci/dma.c
index ee55578..9b43cec 100644
--- a/arch/cris/arch-v32/drivers/pci/dma.c
+++ b/arch/cris/arch-v32/drivers/pci/dma.c
@@ -45,6 +45,6 @@ void dma_free_coherent(struct device *dev, size_t size,
        int order = get_order(size);
 
        if (!dma_release_from_coherent(dev, order, vaddr))
-               free_pages((unsigned long)vaddr, order);
+               free_pages(vaddr, order);
 }
 
diff --git a/arch/frv/mm/dma-alloc.c b/arch/frv/mm/dma-alloc.c
index 7a73aae..c4c19ff 100644
--- a/arch/frv/mm/dma-alloc.c
+++ b/arch/frv/mm/dma-alloc.c
@@ -101,7 +101,7 @@ void *consistent_alloc(gfp_t gfp, size_t size, dma_addr_t 
*dma_handle)
        /* allocate some common virtual space to map the new pages */
        area = get_vm_area(size, VM_ALLOC);
        if (area == 0) {
-               free_pages(page, order);
+               free_pages((void *)page, order);
                return NULL;
        }
        va = VMALLOC_VMADDR(area->addr);
diff --git a/arch/h8300/kernel/dma.c b/arch/h8300/kernel/dma.c
index eeb13d3..063a0f5 100644
--- a/arch/h8300/kernel/dma.c
+++ b/arch/h8300/kernel/dma.c
@@ -35,7 +35,7 @@ static void dma_free(struct device *dev, size_t size,
                     struct dma_attrs *attrs)
 
 {
-       free_pages((unsigned long)vaddr, get_order(size));
+       free_pages(vaddr, get_order(size));
 }
 
 static dma_addr_t map_page(struct device *dev, struct page *page,
diff --git a/arch/ia64/hp/common/sba_iommu.c b/arch/ia64/hp/common/sba_iommu.c
index a6d6190..2988500 100644
--- a/arch/ia64/hp/common/sba_iommu.c
+++ b/arch/ia64/hp/common/sba_iommu.c
@@ -1194,7 +1194,7 @@ static void sba_free_coherent(struct device *dev, size_t 
size, void *vaddr,
                              dma_addr_t dma_handle, struct dma_attrs *attrs)
 {
        sba_unmap_single_attrs(dev, dma_handle, size, 0, NULL);
-       free_pages((unsigned long) vaddr, get_order(size));
+       free_pages(vaddr, get_order(size));
 }
 
 
diff --git a/arch/ia64/include/asm/agp.h b/arch/ia64/include/asm/agp.h
index 01d09c40..80c30d4 100644
--- a/arch/ia64/include/asm/agp.h
+++ b/arch/ia64/include/asm/agp.h
@@ -21,6 +21,6 @@
 #define alloc_gatt_pages(order)                \
        ((char *)__get_free_pages(GFP_KERNEL, (order)))
 #define free_gatt_pages(table, order)  \
-       free_pages((unsigned long)(table), (order))
+       free_pages((table), (order))
 
 #endif /* _ASM_IA64_AGP_H */
diff --git a/arch/ia64/include/asm/thread_info.h 
b/arch/ia64/include/asm/thread_info.h
index aa995b6..53c52e9 100644
--- a/arch/ia64/include/asm/thread_info.h
+++ b/arch/ia64/include/asm/thread_info.h
@@ -81,7 +81,7 @@ struct thread_info {
                                                                                
\
        ret;                                                                    
\
 })
-#define free_task_struct(tsk)  free_pages((unsigned long) (tsk), 
KERNEL_STACK_SIZE_ORDER)
+#define free_task_struct(tsk)  free_pages((tsk), KERNEL_STACK_SIZE_ORDER)
 
 #endif /* !__ASSEMBLY */
 
diff --git a/arch/ia64/include/asm/tlb.h b/arch/ia64/include/asm/tlb.h
index 39d64e0d..52ab3a9 100644
--- a/arch/ia64/include/asm/tlb.h
+++ b/arch/ia64/include/asm/tlb.h
@@ -197,7 +197,7 @@ tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start, 
unsigned long end)
        check_pgt_cache();
 
        if (tlb->pages != tlb->local)
-               free_pages((unsigned long)tlb->pages, 0);
+               free_pages(tlb->pages, 0);
 }
 
 /*
diff --git a/arch/ia64/kernel/uncached.c b/arch/ia64/kernel/uncached.c
index f3976da..9b90526 100644
--- a/arch/ia64/kernel/uncached.c
+++ b/arch/ia64/kernel/uncached.c
@@ -166,7 +166,7 @@ failed:
        for (i = 0; i < (IA64_GRANULE_SIZE / PAGE_SIZE); i++)
                ClearPageUncached(&page[i]);
 
-       free_pages(c_addr, IA64_GRANULE_SHIFT-PAGE_SHIFT);
+       free_pages((void *)c_addr, IA64_GRANULE_SHIFT-PAGE_SHIFT);
        mutex_unlock(&uc_pool->add_chunk_mutex);
        return -1;
 }
diff --git a/arch/ia64/sn/pci/pci_dma.c b/arch/ia64/sn/pci/pci_dma.c
index 8f59907..f25c898 100644
--- a/arch/ia64/sn/pci/pci_dma.c
+++ b/arch/ia64/sn/pci/pci_dma.c
@@ -120,7 +120,7 @@ static void *sn_dma_alloc_coherent(struct device *dev, 
size_t size,
                                                   SN_DMA_ADDR_PHYS);
        if (!*dma_handle) {
                printk(KERN_ERR "%s: out of ATEs\n", __func__);
-               free_pages((unsigned long)cpuaddr, get_order(size));
+               free_pages(cpuaddr, get_order(size));
                return NULL;
        }
 
@@ -146,7 +146,7 @@ static void sn_dma_free_coherent(struct device *dev, size_t 
size, void *cpu_addr
        BUG_ON(!dev_is_pci(dev));
 
        provider->dma_unmap(pdev, dma_handle, 0);
-       free_pages((unsigned long)cpu_addr, get_order(size));
+       free_pages(cpu_addr, get_order(size));
 }
 
 /**
diff --git a/arch/ia64/sn/pci/tioca_provider.c 
b/arch/ia64/sn/pci/tioca_provider.c
index a70b11f..76bf4f0 100644
--- a/arch/ia64/sn/pci/tioca_provider.c
+++ b/arch/ia64/sn/pci/tioca_provider.c
@@ -154,7 +154,7 @@ tioca_gart_init(struct tioca_kernel *tioca_kern)
        tioca_kern->ca_pcigart_pagemap =
            kzalloc(tioca_kern->ca_pcigart_entries / 8, GFP_KERNEL);
        if (!tioca_kern->ca_pcigart_pagemap) {
-               free_pages((unsigned long)tioca_kern->ca_gart,
+               free_pages(tioca_kern->ca_gart,
                           get_order(tioca_kern->ca_gart_size));
                return -1;
        }
diff --git a/arch/m68k/kernel/dma.c b/arch/m68k/kernel/dma.c
index 564665f..2bdf7bf 100644
--- a/arch/m68k/kernel/dma.c
+++ b/arch/m68k/kernel/dma.c
@@ -93,7 +93,7 @@ void *dma_alloc_coherent(struct device *dev, size_t size,
 void dma_free_coherent(struct device *dev, size_t size,
                         void *vaddr, dma_addr_t dma_handle)
 {
-       free_pages((unsigned long)vaddr, get_order(size));
+       free_pages(vaddr, get_order(size));
 }
 
 #endif /* CONFIG_MMU && !CONFIG_COLDFIRE */
diff --git a/arch/m68k/sun3/sun3dvma.c b/arch/m68k/sun3/sun3dvma.c
index b37521a..fdc4900 100644
--- a/arch/m68k/sun3/sun3dvma.c
+++ b/arch/m68k/sun3/sun3dvma.c
@@ -352,7 +352,7 @@ void *dvma_malloc_align(unsigned long len, unsigned long 
align)
                return NULL;
 
        if((baddr = (unsigned long)dvma_map_align(kaddr, len, align)) == 0) {
-               free_pages(kaddr, get_order(len));
+               free_pages((void *)kaddr, get_order(len));
                return NULL;
        }
 
@@ -360,7 +360,7 @@ void *dvma_malloc_align(unsigned long len, unsigned long 
align)
 
        if(dvma_map_cpu(kaddr, vaddr, len) < 0) {
                dvma_unmap((void *)baddr);
-               free_pages(kaddr, get_order(len));
+               free_pages((void *)kaddr, get_order(len));
                return NULL;
        }
 
diff --git a/arch/microblaze/kernel/dma.c b/arch/microblaze/kernel/dma.c
index bf4dec2..641cbcb 100644
--- a/arch/microblaze/kernel/dma.c
+++ b/arch/microblaze/kernel/dma.c
@@ -47,7 +47,7 @@ static void dma_direct_free_coherent(struct device *dev, 
size_t size,
 #ifdef NOT_COHERENT_CACHE
        consistent_free(size, vaddr);
 #else
-       free_pages((unsigned long)vaddr, get_order(size));
+       free_pages(vaddr, get_order(size));
 #endif
 }
 
diff --git a/arch/microblaze/mm/consistent.c b/arch/microblaze/mm/consistent.c
index b06c3a7..a4b587a 100644
--- a/arch/microblaze/mm/consistent.c
+++ b/arch/microblaze/mm/consistent.c
@@ -110,7 +110,7 @@ void *consistent_alloc(gfp_t gfp, size_t size, dma_addr_t 
*dma_handle)
        /* Allocate some common virtual space to map the new pages. */
        area = get_vm_area(size, VM_ALLOC);
        if (!area) {
-               free_pages(vaddr, order);
+               free_pages((void *)vaddr, order);
                return NULL;
        }
        va = (unsigned long) area->addr;
@@ -148,7 +148,7 @@ void *consistent_alloc(gfp_t gfp, size_t size, dma_addr_t 
*dma_handle)
        }
 
        if (err) {
-               free_pages(vaddr, order);
+               free_pages((void *)vaddr, order);
                return NULL;
        }
 
diff --git a/arch/mips/include/asm/mach-generic/floppy.h 
b/arch/mips/include/asm/mach-generic/floppy.h
index e2561d9..7b0b508 100644
--- a/arch/mips/include/asm/mach-generic/floppy.h
+++ b/arch/mips/include/asm/mach-generic/floppy.h
@@ -124,7 +124,7 @@ static inline unsigned long fd_dma_mem_alloc(unsigned long 
size)
 
 static inline void fd_dma_mem_free(unsigned long addr, unsigned long size)
 {
-       free_pages(addr, get_order(size));
+       free_pages((void *)addr, get_order(size));
 }
 
 static inline unsigned long fd_drive_type(unsigned long n)
diff --git a/arch/mips/include/asm/mach-jazz/floppy.h 
b/arch/mips/include/asm/mach-jazz/floppy.h
index 4b86c88a..4aaf35b 100644
--- a/arch/mips/include/asm/mach-jazz/floppy.h
+++ b/arch/mips/include/asm/mach-jazz/floppy.h
@@ -117,7 +117,7 @@ static inline unsigned long fd_dma_mem_alloc(unsigned long 
size)
 static inline void fd_dma_mem_free(unsigned long addr, unsigned long size)
 {
        vdma_free(vdma_phys2log(CPHYSADDR(addr)));
-       free_pages(addr, get_order(size));
+       free_pages((void *)addr, get_order(size));
 }
 
 static inline unsigned long fd_drive_type(unsigned long n)
diff --git a/arch/mips/include/asm/pgalloc.h b/arch/mips/include/asm/pgalloc.h
index b336037..e29cc40 100644
--- a/arch/mips/include/asm/pgalloc.h
+++ b/arch/mips/include/asm/pgalloc.h
@@ -61,7 +61,7 @@ static inline pgd_t *pgd_alloc(struct mm_struct *mm)
 
 static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd)
 {
-       free_pages((unsigned long)pgd, PGD_ORDER);
+       free_pages(pgd, PGD_ORDER);
 }
 
 static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm,
@@ -92,7 +92,7 @@ static inline struct page *pte_alloc_one(struct mm_struct *mm,
 
 static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte)
 {
-       free_pages((unsigned long)pte, PTE_ORDER);
+       free_pages(pte, PTE_ORDER);
 }
 
 static inline void pte_free(struct mm_struct *mm, pgtable_t pte)
@@ -121,7 +121,7 @@ static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, 
unsigned long address)
 
 static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd)
 {
-       free_pages((unsigned long)pmd, PMD_ORDER);
+       free_pages(pmd, PMD_ORDER);
 }
 
 #define __pmd_free_tlb(tlb, x, addr)   pmd_free((tlb)->mm, x)
diff --git a/arch/mips/mm/dma-default.c b/arch/mips/mm/dma-default.c
index 730d394..d3c1cec 100644
--- a/arch/mips/mm/dma-default.c
+++ b/arch/mips/mm/dma-default.c
@@ -171,7 +171,7 @@ static void mips_dma_free_noncoherent(struct device *dev, 
size_t size,
                void *vaddr, dma_addr_t dma_handle)
 {
        plat_unmap_dma_mem(dev, dma_handle, size, DMA_BIDIRECTIONAL);
-       free_pages((unsigned long) vaddr, get_order(size));
+       free_pages(vaddr, get_order(size));
 }
 
 static void mips_dma_free_coherent(struct device *dev, size_t size, void 
*vaddr,
diff --git a/arch/mn10300/mm/dma-alloc.c b/arch/mn10300/mm/dma-alloc.c
index e244ebe..5f3132a4 100644
--- a/arch/mn10300/mm/dma-alloc.c
+++ b/arch/mn10300/mm/dma-alloc.c
@@ -71,6 +71,6 @@ void dma_free_coherent(struct device *dev, size_t size, void 
*vaddr,
        if (addr >= 0x9c000000)
                return;
 
-       free_pages(addr, get_order(size));
+       free_pages((void *)addr, get_order(size));
 }
 EXPORT_SYMBOL(dma_free_coherent);
diff --git a/arch/nios2/include/asm/pgalloc.h b/arch/nios2/include/asm/pgalloc.h
index 6e2985e..91cd323 100644
--- a/arch/nios2/include/asm/pgalloc.h
+++ b/arch/nios2/include/asm/pgalloc.h
@@ -34,7 +34,7 @@ extern pgd_t *pgd_alloc(struct mm_struct *mm);
 
 static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd)
 {
-       free_pages((unsigned long)pgd, PGD_ORDER);
+       free_pages(pgd, PGD_ORDER);
 }
 
 static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm,
@@ -66,7 +66,7 @@ static inline pgtable_t pte_alloc_one(struct mm_struct *mm,
 
 static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte)
 {
-       free_pages((unsigned long)pte, PTE_ORDER);
+       free_pages(pte, PTE_ORDER);
 }
 
 static inline void pte_free(struct mm_struct *mm, struct page *pte)
diff --git a/arch/nios2/mm/dma-mapping.c b/arch/nios2/mm/dma-mapping.c
index ac5da75..fa242ab 100644
--- a/arch/nios2/mm/dma-mapping.c
+++ b/arch/nios2/mm/dma-mapping.c
@@ -52,7 +52,7 @@ void dma_free_coherent(struct device *dev, size_t size, void 
*vaddr,
 {
        unsigned long addr = (unsigned long) CAC_ADDR((unsigned long) vaddr);
 
-       free_pages(addr, get_order(size));
+       free_pages((void *)addr, get_order(size));
 }
 EXPORT_SYMBOL(dma_free_coherent);
 
diff --git a/arch/parisc/include/asm/agp.h b/arch/parisc/include/asm/agp.h
index d226ffa..31f67a5 100644
--- a/arch/parisc/include/asm/agp.h
+++ b/arch/parisc/include/asm/agp.h
@@ -15,6 +15,6 @@
 #define alloc_gatt_pages(order)                \
        ((char *)__get_free_pages(GFP_KERNEL, (order)))
 #define free_gatt_pages(table, order)  \
-       free_pages((unsigned long)(table), (order))
+       free_pages((table), (order))
 
 #endif /* _ASM_PARISC_AGP_H */
diff --git a/arch/parisc/include/asm/floppy.h b/arch/parisc/include/asm/floppy.h
index f84ff12..ce08762 100644
--- a/arch/parisc/include/asm/floppy.h
+++ b/arch/parisc/include/asm/floppy.h
@@ -182,7 +182,7 @@ static void _fd_dma_mem_free(unsigned long addr, unsigned 
long size)
        if((unsigned int) addr >= (unsigned int) high_memory)
                return vfree((void *)addr);
        else
-               free_pages(addr, get_order(size));              
+               free_pages((void *)addr, get_order(size));              
 }
 
 #define fd_dma_mem_free(addr, size)  _fd_dma_mem_free(addr, size) 
diff --git a/arch/parisc/include/asm/pgalloc.h 
b/arch/parisc/include/asm/pgalloc.h
index daca63d..51cb827 100644
--- a/arch/parisc/include/asm/pgalloc.h
+++ b/arch/parisc/include/asm/pgalloc.h
@@ -48,7 +48,7 @@ static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd)
 #if CONFIG_PGTABLE_LEVELS == 3
        pgd -= PTRS_PER_PGD;
 #endif
-       free_pages((unsigned long)pgd, PGD_ALLOC_ORDER);
+       free_pages(pgd, PGD_ALLOC_ORDER);
 }
 
 #if CONFIG_PGTABLE_LEVELS == 3
@@ -82,7 +82,7 @@ static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd)
                mm_inc_nr_pmds(mm);
                return;
        }
-       free_pages((unsigned long)pmd, PMD_ORDER);
+       free_pages(pmd, PMD_ORDER);
 }
 
 #else
diff --git a/arch/parisc/kernel/pci-dma.c b/arch/parisc/kernel/pci-dma.c
index b9402c9..3c4ebba 100644
--- a/arch/parisc/kernel/pci-dma.c
+++ b/arch/parisc/kernel/pci-dma.c
@@ -447,7 +447,7 @@ static void pa11_dma_free_consistent (struct device *dev, 
size_t size, void *vad
        size = 1 << (order + PAGE_SHIFT);
        unmap_uncached_pages((unsigned long)vaddr, size);
        pcxl_free_range((unsigned long)vaddr, size);
-       free_pages((unsigned long)__va(dma_handle), order);
+       free_pages(__va(dma_handle), order);
 }
 
 static dma_addr_t pa11_dma_map_single(struct device *dev, void *addr, size_t 
size, enum dma_data_direction direction)
@@ -581,7 +581,7 @@ static void *pa11_dma_alloc_noncoherent(struct device *dev, 
size_t size,
 static void pa11_dma_free_noncoherent(struct device *dev, size_t size,
                                        void *vaddr, dma_addr_t iova)
 {
-       free_pages((unsigned long)vaddr, get_order(size));
+       free_pages(vaddr, get_order(size));
        return;
 }
 
diff --git a/arch/powerpc/include/asm/agp.h b/arch/powerpc/include/asm/agp.h
index 416e12c..06df165 100644
--- a/arch/powerpc/include/asm/agp.h
+++ b/arch/powerpc/include/asm/agp.h
@@ -12,7 +12,7 @@
 #define alloc_gatt_pages(order)                \
        ((char *)__get_free_pages(GFP_KERNEL, (order)))
 #define free_gatt_pages(table, order)  \
-       free_pages((unsigned long)(table), (order))
+       free_pages((table), (order))
 
 #endif /* __KERNEL__ */
 #endif /* _ASM_POWERPC_AGP_H */
diff --git a/arch/powerpc/kernel/dma.c b/arch/powerpc/kernel/dma.c
index 3f1472a..600fffc 100644
--- a/arch/powerpc/kernel/dma.c
+++ b/arch/powerpc/kernel/dma.c
@@ -126,7 +126,7 @@ void __dma_direct_free_coherent(struct device *dev, size_t 
size,
 #ifdef CONFIG_NOT_COHERENT_CACHE
        __dma_free_coherent(size, vaddr);
 #else
-       free_pages((unsigned long)vaddr, get_order(size));
+       free_pages(vaddr, get_order(size));
 #endif
 }
 
diff --git a/arch/powerpc/kernel/iommu.c b/arch/powerpc/kernel/iommu.c
index a8e3490..9fde7c9 100644
--- a/arch/powerpc/kernel/iommu.c
+++ b/arch/powerpc/kernel/iommu.c
@@ -739,7 +739,7 @@ void iommu_free_table(struct iommu_table *tbl, const char 
*node_name)
 
        /* free bitmap */
        order = get_order(bitmap_sz);
-       free_pages((unsigned long) tbl->it_map, order);
+       free_pages(tbl->it_map, order);
 
        /* free table */
        kfree(tbl);
@@ -847,7 +847,7 @@ void *iommu_alloc_coherent(struct device *dev, struct 
iommu_table *tbl,
        mapping = iommu_alloc(dev, tbl, ret, nio_pages, DMA_BIDIRECTIONAL,
                              mask >> tbl->it_page_shift, io_order, NULL);
        if (mapping == DMA_ERROR_CODE) {
-               free_pages((unsigned long)ret, order);
+               free_pages(ret, order);
                return NULL;
        }
        *dma_handle = mapping;
@@ -864,7 +864,7 @@ void iommu_free_coherent(struct iommu_table *tbl, size_t 
size,
                nio_pages = size >> tbl->it_page_shift;
                iommu_free(tbl, dma_handle, nio_pages);
                size = PAGE_ALIGN(size);
-               free_pages((unsigned long)vaddr, get_order(size));
+               free_pages(vaddr, get_order(size));
        }
 }
 
diff --git a/arch/powerpc/kvm/book3s_64_mmu_hv.c 
b/arch/powerpc/kvm/book3s_64_mmu_hv.c
index fb37290..e398fdc 100644
--- a/arch/powerpc/kvm/book3s_64_mmu_hv.c
+++ b/arch/powerpc/kvm/book3s_64_mmu_hv.c
@@ -108,7 +108,7 @@ long kvmppc_alloc_hpt(struct kvm *kvm, u32 *htab_orderp)
        if (kvm->arch.hpt_cma_alloc)
                kvm_release_hpt(page, 1 << (order - PAGE_SHIFT));
        else
-               free_pages(hpt, order - PAGE_SHIFT);
+               free_pages((void *)hpt, order - PAGE_SHIFT);
        return -ENOMEM;
 }
 
@@ -156,7 +156,7 @@ void kvmppc_free_hpt(struct kvm *kvm)
                kvm_release_hpt(virt_to_page(kvm->arch.hpt_virt),
                                1 << (kvm->arch.hpt_order - PAGE_SHIFT));
        else
-               free_pages(kvm->arch.hpt_virt,
+               free_pages((void *)kvm->arch.hpt_virt,
                           kvm->arch.hpt_order - PAGE_SHIFT);
 }
 
diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
index fd587517..949a078 100644
--- a/arch/powerpc/kvm/booke.c
+++ b/arch/powerpc/kvm/booke.c
@@ -2158,6 +2158,6 @@ int __init kvmppc_booke_init(void)
 
 void __exit kvmppc_booke_exit(void)
 {
-       free_pages(kvmppc_booke_handlers, VCPU_SIZE_ORDER);
+       free_pages((void *)kvmppc_booke_handlers, VCPU_SIZE_ORDER);
        kvm_exit();
 }
diff --git a/arch/powerpc/mm/init_64.c b/arch/powerpc/mm/init_64.c
index d747dd7..c709351 100644
--- a/arch/powerpc/mm/init_64.c
+++ b/arch/powerpc/mm/init_64.c
@@ -397,8 +397,7 @@ void __ref vmemmap_free(unsigned long start, unsigned long 
end)
                                                free_reserved_page(page++);
                                }
                        } else
-                               free_pages((unsigned long)(__va(addr)),
-                                                       get_order(page_size));
+                               free_pages(__va(addr), get_order(page_size));
 
                        vmemmap_remove_mapping(start, page_size);
                }
diff --git a/arch/powerpc/mm/pgtable_32.c b/arch/powerpc/mm/pgtable_32.c
index 7692d1b..89bfc17 100644
--- a/arch/powerpc/mm/pgtable_32.c
+++ b/arch/powerpc/mm/pgtable_32.c
@@ -100,7 +100,7 @@ void pgd_free(struct mm_struct *mm, pgd_t *pgd)
 #ifndef CONFIG_PPC_4K_PAGES
        kmem_cache_free(pgtable_cache, (void *)pgd);
 #else
-       free_pages((unsigned long)pgd, PGDIR_ORDER - PAGE_SHIFT);
+       free_pages(pgd, PGDIR_ORDER - PAGE_SHIFT);
 #endif
 }
 
diff --git a/arch/powerpc/platforms/cell/spufs/inode.c 
b/arch/powerpc/platforms/cell/spufs/inode.c
index 11634fa..14a47f9 100644
--- a/arch/powerpc/platforms/cell/spufs/inode.c
+++ b/arch/powerpc/platforms/cell/spufs/inode.c
@@ -648,7 +648,7 @@ spufs_parse_options(struct super_block *sb, char *options, 
struct inode *root)
 
 static void spufs_exit_isolated_loader(void)
 {
-       free_pages((unsigned long) isolated_loader,
+       free_pages(isolated_loader,
                        get_order(isolated_loader_size));
 }
 
diff --git a/arch/powerpc/platforms/powernv/pci-ioda.c 
b/arch/powerpc/platforms/powernv/pci-ioda.c
index 414fd1a..0b6f831 100644
--- a/arch/powerpc/platforms/powernv/pci-ioda.c
+++ b/arch/powerpc/platforms/powernv/pci-ioda.c
@@ -2323,7 +2323,7 @@ static void pnv_pci_ioda2_table_do_free_pages(__be64 
*addr,
                }
        }
 
-       free_pages(addr_ul, get_order(size << 3));
+       free_pages((void *)addr_ul, get_order(size << 3));
 }
 
 static void pnv_pci_ioda2_table_free_pages(struct iommu_table *tbl)
diff --git a/arch/powerpc/platforms/ps3/system-bus.c 
b/arch/powerpc/platforms/ps3/system-bus.c
index 5606fe3..001b93c 100644
--- a/arch/powerpc/platforms/ps3/system-bus.c
+++ b/arch/powerpc/platforms/ps3/system-bus.c
@@ -546,7 +546,7 @@ static void * ps3_alloc_coherent(struct device *_dev, 
size_t size,
        return (void*)virt_addr;
 
 clean_alloc:
-       free_pages(virt_addr, get_order(size));
+       free_pages((void *)virt_addr, get_order(size));
 clean_none:
        dma_handle = NULL;
        return NULL;
@@ -558,7 +558,7 @@ static void ps3_free_coherent(struct device *_dev, size_t 
size, void *vaddr,
        struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev);
 
        ps3_dma_unmap(dev->d_region, dma_handle, size);
-       free_pages((unsigned long)vaddr, get_order(size));
+       free_pages(vaddr, get_order(size));
 }
 
 /* Creates TCEs for a user provided buffer.  The user buffer must be
diff --git a/arch/s390/hypfs/hypfs_diag.c b/arch/s390/hypfs/hypfs_diag.c
index 0450357..08f71f8 100644
--- a/arch/s390/hypfs/hypfs_diag.c
+++ b/arch/s390/hypfs/hypfs_diag.c
@@ -373,7 +373,7 @@ static void diag204_free_buffer(void)
                vfree(diag204_buf_vmalloc);
                diag204_buf_vmalloc = NULL;
        } else {
-               free_pages((unsigned long) diag204_buf, 0);
+               free_pages(diag204_buf, 0);
        }
        diag204_buf = NULL;
 }
diff --git a/arch/s390/include/asm/idals.h b/arch/s390/include/asm/idals.h
index a7b2d75..56b1baf 100644
--- a/arch/s390/include/asm/idals.h
+++ b/arch/s390/include/asm/idals.h
@@ -139,8 +139,7 @@ idal_buffer_alloc(size_t size, int page_order)
                // Not enough memory
                while (i >= nr_chunks) {
                        i -= nr_chunks;
-                       free_pages((unsigned long) ib->data[i],
-                                  ib->page_order);
+                       free_pages(ib->data[i], ib->page_order);
                }
                kfree(ib);
                return ERR_PTR(-ENOMEM);
@@ -159,7 +158,7 @@ idal_buffer_free(struct idal_buffer *ib)
        nr_ptrs = (ib->size + IDA_BLOCK_SIZE - 1) >> IDA_SIZE_LOG;
        nr_chunks = (4096 << ib->page_order) >> IDA_SIZE_LOG;
        for (i = 0; i < nr_ptrs; i += nr_chunks)
-               free_pages((unsigned long) ib->data[i], ib->page_order);
+               free_pages(ib->data[i], ib->page_order);
        kfree(ib);
 }
 
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c
index 216c8f5..63c1c8c 100644
--- a/arch/s390/kernel/smp.c
+++ b/arch/s390/kernel/smp.c
@@ -211,8 +211,8 @@ static int pcpu_alloc_lowcore(struct pcpu *pcpu, int cpu)
 out:
        if (pcpu != &pcpu_devices[0]) {
                free_page((void *)panic_stack);
-               free_pages(async_stack, ASYNC_ORDER);
-               free_pages((unsigned long) pcpu->lowcore, LC_ORDER);
+               free_pages((void *)async_stack, ASYNC_ORDER);
+               free_pages(pcpu->lowcore, LC_ORDER);
        }
        return -ENOMEM;
 }
@@ -227,8 +227,8 @@ static void pcpu_free_lowcore(struct pcpu *pcpu)
        if (pcpu == &pcpu_devices[0])
                return;
        free_page((void *)(pcpu->lowcore->panic_stack-PANIC_FRAME_OFFSET));
-       free_pages(pcpu->lowcore->async_stack-ASYNC_FRAME_OFFSET, ASYNC_ORDER);
-       free_pages((unsigned long) pcpu->lowcore, LC_ORDER);
+       free_pages((void *)pcpu->lowcore->async_stack-ASYNC_FRAME_OFFSET, 
ASYNC_ORDER);
+       free_pages(pcpu->lowcore, LC_ORDER);
 }
 
 #endif /* CONFIG_HOTPLUG_CPU */
diff --git a/arch/s390/kernel/suspend.c b/arch/s390/kernel/suspend.c
index 8c23212..c40bdca 100644
--- a/arch/s390/kernel/suspend.c
+++ b/arch/s390/kernel/suspend.c
@@ -169,7 +169,7 @@ static int suspend_pm_cb(struct notifier_block *nb, 
unsigned long action,
                break;
        case PM_POST_SUSPEND:
        case PM_POST_HIBERNATION:
-               free_pages(suspend_zero_pages, LC_ORDER);
+               free_pages((void *)suspend_zero_pages, LC_ORDER);
                break;
        default:
                return NOTIFY_DONE;
diff --git a/arch/s390/kernel/vdso.c b/arch/s390/kernel/vdso.c
index 2391d83..2518d55 100644
--- a/arch/s390/kernel/vdso.c
+++ b/arch/s390/kernel/vdso.c
@@ -134,7 +134,7 @@ int vdso_alloc_per_cpu(struct _lowcore *lowcore)
 out:
        free_page((void *)page_frame);
        free_page((void *)page_table);
-       free_pages(segment_table, SEGMENT_ORDER);
+       free_pages((void *)segment_table, SEGMENT_ORDER);
        return -ENOMEM;
 }
 
@@ -154,7 +154,7 @@ void vdso_free_per_cpu(struct _lowcore *lowcore)
 
        free_page((void *)page_frame);
        free_page((void *)page_table);
-       free_pages(segment_table, SEGMENT_ORDER);
+       free_pages((void *)segment_table, SEGMENT_ORDER);
 }
 
 static void vdso_init_cr5(void)
diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c
index 676989b..df429c6 100644
--- a/arch/s390/mm/pgtable.c
+++ b/arch/s390/mm/pgtable.c
@@ -35,7 +35,7 @@ unsigned long *crst_table_alloc(struct mm_struct *mm)
 
 void crst_table_free(struct mm_struct *mm, unsigned long *table)
 {
-       free_pages((unsigned long) table, 2);
+       free_pages(table, 2);
 }
 
 static void __crst_table_upgrade(void *arg)
@@ -1051,7 +1051,7 @@ static void __tlb_remove_table(void *_table)
 
        switch (mask) {
        case 0:         /* pmd or pud */
-               free_pages((unsigned long) table, 2);
+               free_pages(table, 2);
                break;
        case 1:         /* lower 2K of a 4K page table */
        case 2:         /* higher 2K of a 4K page table */
diff --git a/arch/s390/pci/pci_clp.c b/arch/s390/pci/pci_clp.c
index d6e411e..5914a16 100644
--- a/arch/s390/pci/pci_clp.c
+++ b/arch/s390/pci/pci_clp.c
@@ -53,7 +53,7 @@ static void *clp_alloc_block(gfp_t gfp_mask)
 
 static void clp_free_block(void *ptr)
 {
-       free_pages((unsigned long) ptr, get_order(CLP_BLK_SIZE));
+       free_pages(ptr, get_order(CLP_BLK_SIZE));
 }
 
 static void clp_store_query_pci_fngrp(struct zpci_dev *zdev,
diff --git a/arch/s390/pci/pci_dma.c b/arch/s390/pci/pci_dma.c
index d348f2c..5a15471 100644
--- a/arch/s390/pci/pci_dma.c
+++ b/arch/s390/pci/pci_dma.c
@@ -369,7 +369,7 @@ static void *s390_dma_alloc(struct device *dev, size_t size,
        map = s390_dma_map_pages(dev, page, pa % PAGE_SIZE,
                                 size, DMA_BIDIRECTIONAL, NULL);
        if (dma_mapping_error(dev, map)) {
-               free_pages(pa, get_order(size));
+               free_pages((void *)pa, get_order(size));
                return NULL;
        }
 
@@ -388,7 +388,7 @@ static void s390_dma_free(struct device *dev, size_t size,
        size = PAGE_ALIGN(size);
        atomic64_sub(size / PAGE_SIZE, &zdev->allocated_pages);
        s390_dma_unmap_pages(dev, dma_handle, size, DMA_BIDIRECTIONAL, NULL);
-       free_pages((unsigned long) pa, get_order(size));
+       free_pages(pa, get_order(size));
 }
 
 static int s390_dma_map_sg(struct device *dev, struct scatterlist *sg,
diff --git a/arch/score/include/asm/pgalloc.h b/arch/score/include/asm/pgalloc.h
index 2e06765..55fb080 100644
--- a/arch/score/include/asm/pgalloc.h
+++ b/arch/score/include/asm/pgalloc.h
@@ -34,7 +34,7 @@ static inline pgd_t *pgd_alloc(struct mm_struct *mm)
 
 static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd)
 {
-       free_pages((unsigned long)pgd, PGD_ORDER);
+       free_pages(pgd, PGD_ORDER);
 }
 
 static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm,
@@ -66,7 +66,7 @@ static inline struct page *pte_alloc_one(struct mm_struct *mm,
 
 static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte)
 {
-       free_pages((unsigned long)pte, PTE_ORDER);
+       free_pages(pte, PTE_ORDER);
 }
 
 static inline void pte_free(struct mm_struct *mm, pgtable_t pte)
diff --git a/arch/sh/mm/consistent.c b/arch/sh/mm/consistent.c
index b81d9db..4721e24 100644
--- a/arch/sh/mm/consistent.c
+++ b/arch/sh/mm/consistent.c
@@ -53,7 +53,7 @@ void *dma_generic_alloc_coherent(struct device *dev, size_t 
size,
 
        ret_nocache = (void __force *)ioremap_nocache(virt_to_phys(ret), size);
        if (!ret_nocache) {
-               free_pages((unsigned long)ret, order);
+               free_pages(ret, order);
                return NULL;
        }
 
diff --git a/arch/sparc/include/asm/agp.h b/arch/sparc/include/asm/agp.h
index 70f52c1..363d3e6 100644
--- a/arch/sparc/include/asm/agp.h
+++ b/arch/sparc/include/asm/agp.h
@@ -11,6 +11,6 @@
 #define alloc_gatt_pages(order)                \
        ((char *)__get_free_pages(GFP_KERNEL, (order)))
 #define free_gatt_pages(table, order)  \
-       free_pages((unsigned long)(table), (order))
+       free_pages((table), (order))
 
 #endif
diff --git a/arch/sparc/kernel/iommu.c b/arch/sparc/kernel/iommu.c
index 7db91e1..eae7b6b 100644
--- a/arch/sparc/kernel/iommu.c
+++ b/arch/sparc/kernel/iommu.c
@@ -223,7 +223,7 @@ static void *dma_4u_alloc_coherent(struct device *dev, 
size_t size,
        iopte = alloc_npages(dev, iommu, size >> IO_PAGE_SHIFT);
 
        if (unlikely(iopte == NULL)) {
-               free_pages(first_page, order);
+               free_pages((void *)first_page, order);
                return NULL;
        }
 
@@ -257,7 +257,7 @@ static void dma_4u_free_coherent(struct device *dev, size_t 
size,
 
        order = get_order(size);
        if (order < 10)
-               free_pages((unsigned long)cpu, order);
+               free_pages(cpu, order);
 }
 
 static dma_addr_t dma_4u_map_page(struct device *dev, struct page *page,
diff --git a/arch/sparc/kernel/ioport.c b/arch/sparc/kernel/ioport.c
index 28fed53..39b406a 100644
--- a/arch/sparc/kernel/ioport.c
+++ b/arch/sparc/kernel/ioport.c
@@ -309,7 +309,7 @@ err_noiommu:
 err_nova:
        kfree(res);
 err_nomem:
-       free_pages(va, order);
+       free_pages((void *)va, order);
 err_nopages:
        return NULL;
 }
@@ -468,7 +468,7 @@ static void *pci32_alloc_coherent(struct device *dev, 
size_t len,
 err_nova:
        kfree(res);
 err_nomem:
-       free_pages((unsigned long)va, order);
+       free_pages(va, order);
 err_nopages:
        return NULL;
 }
@@ -509,7 +509,7 @@ static void pci32_free_coherent(struct device *dev, size_t 
n, void *p,
 
        release_resource(res);
        kfree(res);
-       free_pages((unsigned long)phys_to_virt(ba), get_order(n));
+       free_pages(phys_to_virt(ba), get_order(n));
 }
 
 /*
diff --git a/arch/sparc/kernel/ldc.c b/arch/sparc/kernel/ldc.c
index 59d5038..1cba9b7 100644
--- a/arch/sparc/kernel/ldc.c
+++ b/arch/sparc/kernel/ldc.c
@@ -1000,7 +1000,7 @@ static void free_queue(unsigned long num_entries, struct 
ldc_packet *q)
        size = num_entries * LDC_PACKET_SIZE;
        order = get_order(size);
 
-       free_pages((unsigned long)q, order);
+       free_pages(q, order);
 }
 
 static unsigned long ldc_cookie_to_index(u64 cookie, void *arg)
@@ -1081,7 +1081,7 @@ static int ldc_iommu_init(const char *name, struct 
ldc_channel *lp)
        return 0;
 
 out_free_table:
-       free_pages((unsigned long) table, order);
+       free_pages(table, order);
        ldc_iommu->page_table = NULL;
 
 out_free_map:
@@ -1103,7 +1103,7 @@ static void ldc_iommu_release(struct ldc_channel *lp)
        tsbsize = num_tsb_entries * sizeof(struct ldc_mtable_entry);
        order = get_order(tsbsize);
 
-       free_pages((unsigned long) ldc_iommu->page_table, order);
+       free_pages(ldc_iommu->page_table, order);
        ldc_iommu->page_table = NULL;
 
        kfree(iommu->map);
diff --git a/arch/sparc/kernel/pci_fire.c b/arch/sparc/kernel/pci_fire.c
index 11a1f0d..b8ac1bb 100644
--- a/arch/sparc/kernel/pci_fire.c
+++ b/arch/sparc/kernel/pci_fire.c
@@ -265,7 +265,7 @@ static void pci_fire_msiq_free(struct pci_pbm_info *pbm)
        order = get_order(512 * 1024);
        pages = (unsigned long) pbm->msi_queues;
 
-       free_pages(pages, order);
+       free_pages((void *)pages, order);
 
        pbm->msi_queues = NULL;
 }
diff --git a/arch/sparc/kernel/pci_sun4v.c b/arch/sparc/kernel/pci_sun4v.c
index 836e8ce..1a678fc 100644
--- a/arch/sparc/kernel/pci_sun4v.c
+++ b/arch/sparc/kernel/pci_sun4v.c
@@ -190,7 +190,7 @@ iommu_map_fail:
        iommu_tbl_range_free(&iommu->tbl, *dma_addrp, npages, IOMMU_ERROR_CODE);
 
 range_alloc_fail:
-       free_pages(first_page, order);
+       free_pages((void *)first_page, order);
        return NULL;
 }
 
@@ -229,7 +229,7 @@ static void dma_4v_free_coherent(struct device *dev, size_t 
size, void *cpu,
        iommu_tbl_range_free(&iommu->tbl, dvma, npages, IOMMU_ERROR_CODE);
        order = get_order(size);
        if (order < 10)
-               free_pages((unsigned long)cpu, order);
+               free_pages(cpu, order);
 }
 
 static dma_addr_t dma_4v_map_page(struct device *dev, struct page *page,
@@ -795,7 +795,7 @@ static int pci_sun4v_msiq_alloc(struct pci_pbm_info *pbm)
        return 0;
 
 h_error:
-       free_pages(pages, order);
+       free_pages((void *)pages, order);
        return -EINVAL;
 }
 
@@ -816,7 +816,7 @@ static void pci_sun4v_msiq_free(struct pci_pbm_info *pbm)
 
        pages = (unsigned long) pbm->msi_queues;
 
-       free_pages(pages, order);
+       free_pages((void *)pages, order);
 
        pbm->msi_queues = NULL;
 }
diff --git a/arch/um/drivers/net_kern.c b/arch/um/drivers/net_kern.c
index 9ef669d..504f60b 100644
--- a/arch/um/drivers/net_kern.c
+++ b/arch/um/drivers/net_kern.c
@@ -888,7 +888,7 @@ void *get_output_buffer(int *len_out)
 
 void free_output_buffer(void *buffer)
 {
-       free_pages((unsigned long) buffer, 0);
+       free_pages(buffer, 0);
 }
 
 int tap_setup_common(char *str, char *type, char **dev_name, char **mac_out,
diff --git a/arch/um/kernel/process.c b/arch/um/kernel/process.c
index 48af59a..b77685b 100644
--- a/arch/um/kernel/process.c
+++ b/arch/um/kernel/process.c
@@ -57,7 +57,7 @@ int pid_to_processor_id(int pid)
 
 void free_stack(unsigned long stack, int order)
 {
-       free_pages(stack, order);
+       free_pages((void *)stack, order);
 }
 
 unsigned long alloc_stack(int order, int atomic)
diff --git a/arch/unicore32/mm/pgd.c b/arch/unicore32/mm/pgd.c
index 2ade20d..9485183 100644
--- a/arch/unicore32/mm/pgd.c
+++ b/arch/unicore32/mm/pgd.c
@@ -71,7 +71,7 @@ no_pte:
        pmd_free(mm, new_pmd);
        mm_dec_nr_pmds(mm);
 no_pmd:
-       free_pages((unsigned long)new_pgd, 0);
+       free_pages(new_pgd, 0);
 no_pgd:
        return NULL;
 }
@@ -101,5 +101,5 @@ void free_pgd_slow(struct mm_struct *mm, pgd_t *pgd)
        pmd_free(mm, pmd);
        mm_dec_nr_pmds(mm);
 free:
-       free_pages((unsigned long) pgd, 0);
+       free_pages(pgd, 0);
 }
diff --git a/arch/x86/include/asm/agp.h b/arch/x86/include/asm/agp.h
index eec2a70..4f98370 100644
--- a/arch/x86/include/asm/agp.h
+++ b/arch/x86/include/asm/agp.h
@@ -26,6 +26,6 @@
 #define alloc_gatt_pages(order)                \
        ((char *)__get_free_pages(GFP_KERNEL, (order)))
 #define free_gatt_pages(table, order)  \
-       free_pages((unsigned long)(table), (order))
+       free_pages((table), (order))
 
 #endif /* _ASM_X86_AGP_H */
diff --git a/arch/x86/include/asm/floppy.h b/arch/x86/include/asm/floppy.h
index 1c7eefe..8203e1d 100644
--- a/arch/x86/include/asm/floppy.h
+++ b/arch/x86/include/asm/floppy.h
@@ -170,7 +170,7 @@ static void _fd_dma_mem_free(unsigned long addr, unsigned 
long size)
        if ((unsigned long)addr >= (unsigned long)high_memory)
                vfree((void *)addr);
        else
-               free_pages(addr, get_order(size));
+               free_pages((void *)addr, get_order(size));
 }
 
 #define fd_dma_mem_free(addr, size)  _fd_dma_mem_free(addr, size)
diff --git a/arch/x86/include/asm/xen/page-coherent.h 
b/arch/x86/include/asm/xen/page-coherent.h
index acd844c..8a55a89 100644
--- a/arch/x86/include/asm/xen/page-coherent.h
+++ b/arch/x86/include/asm/xen/page-coherent.h
@@ -18,7 +18,7 @@ static inline void xen_free_coherent_pages(struct device 
*hwdev, size_t size,
                void *cpu_addr, dma_addr_t dma_handle,
                struct dma_attrs *attrs)
 {
-       free_pages((unsigned long) cpu_addr, get_order(size));
+       free_pages(cpu_addr, get_order(size));
 }
 
 static inline void xen_dma_map_page(struct device *hwdev, struct page *page,
diff --git a/arch/x86/kernel/pci-calgary_64.c b/arch/x86/kernel/pci-calgary_64.c
index 0497f71..97e092d 100644
--- a/arch/x86/kernel/pci-calgary_64.c
+++ b/arch/x86/kernel/pci-calgary_64.c
@@ -458,7 +458,7 @@ static void* calgary_alloc_coherent(struct device *dev, 
size_t size,
        *dma_handle = mapping;
        return ret;
 free:
-       free_pages((unsigned long)ret, get_order(size));
+       free_pages(ret, get_order(size));
        ret = NULL;
 error:
        return ret;
@@ -475,7 +475,7 @@ static void calgary_free_coherent(struct device *dev, 
size_t size,
        npages = size >> PAGE_SHIFT;
 
        iommu_free(tbl, dma_handle, npages);
-       free_pages((unsigned long)vaddr, get_order(size));
+       free_pages(vaddr, get_order(size));
 }
 
 static struct dma_map_ops calgary_dma_ops = {
@@ -815,7 +815,7 @@ static void __init calgary_free_bus(struct pci_dev *dev)
        readq(target); /* flush */
 
        bitmapsz = tbl->it_size / BITS_PER_BYTE;
-       free_pages((unsigned long)tbl->it_map, get_order(bitmapsz));
+       free_pages(tbl->it_map, get_order(bitmapsz));
        tbl->it_map = NULL;
 
        kfree(tbl);
diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c
index 6ba014c..2418156 100644
--- a/arch/x86/kernel/pci-dma.c
+++ b/arch/x86/kernel/pci-dma.c
@@ -126,7 +126,7 @@ void dma_generic_free_coherent(struct device *dev, size_t 
size, void *vaddr,
        struct page *page = virt_to_page(vaddr);
 
        if (!dma_release_from_contiguous(dev, page, count))
-               free_pages((unsigned long)vaddr, get_order(size));
+               free_pages(vaddr, get_order(size));
 }
 
 bool arch_dma_alloc_attrs(struct device **dev, gfp_t *gfp)
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index f70ed2f..7206fee 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -3300,7 +3300,7 @@ static struct vmcs *alloc_vmcs(void)
 
 static void free_vmcs(struct vmcs *vmcs)
 {
-       free_pages((unsigned long)vmcs, vmcs_config.order);
+       free_pages(vmcs, vmcs_config.order);
 }
 
 /*
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
index ec081fe..53c86b6 100644
--- a/arch/x86/mm/init_64.c
+++ b/arch/x86/mm/init_64.c
@@ -727,7 +727,7 @@ static void __meminit free_pagetable(struct page *page, int 
order)
                        while (nr_pages--)
                                free_reserved_page(page++);
        } else
-               free_pages((unsigned long)page_address(page), order);
+               free_pages(page_address(page), order);
 }
 
 static void __meminit free_pte_table(pte_t *pte_start, pmd_t *pmd)
diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
index ad28540..ed873dd 100644
--- a/arch/x86/platform/efi/efi.c
+++ b/arch/x86/platform/efi/efi.c
@@ -700,7 +700,7 @@ static void *realloc_pages(void *old_memmap, int old_shift)
        memcpy(ret, old_memmap, PAGE_SIZE << old_shift);
 
 out:
-       free_pages((unsigned long)old_memmap, old_shift);
+       free_pages(old_memmap, old_shift);
        return ret;
 }
 
@@ -979,7 +979,7 @@ static void __init __efi_enter_virtual_mode(void)
         *
         * efi_cleanup_page_tables(__pa(new_memmap), 1 << pg_shift);
         */
-       free_pages((unsigned long)new_memmap, pg_shift);
+       free_pages(new_memmap, pg_shift);
 
        /* clean DUMMY object */
        efi_delete_dummy_variable();
diff --git a/arch/x86/um/ldt.c b/arch/x86/um/ldt.c
index 42522ff..52e173d 100644
--- a/arch/x86/um/ldt.c
+++ b/arch/x86/um/ldt.c
@@ -291,7 +291,7 @@ static void ldt_get_host_info(void)
        host_ldt_entries[k] = -1;
 
 out_free:
-       free_pages((unsigned long)ldt, order);
+       free_pages(ldt, order);
 }
 
 long init_new_ldt(struct mm_context *new_mm, struct mm_context *from_mm)
diff --git a/arch/x86/xen/pmu.c b/arch/x86/xen/pmu.c
index 724a087..77d8e3d 100644
--- a/arch/x86/xen/pmu.c
+++ b/arch/x86/xen/pmu.c
@@ -549,7 +549,7 @@ void xen_pmu_init(int cpu)
 fail:
        pr_warn_once("Could not initialize VPMU for cpu %d, error %d\n",
                cpu, err);
-       free_pages((unsigned long)xenpmu_data, 0);
+       free_pages(xenpmu_data, 0);
 }
 
 void xen_pmu_finish(int cpu)
@@ -565,6 +565,6 @@ void xen_pmu_finish(int cpu)
 
        (void)HYPERVISOR_xenpmu_op(XENPMU_finish, &xp);
 
-       free_pages((unsigned long)per_cpu(xenpmu_shared, cpu).xenpmu_data, 0);
+       free_pages(per_cpu(xenpmu_shared, cpu).xenpmu_data, 0);
        per_cpu(xenpmu_shared, cpu).xenpmu_data = NULL;
 }
diff --git a/arch/xtensa/kernel/pci-dma.c b/arch/xtensa/kernel/pci-dma.c
index cd66698..0b8ef59 100644
--- a/arch/xtensa/kernel/pci-dma.c
+++ b/arch/xtensa/kernel/pci-dma.c
@@ -179,7 +179,7 @@ static void xtensa_dma_free(struct device *hwdev, size_t 
size, void *vaddr,
        BUG_ON(addr < XCHAL_KSEG_CACHED_VADDR ||
               addr > XCHAL_KSEG_CACHED_VADDR + XCHAL_KSEG_SIZE - 1);
 
-       free_pages(addr, get_order(size));
+       free_pages((void *)addr, get_order(size));
 }
 
 static dma_addr_t xtensa_map_page(struct device *dev, struct page *page,
diff --git a/crypto/xor.c b/crypto/xor.c
index 35d6b3a..20060f8 100644
--- a/crypto/xor.c
+++ b/crypto/xor.c
@@ -154,7 +154,7 @@ calibrate_xor_blocks(void)
 #undef xor_speed
 
  out:
-       free_pages((unsigned long)b1, 2);
+       free_pages(b1, 2);
 
        active_template = fastest;
        return 0;
diff --git a/drivers/base/devres.c b/drivers/base/devres.c
index 8fc654f..854f7ae 100644
--- a/drivers/base/devres.c
+++ b/drivers/base/devres.c
@@ -927,7 +927,7 @@ static void devm_pages_release(struct device *dev, void 
*res)
 {
        struct pages_devres *devres = res;
 
-       free_pages(devres->addr, devres->order);
+       free_pages((void *)devres->addr, devres->order);
 }
 
 /**
@@ -957,7 +957,7 @@ unsigned long devm_get_free_pages(struct device *dev,
        devres = devres_alloc(devm_pages_release,
                              sizeof(struct pages_devres), GFP_KERNEL);
        if (unlikely(!devres)) {
-               free_pages(addr, order);
+               free_pages((void *)addr, order);
                return 0;
        }
 
diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c
index 331363e..e2738be 100644
--- a/drivers/block/floppy.c
+++ b/drivers/block/floppy.c
@@ -267,7 +267,7 @@ static int set_next_request(void);
 /* Dma Memory related stuff */
 
 #ifndef fd_dma_mem_free
-#define fd_dma_mem_free(addr, size) free_pages(addr, get_order(size))
+#define fd_dma_mem_free(addr, size) free_pages((void *)addr, get_order(size))
 #endif
 
 #ifndef fd_dma_mem_alloc
diff --git a/drivers/block/ps3vram.c b/drivers/block/ps3vram.c
index 56847fc..db7ece5 100644
--- a/drivers/block/ps3vram.c
+++ b/drivers/block/ps3vram.c
@@ -802,7 +802,7 @@ out_free_memory:
 out_close_gpu:
        ps3_close_hv_device(dev);
 out_free_xdr_buf:
-       free_pages((unsigned long) priv->xdr_buf, get_order(XDR_BUF_SIZE));
+       free_pages(priv->xdr_buf, get_order(XDR_BUF_SIZE));
 fail_free_priv:
        kfree(priv);
        ps3_system_bus_set_drvdata(dev, NULL);
@@ -827,7 +827,7 @@ static int ps3vram_remove(struct ps3_system_bus_device *dev)
        lv1_gpu_context_free(priv->context_handle);
        lv1_gpu_memory_free(priv->memory_handle);
        ps3_close_hv_device(dev);
-       free_pages((unsigned long) priv->xdr_buf, get_order(XDR_BUF_SIZE));
+       free_pages(priv->xdr_buf, get_order(XDR_BUF_SIZE));
        kfree(priv);
        ps3_system_bus_set_drvdata(dev, NULL);
        return 0;
diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c
index 2fee2ee..19b8697 100644
--- a/drivers/block/xen-blkfront.c
+++ b/drivers/block/xen-blkfront.c
@@ -1174,7 +1174,7 @@ free_shadow:
                        info->ring_ref[i] = GRANT_INVALID_REF;
                }
        }
-       free_pages((unsigned long)info->ring.sring, 
get_order(info->nr_ring_pages * PAGE_SIZE));
+       free_pages(info->ring.sring, get_order(info->nr_ring_pages * 
PAGE_SIZE));
        info->ring.sring = NULL;
 
        if (info->irq)
@@ -1429,7 +1429,7 @@ static int setup_blkring(struct xenbus_device *dev,
 
        err = xenbus_grant_ring(dev, info->ring.sring, info->nr_ring_pages, 
gref);
        if (err < 0) {
-               free_pages((unsigned long)sring, get_order(ring_size));
+               free_pages(sring, get_order(ring_size));
                info->ring.sring = NULL;
                goto fail;
        }
diff --git a/drivers/block/zram/zcomp.c b/drivers/block/zram/zcomp.c
index 5cb13ca..efaa135 100644
--- a/drivers/block/zram/zcomp.c
+++ b/drivers/block/zram/zcomp.c
@@ -66,7 +66,7 @@ static void zcomp_strm_free(struct zcomp *comp, struct 
zcomp_strm *zstrm)
 {
        if (zstrm->private)
                comp->backend->destroy(zstrm->private);
-       free_pages((unsigned long)zstrm->buffer, 1);
+       free_pages(zstrm->buffer, 1);
        kfree(zstrm);
 }
 
diff --git a/drivers/char/agp/hp-agp.c b/drivers/char/agp/hp-agp.c
index 3695773..9f83f13 100644
--- a/drivers/char/agp/hp-agp.c
+++ b/drivers/char/agp/hp-agp.c
@@ -321,7 +321,7 @@ hp_zx1_free_gatt_table (struct agp_bridge_data *bridge)
        struct _hp_private *hp = &hp_private;
 
        if (hp->io_pdir_owner)
-               free_pages((unsigned long) hp->io_pdir,
+               free_pages(hp->io_pdir,
                            get_order(hp->io_pdir_size));
        else
                hp->gatt[0] = HP_ZX1_SBA_IOMMU_COOKIE;
diff --git a/drivers/char/agp/uninorth-agp.c b/drivers/char/agp/uninorth-agp.c
index 0575544..bcbe6a5 100644
--- a/drivers/char/agp/uninorth-agp.c
+++ b/drivers/char/agp/uninorth-agp.c
@@ -439,7 +439,7 @@ static int uninorth_create_gatt_table(struct 
agp_bridge_data *bridge)
 enomem:
        kfree(uninorth_priv.pages_arr);
        if (table)
-               free_pages((unsigned long)table, page_order);
+               free_pages(table, page_order);
        return -ENOMEM;
 }
 
@@ -466,7 +466,7 @@ static int uninorth_free_gatt_table(struct agp_bridge_data 
*bridge)
        for (page = virt_to_page(table); page <= virt_to_page(table_end); 
page++)
                ClearPageReserved(page);
 
-       free_pages((unsigned long) bridge->gatt_table_real, page_order);
+       free_pages(bridge->gatt_table_real, page_order);
 
        return 0;
 }
diff --git a/drivers/char/mbcs.c b/drivers/char/mbcs.c
index e5d3e3f..b9d9619 100644
--- a/drivers/char/mbcs.c
+++ b/drivers/char/mbcs.c
@@ -419,7 +419,7 @@ static ssize_t mbcs_sram_read(struct file * fp, char __user 
*buf, size_t len, lo
                rv = -EFAULT;
 
       exit:
-       free_pages(hostAddr, get_order(len));
+       free_pages((void *)hostAddr, get_order(len));
 
        return rv;
 }
@@ -444,7 +444,7 @@ mbcs_sram_write(struct file * fp, const char __user *buf, 
size_t len, loff_t * o
        rv = do_mbcs_sram_dmaread(soft, hostAddr, len, off);
 
       exit:
-       free_pages(hostAddr, get_order(len));
+       free_pages((void *)hostAddr, get_order(len));
 
        return rv;
 }
diff --git a/drivers/crypto/omap-aes.c b/drivers/crypto/omap-aes.c
index eba2314..cd41ce7 100644
--- a/drivers/crypto/omap-aes.c
+++ b/drivers/crypto/omap-aes.c
@@ -701,8 +701,8 @@ static void omap_aes_done_task(unsigned long data)
 
                len = ALIGN(dd->total_save, AES_BLOCK_SIZE);
                pages = get_order(len);
-               free_pages((unsigned long)buf_in, pages);
-               free_pages((unsigned long)buf_out, pages);
+               free_pages(buf_in, pages);
+               free_pages(buf_out, pages);
        }
 
        omap_aes_finish_req(dd, 0);
diff --git a/drivers/crypto/omap-des.c b/drivers/crypto/omap-des.c
index 0a70e46..462f2bc 100644
--- a/drivers/crypto/omap-des.c
+++ b/drivers/crypto/omap-des.c
@@ -680,8 +680,8 @@ static void omap_des_done_task(unsigned long data)
                sg_copy_buf(buf_out, dd->orig_out, 0, dd->total_save, 1);
 
                pages = get_order(dd->total_save);
-               free_pages((unsigned long)buf_in, pages);
-               free_pages((unsigned long)buf_out, pages);
+               free_pages(buf_in, pages);
+               free_pages(buf_out, pages);
        }
 
        omap_des_finish_req(dd, 0);
diff --git a/drivers/dma/ste_dma40.c b/drivers/dma/ste_dma40.c
index dd3e7ba..2971d47 100644
--- a/drivers/dma/ste_dma40.c
+++ b/drivers/dma/ste_dma40.c
@@ -3434,7 +3434,7 @@ static int __init d40_lcla_allocate(struct d40_base *base)
                        ret = -ENOMEM;
 
                        for (j = 0; j < i; j++)
-                               free_pages(page_list[j], base->lcla_pool.pages);
+                               free_pages((void *)page_list[j], 
base->lcla_pool.pages);
                        goto failure;
                }
 
@@ -3444,7 +3444,7 @@ static int __init d40_lcla_allocate(struct d40_base *base)
        }
 
        for (j = 0; j < i; j++)
-               free_pages(page_list[j], base->lcla_pool.pages);
+               free_pages((void *)page_list[j], base->lcla_pool.pages);
 
        if (i < MAX_LCLA_ALLOC_ATTEMPTS) {
                base->lcla_pool.base = (void *)page_list[i];
@@ -3710,7 +3710,7 @@ failure:
                                         DMA_TO_DEVICE);
 
                if (!base->lcla_pool.base_unaligned && base->lcla_pool.base)
-                       free_pages((unsigned long)base->lcla_pool.base,
+                       free_pages(base->lcla_pool.base,
                                   base->lcla_pool.pages);
 
                kfree(base->lcla_pool.base_unaligned);
diff --git a/drivers/firmware/dell_rbu.c b/drivers/firmware/dell_rbu.c
index 2f452f1f..7d1afaa 100644
--- a/drivers/firmware/dell_rbu.c
+++ b/drivers/firmware/dell_rbu.c
@@ -207,7 +207,7 @@ out_alloc_packet_array:
                pr_debug("freeing unused packet below floor 0x%lx.\n",
                        (unsigned long)virt_to_phys(
                                invalid_addr_packet_array[idx-1]));
-               free_pages((unsigned long)invalid_addr_packet_array[idx-1],
+               free_pages(invalid_addr_packet_array[idx-1],
                        ordernum);
        }
        kfree(invalid_addr_packet_array);
@@ -349,8 +349,7 @@ static void packet_empty_list(void)
                 * to make sure there are no stale RBU packets left in memory
                 */
                memset(newpacket->data, 0, rbu_data.packetsize);
-               free_pages((unsigned long) newpacket->data,
-                       newpacket->ordernum);
+               free_pages(newpacket->data, newpacket->ordernum);
                kfree(newpacket);
        }
        rbu_data.packet_read_count = 0;
@@ -376,7 +375,7 @@ static void img_update_free(void)
                dma_free_coherent(NULL, rbu_data.bios_image_size,
                        rbu_data.image_update_buffer, dell_rbu_dmaaddr);
        else
-               free_pages((unsigned long) rbu_data.image_update_buffer,
+               free_pages(rbu_data.image_update_buffer,
                        rbu_data.image_update_ordernum);
 
        /*
@@ -442,7 +441,7 @@ static int img_update_realloc(unsigned long size)
                (unsigned long) virt_to_phys(image_update_buffer);
 
        if (img_buf_phys_addr > BIOS_SCAN_LIMIT) {
-               free_pages((unsigned long) image_update_buffer, ordernum);
+               free_pages(image_update_buffer, ordernum);
                ordernum = -1;
                image_update_buffer = dma_alloc_coherent(NULL, size,
                        &dell_rbu_dmaaddr, GFP_KERNEL);
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_events.c 
b/drivers/gpu/drm/amd/amdkfd/kfd_events.c
index b6e28dc..8bb3671 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_events.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_events.c
@@ -381,7 +381,7 @@ static void shutdown_signal_pages(struct kfd_process *p)
 
        list_for_each_entry_safe(page, tmp, &p->signal_event_pages,
                                        event_pages) {
-               free_pages((unsigned long)page->kernel_address,
+               free_pages(page->kernel_address,
                                get_order(KFD_SIGNAL_EVENT_LIMIT * 8));
                kfree(page);
        }
diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c
index c4dcab0..0b65dc5 100644
--- a/drivers/hv/channel.c
+++ b/drivers/hv/channel.c
@@ -210,7 +210,7 @@ error_gpadl:
        vmbus_teardown_gpadl(newchannel, newchannel->ringbuffer_gpadlhandle);
 
 error0:
-       free_pages((unsigned long)out,
+       free_pages(out,
                get_order(send_ringbuffer_size + recv_ringbuffer_size));
        kfree(open_info);
        newchannel->state = CHANNEL_OPEN_STATE;
@@ -546,7 +546,7 @@ static int vmbus_close_internal(struct vmbus_channel 
*channel)
        hv_ringbuffer_cleanup(&channel->outbound);
        hv_ringbuffer_cleanup(&channel->inbound);
 
-       free_pages((unsigned long)channel->ringbuffer_pages,
+       free_pages(channel->ringbuffer_pages,
                get_order(channel->ringbuffer_pagecount * PAGE_SIZE));
 
        /*
diff --git a/drivers/hv/connection.c b/drivers/hv/connection.c
index 4fc2e88..99cf9e9 100644
--- a/drivers/hv/connection.c
+++ b/drivers/hv/connection.c
@@ -241,12 +241,12 @@ void vmbus_disconnect(void)
        }
 
        if (vmbus_connection.int_page) {
-               free_pages((unsigned long)vmbus_connection.int_page, 0);
+               free_pages(vmbus_connection.int_page, 0);
                vmbus_connection.int_page = NULL;
        }
 
-       free_pages((unsigned long)vmbus_connection.monitor_pages[0], 0);
-       free_pages((unsigned long)vmbus_connection.monitor_pages[1], 0);
+       free_pages(vmbus_connection.monitor_pages[0], 0);
+       free_pages(vmbus_connection.monitor_pages[1], 0);
        vmbus_connection.monitor_pages[0] = NULL;
        vmbus_connection.monitor_pages[1] = NULL;
 }
diff --git a/drivers/infiniband/hw/qib/qib_dma.c 
b/drivers/infiniband/hw/qib/qib_dma.c
index 59fe092..9544208 100644
--- a/drivers/infiniband/hw/qib/qib_dma.c
+++ b/drivers/infiniband/hw/qib/qib_dma.c
@@ -151,7 +151,7 @@ static void *qib_dma_alloc_coherent(struct ib_device *dev, 
size_t size,
 static void qib_dma_free_coherent(struct ib_device *dev, size_t size,
                                  void *cpu_addr, u64 dma_handle)
 {
-       free_pages((unsigned long) cpu_addr, get_order(size));
+       free_pages(cpu_addr, get_order(size));
 }
 
 struct ib_dma_mapping_ops qib_dma_mapping_ops = {
diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
index 013bdff..ace59ca 100644
--- a/drivers/iommu/amd_iommu_init.c
+++ b/drivers/iommu/amd_iommu_init.c
@@ -541,7 +541,7 @@ static void iommu_enable_command_buffer(struct amd_iommu 
*iommu)
 
 static void __init free_command_buffer(struct amd_iommu *iommu)
 {
-       free_pages((unsigned long)iommu->cmd_buf, get_order(CMD_BUFFER_SIZE));
+       free_pages(iommu->cmd_buf, get_order(CMD_BUFFER_SIZE));
 }
 
 /* allocates the memory where the IOMMU will log its events to */
@@ -573,7 +573,7 @@ static void iommu_enable_event_buffer(struct amd_iommu 
*iommu)
 
 static void __init free_event_buffer(struct amd_iommu *iommu)
 {
-       free_pages((unsigned long)iommu->evt_buf, get_order(EVT_BUFFER_SIZE));
+       free_pages(iommu->evt_buf, get_order(EVT_BUFFER_SIZE));
 }
 
 /* allocates the memory where the IOMMU will log its events to */
@@ -610,7 +610,7 @@ static void __init free_ppr_log(struct amd_iommu *iommu)
        if (iommu->ppr_log == NULL)
                return;
 
-       free_pages((unsigned long)iommu->ppr_log, get_order(PPR_LOG_SIZE));
+       free_pages(iommu->ppr_log, get_order(PPR_LOG_SIZE));
 }
 
 static void iommu_enable_gt(struct amd_iommu *iommu)
@@ -1692,20 +1692,16 @@ static struct syscore_ops amd_iommu_syscore_ops = {
 
 static void __init free_on_init_error(void)
 {
-       free_pages((unsigned long)irq_lookup_table,
-                  get_order(rlookup_table_size));
+       free_pages(irq_lookup_table, get_order(rlookup_table_size));
 
        kmem_cache_destroy(amd_iommu_irq_cache);
        amd_iommu_irq_cache = NULL;
 
-       free_pages((unsigned long)amd_iommu_rlookup_table,
-                  get_order(rlookup_table_size));
+       free_pages(amd_iommu_rlookup_table, get_order(rlookup_table_size));
 
-       free_pages((unsigned long)amd_iommu_alias_table,
-                  get_order(alias_table_size));
+       free_pages(amd_iommu_alias_table, get_order(alias_table_size));
 
-       free_pages((unsigned long)amd_iommu_dev_table,
-                  get_order(dev_table_size));
+       free_pages(amd_iommu_dev_table, get_order(dev_table_size));
 
        free_iommu_all();
 
@@ -1773,8 +1769,7 @@ static bool __init check_ioapic_information(void)
 
 static void __init free_dma_resources(void)
 {
-       free_pages((unsigned long)amd_iommu_pd_alloc_bitmap,
-                  get_order(MAX_DOMAIN_ID/8));
+       free_pages(amd_iommu_pd_alloc_bitmap, get_order(MAX_DOMAIN_ID/8));
 
        free_unity_maps();
 }
diff --git a/drivers/iommu/exynos-iommu.c b/drivers/iommu/exynos-iommu.c
index 97c41b8..828a316 100644
--- a/drivers/iommu/exynos-iommu.c
+++ b/drivers/iommu/exynos-iommu.c
@@ -702,7 +702,7 @@ static struct iommu_domain 
*exynos_iommu_domain_alloc(unsigned type)
        return &domain->domain;
 
 err_counter:
-       free_pages((unsigned long)domain->pgtable, 2);
+       free_pages(domain->pgtable, 2);
 err_pgtable:
        kfree(domain);
        return NULL;
@@ -732,8 +732,8 @@ static void exynos_iommu_domain_free(struct iommu_domain 
*iommu_domain)
                        kmem_cache_free(lv2table_kmem_cache,
                                phys_to_virt(lv2table_base(domain->pgtable + 
i)));
 
-       free_pages((unsigned long)domain->pgtable, 2);
-       free_pages((unsigned long)domain->lv2entcnt, 1);
+       free_pages(domain->pgtable, 2);
+       free_pages(domain->lv2entcnt, 1);
        kfree(domain);
 }
 
diff --git a/drivers/iommu/fsl_pamu.c b/drivers/iommu/fsl_pamu.c
index a34355f..3772d00 100644
--- a/drivers/iommu/fsl_pamu.c
+++ b/drivers/iommu/fsl_pamu.c
@@ -1193,7 +1193,7 @@ error:
                iounmap(guts_regs);
 
        if (ppaact)
-               free_pages((unsigned long)ppaact, order);
+               free_pages(ppaact, order);
 
        ppaact = NULL;
 
diff --git a/drivers/iommu/intel-svm.c b/drivers/iommu/intel-svm.c
index c69e3f9..a911b6c 100644
--- a/drivers/iommu/intel-svm.c
+++ b/drivers/iommu/intel-svm.c
@@ -75,11 +75,11 @@ int intel_svm_free_pasid_tables(struct intel_iommu *iommu)
                order = 0;
 
        if (iommu->pasid_table) {
-               free_pages((unsigned long)iommu->pasid_table, order);
+               free_pages(iommu->pasid_table, order);
                iommu->pasid_table = NULL;
        }
        if (iommu->pasid_state_table) {
-               free_pages((unsigned long)iommu->pasid_state_table, order);
+               free_pages(iommu->pasid_state_table, order);
                iommu->pasid_state_table = NULL;
        }
        idr_destroy(&iommu->pasid_idr);
@@ -107,7 +107,7 @@ int intel_svm_enable_prq(struct intel_iommu *iommu)
                       iommu->name);
                ret = -EINVAL;
        err:
-               free_pages((unsigned long)iommu->prq, PRQ_ORDER);
+               free_pages(iommu->prq, PRQ_ORDER);
                iommu->prq = NULL;
                return ret;
        }
@@ -140,7 +140,7 @@ int intel_svm_finish_prq(struct intel_iommu *iommu)
        dmar_free_hwirq(iommu->pr_irq);
        iommu->pr_irq = 0;
 
-       free_pages((unsigned long)iommu->prq, PRQ_ORDER);
+       free_pages(iommu->prq, PRQ_ORDER);
        iommu->prq = NULL;
 
        return 0;
diff --git a/drivers/iommu/intel_irq_remapping.c 
b/drivers/iommu/intel_irq_remapping.c
index 1fae188..fb79ee2 100644
--- a/drivers/iommu/intel_irq_remapping.c
+++ b/drivers/iommu/intel_irq_remapping.c
@@ -602,7 +602,7 @@ static void intel_teardown_irq_remapping(struct intel_iommu 
*iommu)
                        irq_domain_remove(iommu->ir_domain);
                        iommu->ir_domain = NULL;
                }
-               free_pages((unsigned long)iommu->ir_table->base,
+               free_pages(iommu->ir_table->base,
                           INTR_REMAP_PAGE_ORDER);
                kfree(iommu->ir_table->bitmap);
                kfree(iommu->ir_table);
diff --git a/drivers/iommu/msm_iommu.c b/drivers/iommu/msm_iommu.c
index b8bcc57..01afc79 100644
--- a/drivers/iommu/msm_iommu.c
+++ b/drivers/iommu/msm_iommu.c
@@ -262,7 +262,7 @@ static void msm_iommu_domain_free(struct iommu_domain 
*domain)
                if ((fl_table[i] & 0x03) == FL_TYPE_TABLE)
                        free_page(__va(((fl_table[i]) & FL_BASE_MASK)));
 
-       free_pages((unsigned long)priv->pgtable, get_order(SZ_16K));
+       free_pages(priv->pgtable, get_order(SZ_16K));
        priv->pgtable = NULL;
 
        kfree(priv);
diff --git a/drivers/md/bcache/bset.c b/drivers/md/bcache/bset.c
index 646fe85..3059674 100644
--- a/drivers/md/bcache/bset.c
+++ b/drivers/md/bcache/bset.c
@@ -292,16 +292,14 @@ void bch_btree_keys_free(struct btree_keys *b)
        if (bset_prev_bytes(b) < PAGE_SIZE)
                kfree(t->prev);
        else
-               free_pages((unsigned long) t->prev,
-                          get_order(bset_prev_bytes(b)));
+               free_pages(t->prev, get_order(bset_prev_bytes(b)));
 
        if (bset_tree_bytes(b) < PAGE_SIZE)
                kfree(t->tree);
        else
-               free_pages((unsigned long) t->tree,
-                          get_order(bset_tree_bytes(b)));
+               free_pages(t->tree, get_order(bset_tree_bytes(b)));
 
-       free_pages((unsigned long) t->data, b->page_order);
+       free_pages(t->data, b->page_order);
 
        t->prev = NULL;
        t->tree = NULL;
@@ -1220,7 +1218,7 @@ static void __btree_sort(struct btree_keys *b, struct 
btree_iter *iter,
        if (used_mempool)
                mempool_free(virt_to_page(out), state->pool);
        else
-               free_pages((unsigned long) out, order);
+               free_pages(out, order);
 
        bch_bset_build_written_tree(b);
 
diff --git a/drivers/md/bcache/btree.c b/drivers/md/bcache/btree.c
index 83392f8..1540114 100644
--- a/drivers/md/bcache/btree.c
+++ b/drivers/md/bcache/btree.c
@@ -751,7 +751,7 @@ void bch_btree_cache_free(struct cache_set *c)
        if (c->verify_data)
                list_move(&c->verify_data->list, &c->btree_cache);
 
-       free_pages((unsigned long) c->verify_ondisk, ilog2(bucket_pages(c)));
+       free_pages(c->verify_ondisk, ilog2(bucket_pages(c)));
 #endif
 
        list_splice(&c->btree_cache_freeable,
diff --git a/drivers/md/bcache/journal.c b/drivers/md/bcache/journal.c
index 29eba72..6ed9533 100644
--- a/drivers/md/bcache/journal.c
+++ b/drivers/md/bcache/journal.c
@@ -797,8 +797,8 @@ void bch_journal_meta(struct cache_set *c, struct closure 
*cl)
 
 void bch_journal_free(struct cache_set *c)
 {
-       free_pages((unsigned long) c->journal.w[1].data, JSET_BITS);
-       free_pages((unsigned long) c->journal.w[0].data, JSET_BITS);
+       free_pages(c->journal.w[1].data, JSET_BITS);
+       free_pages(c->journal.w[0].data, JSET_BITS);
        free_fifo(&c->journal.pin);
 }
 
diff --git a/drivers/md/bcache/super.c b/drivers/md/bcache/super.c
index 679a093..cd04e2d 100644
--- a/drivers/md/bcache/super.c
+++ b/drivers/md/bcache/super.c
@@ -1329,7 +1329,7 @@ static void cache_set_free(struct closure *cl)
                }
 
        bch_bset_sort_state_free(&c->sort);
-       free_pages((unsigned long) c->uuids, ilog2(bucket_pages(c)));
+       free_pages(c->uuids, ilog2(bucket_pages(c)));
 
        if (c->moving_gc_wq)
                destroy_workqueue(c->moving_gc_wq);
@@ -1768,7 +1768,7 @@ void bch_cache_release(struct kobject *kobj)
                ca->set->cache[ca->sb.nr_this_dev] = NULL;
        }
 
-       free_pages((unsigned long) ca->disk_buckets, ilog2(bucket_pages(ca)));
+       free_pages(ca->disk_buckets, ilog2(bucket_pages(ca)));
        kfree(ca->prio_buckets);
        vfree(ca->buckets);
 
diff --git a/drivers/md/dm-bufio.c b/drivers/md/dm-bufio.c
index 2dd3308..10f8a45 100644
--- a/drivers/md/dm-bufio.c
+++ b/drivers/md/dm-bufio.c
@@ -419,7 +419,7 @@ static void free_buffer_data(struct dm_bufio_client *c,
                break;
 
        case DATA_MODE_GET_FREE_PAGES:
-               free_pages((unsigned long)data, c->pages_per_block_bits);
+               free_pages(data, c->pages_per_block_bits);
                break;
 
        case DATA_MODE_VMALLOC:
diff --git a/drivers/media/pci/solo6x10/solo6x10-p2m.c 
b/drivers/media/pci/solo6x10/solo6x10-p2m.c
index 8c84846..ef91be9 100644
--- a/drivers/media/pci/solo6x10/solo6x10-p2m.c
+++ b/drivers/media/pci/solo6x10/solo6x10-p2m.c
@@ -227,7 +227,7 @@ static int solo_p2m_test(struct solo_dev *solo_dev, int 
base, int size)
 
        rd_buf = (u32 *)__get_free_pages(GFP_KERNEL, order);
        if (rd_buf == NULL) {
-               free_pages((unsigned long)wr_buf, order);
+               free_pages(wr_buf, order);
                return -1;
        }
 
@@ -253,8 +253,8 @@ static int solo_p2m_test(struct solo_dev *solo_dev, int 
base, int size)
        ret = 0;
 
 test_fail:
-       free_pages((unsigned long)wr_buf, order);
-       free_pages((unsigned long)rd_buf, order);
+       free_pages(wr_buf, order);
+       free_pages(rd_buf, order);
 
        return ret;
 }
diff --git a/drivers/media/platform/davinci/dm644x_ccdc.c 
b/drivers/media/platform/davinci/dm644x_ccdc.c
index ffbefdf..31d4015 100644
--- a/drivers/media/platform/davinci/dm644x_ccdc.c
+++ b/drivers/media/platform/davinci/dm644x_ccdc.c
@@ -261,7 +261,7 @@ static int ccdc_update_raw_params(struct 
ccdc_config_params_raw *raw_params)
         */
        if (raw_params->fault_pxl.fp_num != config_params->fault_pxl.fp_num) {
                if (fpc_physaddr != NULL) {
-                       free_pages((unsigned long)fpc_physaddr,
+                       free_pages(fpc_physaddr,
                                   get_order
                                   (config_params->fault_pxl.fp_num *
                                   FP_NUM_BYTES));
@@ -306,7 +306,7 @@ static int ccdc_close(struct device *dev)
        if (fpc_physaddr != NULL) {
                fpc_virtaddr = (unsigned int *)
                    phys_to_virt((unsigned long)fpc_physaddr);
-               free_pages((unsigned long)fpc_virtaddr,
+               free_pages(fpc_virtaddr,
                           get_order(config_params->fault_pxl.fp_num *
                           FP_NUM_BYTES));
        }
diff --git a/drivers/media/platform/omap/omap_voutlib.c 
b/drivers/media/platform/omap/omap_voutlib.c
index 80b0d88..f8cf63a 100644
--- a/drivers/media/platform/omap/omap_voutlib.c
+++ b/drivers/media/platform/omap/omap_voutlib.c
@@ -335,7 +335,7 @@ void omap_vout_free_buffer(unsigned long virtaddr, u32 
buf_size)
                addr += PAGE_SIZE;
                size -= PAGE_SIZE;
        }
-       free_pages((unsigned long) virtaddr, order);
+       free_pages((void *)virtaddr, order);
 }
 
 bool omap_vout_dss_omap24xx(void)
diff --git a/drivers/misc/cxl/native.c b/drivers/misc/cxl/native.c
index f409097..4620627 100644
--- a/drivers/misc/cxl/native.c
+++ b/drivers/misc/cxl/native.c
@@ -228,7 +228,7 @@ static inline void detach_spa(struct cxl_afu *afu)
 void cxl_release_spa(struct cxl_afu *afu)
 {
        if (afu->spa) {
-               free_pages((unsigned long) afu->spa, afu->spa_order);
+               free_pages(afu->spa, afu->spa_order);
                afu->spa = NULL;
        }
 }
diff --git a/drivers/misc/mic/card/mic_virtio.c 
b/drivers/misc/mic/card/mic_virtio.c
index e486a0c..bb364ee 100644
--- a/drivers/misc/mic/card/mic_virtio.c
+++ b/drivers/misc/mic/card/mic_virtio.c
@@ -204,7 +204,7 @@ static void mic_del_vq(struct virtqueue *vq, int n)
        struct mic_vdev *mvdev = to_micvdev(vq->vdev);
        struct vring *vr = (struct vring *)(vq + 1);
 
-       free_pages((unsigned long) vr->used, get_order(mvdev->used_size[n]));
+       free_pages(vr->used, get_order(mvdev->used_size[n]));
        vring_del_virtqueue(vq);
        mic_card_unmap(mvdev->mdev, mvdev->vr[n]);
        mvdev->vr[n] = NULL;
diff --git a/drivers/misc/mic/host/mic_virtio.c 
b/drivers/misc/mic/host/mic_virtio.c
index 58b107a..3474aa2 100644
--- a/drivers/misc/mic/host/mic_virtio.c
+++ b/drivers/misc/mic/host/mic_virtio.c
@@ -663,7 +663,7 @@ int mic_virtio_add_device(struct mic_vdev *mvdev,
                vr->info->magic = cpu_to_le32(MIC_MAGIC + mvdev->virtio_id + i);
                vr_addr = mic_map_single(mdev, vr->va, vr_size);
                if (mic_map_error(vr_addr)) {
-                       free_pages((unsigned long)vr->va, get_order(vr_size));
+                       free_pages(vr->va, get_order(vr_size));
                        ret = -ENOMEM;
                        dev_err(mic_dev(mvdev), "%s %d err %d\n",
                                __func__, __LINE__, ret);
@@ -732,8 +732,7 @@ err:
                struct mic_vringh *mvr = &mvdev->mvr[j];
                mic_unmap_single(mdev, le64_to_cpu(vqconfig[j].address),
                                 mvr->vring.len);
-               free_pages((unsigned long)mvr->vring.va,
-                          get_order(mvr->vring.len));
+               free_pages(mvr->vring.va, get_order(mvr->vring.len));
        }
        mutex_unlock(&mdev->mic_mutex);
        return ret;
@@ -779,14 +778,12 @@ skip_hot_remove:
 
                mic_unmap_single(mvdev->mdev, mvr->buf_da,
                                 MIC_INT_DMA_BUF_SIZE);
-               free_pages((unsigned long)mvr->buf,
-                          get_order(MIC_INT_DMA_BUF_SIZE));
+               free_pages(mvr->buf, get_order(MIC_INT_DMA_BUF_SIZE));
                vringh_kiov_cleanup(&mvr->riov);
                vringh_kiov_cleanup(&mvr->wiov);
                mic_unmap_single(mdev, le64_to_cpu(vqconfig[i].address),
                                 mvr->vring.len);
-               free_pages((unsigned long)mvr->vring.va,
-                          get_order(mvr->vring.len));
+               free_pages(mvr->vring.va, get_order(mvr->vring.len));
        }
 
        list_for_each_safe(pos, tmp, &mdev->vdev_list) {
diff --git a/drivers/misc/mic/scif/scif_rma.h b/drivers/misc/mic/scif/scif_rma.h
index fa67222..e13ab83 100644
--- a/drivers/misc/mic/scif/scif_rma.h
+++ b/drivers/misc/mic/scif/scif_rma.h
@@ -420,7 +420,7 @@ static inline void scif_free(void *addr, size_t size)
        if (is_vmalloc_addr(addr))
                vfree(addr);
        else
-               free_pages((unsigned long)addr, get_order(align));
+               free_pages(addr, get_order(align));
 }
 
 static inline void scif_get_window(struct scif_window *window, int nr_pages)
diff --git a/drivers/misc/sgi-gru/grufile.c b/drivers/misc/sgi-gru/grufile.c
index 104a05f..276a599 100644
--- a/drivers/misc/sgi-gru/grufile.c
+++ b/drivers/misc/sgi-gru/grufile.c
@@ -306,7 +306,7 @@ static int gru_init_tables(unsigned long gru_base_paddr, 
void *gru_base_vaddr)
 
 fail:
        for (bid--; bid >= 0; bid--)
-               free_pages((unsigned long)gru_base[bid], order);
+               free_pages(gru_base[bid], order);
        return -ENOMEM;
 }
 
@@ -317,7 +317,7 @@ static void gru_free_tables(void)
                              GRU_CHIPLETS_PER_BLADE);
 
        for (bid = 0; bid < GRU_MAX_BLADES; bid++)
-               free_pages((unsigned long)gru_base[bid], order);
+               free_pages(gru_base[bid], order);
 }
 
 static unsigned long gru_chiplet_cpu_to_mmr(int chiplet, int cpu, int *corep)
diff --git a/drivers/misc/sgi-xp/xpc_uv.c b/drivers/misc/sgi-xp/xpc_uv.c
index 340b44d..c3fce37 100644
--- a/drivers/misc/sgi-xp/xpc_uv.c
+++ b/drivers/misc/sgi-xp/xpc_uv.c
@@ -295,7 +295,7 @@ out_5:
 out_4:
        xpc_gru_mq_watchlist_free_uv(mq);
 out_3:
-       free_pages((unsigned long)mq->address, pg_order);
+       free_pages(mq->address, pg_order);
 out_2:
        kfree(mq->gru_mq_desc);
 out_1:
@@ -324,7 +324,7 @@ xpc_destroy_gru_mq_uv(struct xpc_gru_mq_uv *mq)
        xpc_gru_mq_watchlist_free_uv(mq);
 
        pg_order = mq->order - PAGE_SHIFT;
-       free_pages((unsigned long)mq->address, pg_order);
+       free_pages(mq->address, pg_order);
 
        kfree(mq);
 }
diff --git a/drivers/mmc/host/tmio_mmc_dma.c b/drivers/mmc/host/tmio_mmc_dma.c
index e4b05db..be9c8d7 100644
--- a/drivers/mmc/host/tmio_mmc_dma.c
+++ b/drivers/mmc/host/tmio_mmc_dma.c
@@ -350,7 +350,7 @@ void tmio_mmc_release_dma(struct tmio_mmc_host *host)
                dma_release_channel(chan);
        }
        if (host->bounce_buf) {
-               free_pages((unsigned long)host->bounce_buf, 0);
+               free_pages(host->bounce_buf, 0);
                host->bounce_buf = NULL;
        }
 }
diff --git a/drivers/net/appletalk/ltpc.c b/drivers/net/appletalk/ltpc.c
index 01e2ac5..c98dea0 100644
--- a/drivers/net/appletalk/ltpc.c
+++ b/drivers/net/appletalk/ltpc.c
@@ -1182,7 +1182,7 @@ out4:
        if (dev->irq)
                free_irq(dev->irq, dev);
 out3:
-       free_pages((unsigned long)ltdmabuf, get_order(1000));
+       free_pages(ltdmabuf, get_order(1000));
 out2:
        release_region(io, 8);
 out1:
@@ -1277,7 +1277,7 @@ static void __exit ltpc_cleanup(void)
 
        if(debug & DEBUG_VERBOSE) printk("free_pages\n");
 
-       free_pages( (unsigned long) ltdmabuf, get_order(1000));
+       free_pages(ltdmabuf, get_order(1000));
 
        if(debug & DEBUG_VERBOSE) printk("returning from cleanup_module\n");
 }
diff --git a/drivers/net/ethernet/amd/mvme147.c 
b/drivers/net/ethernet/amd/mvme147.c
index 0660ac5..abda91c 100644
--- a/drivers/net/ethernet/amd/mvme147.c
+++ b/drivers/net/ethernet/amd/mvme147.c
@@ -134,7 +134,7 @@ struct net_device * __init mvme147lance_probe(int unit)
 
        err = register_netdev(dev);
        if (err) {
-               free_pages(lp->ram, 3);
+               free_pages((void *)lp->ram, 3);
                free_netdev(dev);
                return ERR_PTR(err);
        }
@@ -193,7 +193,7 @@ void __exit cleanup_module(void)
 {
        struct m147lance_private *lp = netdev_priv(dev_mvme147_lance);
        unregister_netdev(dev_mvme147_lance);
-       free_pages(lp->ram, 3);
+       free_pages((void *)lp->ram, 3);
        free_netdev(dev_mvme147_lance);
 }
 
diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_main.h 
b/drivers/net/ethernet/cavium/liquidio/octeon_main.h
index cbd0819..61dbccc 100644
--- a/drivers/net/ethernet/cavium/liquidio/octeon_main.h
+++ b/drivers/net/ethernet/cavium/liquidio/octeon_main.h
@@ -141,7 +141,7 @@ cnnic_alloc_aligned_dma(struct pci_dev *pci_dev,
                    (void *)__get_free_pages(GFP_KERNEL,
                                             get_order(size));
                if ((unsigned long)ptr & 0x07) {
-                       free_pages((unsigned long)ptr, get_order(size));
+                       free_pages(ptr, get_order(size));
                        ptr = NULL;
                        /* Increment the size required if the first
                         * attempt failed.
@@ -160,7 +160,7 @@ cnnic_alloc_aligned_dma(struct pci_dev *pci_dev,
 }
 
 #define cnnic_free_aligned_dma(pci_dev, ptr, size, orig_ptr, dma_addr) \
-               free_pages(orig_ptr, get_order(size))
+               free_pages((void *)orig_ptr, get_order(size))
 
 static inline void
 sleep_cond(wait_queue_head_t *wait_queue, int *condition)
diff --git a/drivers/net/ethernet/cirrus/cs89x0.c 
b/drivers/net/ethernet/cirrus/cs89x0.c
index 6038304..815c596 100644
--- a/drivers/net/ethernet/cirrus/cs89x0.c
+++ b/drivers/net/ethernet/cirrus/cs89x0.c
@@ -473,7 +473,7 @@ skip_this_frame:
 static void release_dma_buff(struct net_local *lp)
 {
        if (lp->dma_buff) {
-               free_pages((unsigned long)(lp->dma_buff),
+               free_pages(lp->dma_buff,
                           get_order(lp->dmasize * 1024));
                lp->dma_buff = NULL;
        }
diff --git a/drivers/net/ethernet/sgi/ioc3-eth.c 
b/drivers/net/ethernet/sgi/ioc3-eth.c
index d3b1416..e314d3f 100644
--- a/drivers/net/ethernet/sgi/ioc3-eth.c
+++ b/drivers/net/ethernet/sgi/ioc3-eth.c
@@ -872,7 +872,7 @@ static void ioc3_free_rings(struct ioc3_private *ip)
 
        if (ip->txr) {
                ioc3_clean_tx_ring(ip);
-               free_pages((unsigned long)ip->txr, 2);
+               free_pages(ip->txr, 2);
                ip->txr = NULL;
        }
 
diff --git a/drivers/net/ethernet/sun/niu.c b/drivers/net/ethernet/sun/niu.c
index ab6051a..66ac0ffe 100644
--- a/drivers/net/ethernet/sun/niu.c
+++ b/drivers/net/ethernet/sun/niu.c
@@ -9974,7 +9974,7 @@ static void niu_phys_free_coherent(struct device *dev, 
size_t size,
 {
        unsigned long order = get_order(size);
 
-       free_pages((unsigned long) cpu_addr, order);
+       free_pages(cpu_addr, order);
 }
 
 static u64 niu_phys_map_page(struct device *dev, struct page *page,
diff --git a/drivers/net/ethernet/tile/tilegx.c 
b/drivers/net/ethernet/tile/tilegx.c
index 0a15acc..d1a9d77 100644
--- a/drivers/net/ethernet/tile/tilegx.c
+++ b/drivers/net/ethernet/tile/tilegx.c
@@ -1262,12 +1262,10 @@ static void tile_net_init_mpipe_fail(int instance)
 
        for_each_online_cpu(cpu) {
                struct tile_net_info *info = &per_cpu(per_cpu_info, cpu);
-               free_pages(
-                       (unsigned long)(
-                               info->mpipe[instance].comps_for_echannel[0]),
+               free_pages(info->mpipe[instance].comps_for_echannel[0],
                        get_order(COMPS_SIZE));
                info->mpipe[instance].comps_for_echannel[0] = NULL;
-               free_pages((unsigned long)(info->mpipe[instance].iqueue.idescs),
+               free_pages(info->mpipe[instance].iqueue.idescs,
                           get_order(NOTIF_RING_SIZE));
                info->mpipe[instance].iqueue.idescs = NULL;
        }
diff --git a/drivers/net/irda/au1k_ir.c b/drivers/net/irda/au1k_ir.c
index 44e4f38..6095cf4 100644
--- a/drivers/net/irda/au1k_ir.c
+++ b/drivers/net/irda/au1k_ir.c
@@ -242,7 +242,7 @@ static void *dma_alloc(size_t size, dma_addr_t *dma_handle)
 static void dma_free(void *vaddr, size_t size)
 {
        vaddr = (void *)KSEG0ADDR(vaddr);
-       free_pages((unsigned long) vaddr, get_order(size));
+       free_pages(vaddr, get_order(size));
 }
 
 
diff --git a/drivers/net/rionet.c b/drivers/net/rionet.c
index 01f08a7..d0c1b13 100644
--- a/drivers/net/rionet.c
+++ b/drivers/net/rionet.c
@@ -626,7 +626,7 @@ static void __exit rionet_exit(void)
                                kfree(peer);
                        }
 
-                       free_pages((unsigned long)nets[i].active,
+                       free_pages(nets[i].active,
                                 get_order(sizeof(void *) *
                                 RIO_MAX_ROUTE_ENTRIES(rnet->mport->sys_size)));
                        nets[i].active = NULL;
diff --git a/drivers/net/wireless/b43/debugfs.c 
b/drivers/net/wireless/b43/debugfs.c
index 260de71..50a2316 100644
--- a/drivers/net/wireless/b43/debugfs.c
+++ b/drivers/net/wireless/b43/debugfs.c
@@ -540,7 +540,7 @@ static ssize_t b43_debugfs_read(struct file *file, char 
__user *userbuf,
                memset(buf, 0, bufsize);
                ret = dfops->read(dev, buf, bufsize);
                if (ret <= 0) {
-                       free_pages((unsigned long)buf, buforder);
+                       free_pages(buf, buforder);
                        err = ret;
                        goto out_unlock;
                }
@@ -552,7 +552,7 @@ static ssize_t b43_debugfs_read(struct file *file, char 
__user *userbuf,
                                      dfile->buffer,
                                      dfile->data_len);
        if (*ppos >= dfile->data_len) {
-               free_pages((unsigned long)dfile->buffer, buforder);
+               free_pages(dfile->buffer, buforder);
                dfile->buffer = NULL;
                dfile->data_len = 0;
        }
diff --git a/drivers/net/wireless/b43legacy/debugfs.c 
b/drivers/net/wireless/b43legacy/debugfs.c
index 947a823..e243955 100644
--- a/drivers/net/wireless/b43legacy/debugfs.c
+++ b/drivers/net/wireless/b43legacy/debugfs.c
@@ -242,7 +242,7 @@ static ssize_t b43legacy_debugfs_read(struct file *file, 
char __user *userbuf,
                } else
                        ret = dfops->read(dev, buf, bufsize);
                if (ret <= 0) {
-                       free_pages((unsigned long)buf, buforder);
+                       free_pages(buf, buforder);
                        err = ret;
                        goto out_unlock;
                }
@@ -254,7 +254,7 @@ static ssize_t b43legacy_debugfs_read(struct file *file, 
char __user *userbuf,
                                      dfile->buffer,
                                      dfile->data_len);
        if (*ppos >= dfile->data_len) {
-               free_pages((unsigned long)dfile->buffer, buforder);
+               free_pages(dfile->buffer, buforder);
                dfile->buffer = NULL;
                dfile->data_len = 0;
        }
diff --git a/drivers/net/wireless/iwlegacy/common.h 
b/drivers/net/wireless/iwlegacy/common.h
index ce52cf1..555bf02 100644
--- a/drivers/net/wireless/iwlegacy/common.h
+++ b/drivers/net/wireless/iwlegacy/common.h
@@ -1504,7 +1504,7 @@ __il_free_pages(struct il_priv *il, struct page *page)
 static inline void
 il_free_pages(struct il_priv *il, unsigned long page)
 {
-       free_pages(page, il->hw_params.rx_page_order);
+       free_pages((void *)page, il->hw_params.rx_page_order);
        il->alloc_rxb_page--;
 }
 
diff --git a/drivers/net/wireless/iwlwifi/iwl-trans.h 
b/drivers/net/wireless/iwlwifi/iwl-trans.h
index 6f76525..8ccbda2 100644
--- a/drivers/net/wireless/iwlwifi/iwl-trans.h
+++ b/drivers/net/wireless/iwlwifi/iwl-trans.h
@@ -342,7 +342,7 @@ struct iwl_host_cmd {
 
 static inline void iwl_free_resp(struct iwl_host_cmd *cmd)
 {
-       free_pages(cmd->_rx_page_addr, cmd->_rx_page_order);
+       free_pages((void *)cmd->_rx_page_addr, cmd->_rx_page_order);
 }
 
 struct iwl_rx_cmd_buffer {
diff --git a/drivers/net/wireless/ti/wlcore/main.c 
b/drivers/net/wireless/ti/wlcore/main.c
index 25defe4..374adb1 100644
--- a/drivers/net/wireless/ti/wlcore/main.c
+++ b/drivers/net/wireless/ti/wlcore/main.c
@@ -6354,7 +6354,7 @@ err_dummy_packet:
        dev_kfree_skb(wl->dummy_packet);
 
 err_aggr:
-       free_pages((unsigned long)wl->aggr_buf, order);
+       free_pages(wl->aggr_buf, order);
 
 err_wq:
        destroy_workqueue(wl->freezable_wq);
@@ -6386,7 +6386,7 @@ int wlcore_free_hw(struct wl1271 *wl)
        kfree(wl->mbox);
        free_page(wl->fwlog);
        dev_kfree_skb(wl->dummy_packet);
-       free_pages((unsigned long)wl->aggr_buf, get_order(wl->aggr_buf_size));
+       free_pages(wl->aggr_buf, get_order(wl->aggr_buf_size));
 
        wl1271_debugfs_exit(wl);
 
diff --git a/drivers/parisc/ccio-dma.c b/drivers/parisc/ccio-dma.c
index 8e11fb2..b172617 100644
--- a/drivers/parisc/ccio-dma.c
+++ b/drivers/parisc/ccio-dma.c
@@ -871,7 +871,7 @@ ccio_free_consistent(struct device *dev, size_t size, void 
*cpu_addr,
                     dma_addr_t dma_handle)
 {
        ccio_unmap_single(dev, dma_handle, size, 0);
-       free_pages((unsigned long)cpu_addr, get_order(size));
+       free_pages(cpu_addr, get_order(size));
 }
 
 /*
diff --git a/drivers/parisc/ccio-rm-dma.c b/drivers/parisc/ccio-rm-dma.c
index f78f6f1..b9649c2 100644
--- a/drivers/parisc/ccio-rm-dma.c
+++ b/drivers/parisc/ccio-rm-dma.c
@@ -96,7 +96,7 @@ static void *ccio_alloc_consistent(struct pci_dev *dev, 
size_t size,
 static void ccio_free_consistent(struct pci_dev *dev, size_t size,
                               void *vaddr, dma_addr_t handle)
 {
-       free_pages((unsigned long)vaddr, get_order(size));
+       free_pages(vaddr, get_order(size));
 }
 
 static dma_addr_t ccio_map_single(struct pci_dev *dev, void *ptr, size_t size,
diff --git a/drivers/parisc/sba_iommu.c b/drivers/parisc/sba_iommu.c
index 225049b..6066d4e 100644
--- a/drivers/parisc/sba_iommu.c
+++ b/drivers/parisc/sba_iommu.c
@@ -901,7 +901,7 @@ sba_free_consistent(struct device *hwdev, size_t size, void 
*vaddr,
                    dma_addr_t dma_handle)
 {
        sba_unmap_single(hwdev, dma_handle, size, 0);
-       free_pages((unsigned long) vaddr, get_order(size));
+       free_pages(vaddr, get_order(size));
 }
 
 
@@ -1156,14 +1156,14 @@ sba_alloc_pdir(unsigned int pdir_size)
                        /* allocate a new one on 512k alignment */
                        unsigned long new_pdir = __get_free_pages(GFP_KERNEL, 
(19-12));
                        /* release original */
-                       free_pages(pdir_base, pdir_order);
+                       free_pages((void *)pdir_base, pdir_order);
 
                        pdir_base = new_pdir;
 
                        /* release excess */
                        while (pdir_order < (19-12)) {
                                new_pdir += pdir_size;
-                               free_pages(new_pdir, pdir_order);
+                               free_pages((void *)new_pdir, pdir_order);
                                pdir_order +=1;
                                pdir_size <<=1;
                        }
@@ -1176,10 +1176,10 @@ sba_alloc_pdir(unsigned int pdir_size)
                unsigned long new_pdir = __get_free_pages(GFP_KERNEL, 
pdir_order+1); /* 2 or 4MB */
 
                /* release original */
-               free_pages( pdir_base, pdir_order);
+               free_pages((void *)pdir_base, pdir_order);
 
                /* release first 1MB */
-               free_pages(new_pdir, 20-12);
+               free_pages((void *)new_pdir, 20-12);
 
                pdir_base = new_pdir + 1024*1024;
 
@@ -1194,10 +1194,10 @@ sba_alloc_pdir(unsigned int pdir_size)
 
                        new_pdir += 3*1024*1024;
                        /* release last 1MB */
-                       free_pages(new_pdir, 20-12);
+                       free_pages((void *)new_pdir, 20-12);
 
                        /* release unusable 128KB */
-                       free_pages(new_pdir - 128*1024 , 17-12);
+                       free_pages((void *)new_pdir - 128*1024 , 17-12);
 
                        pdir_size -= 128*1024;
                }
diff --git a/drivers/pci/host/pci-tegra.c b/drivers/pci/host/pci-tegra.c
index 3018ae5..9ad90fd 100644
--- a/drivers/pci/host/pci-tegra.c
+++ b/drivers/pci/host/pci-tegra.c
@@ -1347,7 +1347,7 @@ static int tegra_pcie_disable_msi(struct tegra_pcie *pcie)
        afi_writel(pcie, 0, AFI_MSI_EN_VEC6);
        afi_writel(pcie, 0, AFI_MSI_EN_VEC7);
 
-       free_pages(msi->pages, 0);
+       free_pages((void *)msi->pages, 0);
 
        if (msi->irq > 0)
                free_irq(msi->irq, pcie);
diff --git a/drivers/pci/host/pcie-xilinx.c b/drivers/pci/host/pcie-xilinx.c
index 3c7a0d5..a9438d2 100644
--- a/drivers/pci/host/pcie-xilinx.c
+++ b/drivers/pci/host/pcie-xilinx.c
@@ -527,7 +527,7 @@ static void xilinx_pcie_free_irq_domain(struct 
xilinx_pcie_port *port)
        /* Free IRQ Domain */
        if (IS_ENABLED(CONFIG_PCI_MSI)) {
 
-               free_pages(port->msi_pages, 0);
+               free_pages((void *)port->msi_pages, 0);
 
                num_irqs = XILINX_NUM_MSI_IRQS;
        } else {
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c
index 5257c80..7b24131 100644
--- a/drivers/s390/block/dasd.c
+++ b/drivers/s390/block/dasd.c
@@ -104,7 +104,7 @@ struct dasd_device *dasd_alloc_device(void)
        /* Get one page for error recovery. */
        device->erp_mem = (void *) get_zeroed_page(GFP_ATOMIC | GFP_DMA);
        if (!device->erp_mem) {
-               free_pages((unsigned long) device->ccw_mem, 1);
+               free_pages(device->ccw_mem, 1);
                kfree(device);
                return ERR_PTR(-ENOMEM);
        }
@@ -137,7 +137,7 @@ void dasd_free_device(struct dasd_device *device)
 {
        kfree(device->private);
        free_page(device->erp_mem);
-       free_pages((unsigned long)device->ccw_mem, 1);
+       free_pages(device->ccw_mem, 1);
        kfree(device);
 }
 
diff --git a/drivers/s390/char/hmcdrv_cache.c b/drivers/s390/char/hmcdrv_cache.c
index 4cda5ad..60a4233 100644
--- a/drivers/s390/char/hmcdrv_cache.c
+++ b/drivers/s390/char/hmcdrv_cache.c
@@ -240,7 +240,7 @@ int hmcdrv_cache_startup(size_t cachesize)
 void hmcdrv_cache_shutdown(void)
 {
        if (hmcdrv_cache_file.content) {
-               free_pages((unsigned long) hmcdrv_cache_file.content,
+               free_pages(hmcdrv_cache_file.content,
                           hmcdrv_cache_order);
                hmcdrv_cache_file.content = NULL;
        }
diff --git a/drivers/s390/char/hmcdrv_ftp.c b/drivers/s390/char/hmcdrv_ftp.c
index d8a07bb..c08e633 100644
--- a/drivers/s390/char/hmcdrv_ftp.c
+++ b/drivers/s390/char/hmcdrv_ftp.c
@@ -278,7 +278,7 @@ ssize_t hmcdrv_ftp_cmd(char __kernel *cmd, loff_t offset,
                break;
        }
 
-       free_pages((unsigned long) ftp.buf, order);
+       free_pages(ftp.buf, order);
        return retlen;
 }
 
diff --git a/drivers/s390/char/tty3270.c b/drivers/s390/char/tty3270.c
index e96fc7f..bb61f97 100644
--- a/drivers/s390/char/tty3270.c
+++ b/drivers/s390/char/tty3270.c
@@ -728,7 +728,7 @@ out_write:
        raw3270_request_free(tp->write);
 out_pages:
        while (pages--)
-               free_pages((unsigned long) tp->freemem_pages[pages], 0);
+               free_pages(tp->freemem_pages[pages], 0);
        kfree(tp->freemem_pages);
        tty_port_destroy(&tp->port);
 out_tp:
@@ -750,7 +750,7 @@ tty3270_free_view(struct tty3270 *tp)
        raw3270_request_free(tp->read);
        raw3270_request_free(tp->write);
        for (pages = 0; pages < TTY3270_STRING_PAGES; pages++)
-               free_pages((unsigned long) tp->freemem_pages[pages], 0);
+               free_pages(tp->freemem_pages[pages], 0);
        kfree(tp->freemem_pages);
        tty_port_destroy(&tp->port);
        kfree(tp);
diff --git a/drivers/s390/char/vmcp.c b/drivers/s390/char/vmcp.c
index 0fdedad..f73bf6b 100644
--- a/drivers/s390/char/vmcp.c
+++ b/drivers/s390/char/vmcp.c
@@ -51,7 +51,7 @@ static int vmcp_release(struct inode *inode, struct file 
*file)
 
        session = file->private_data;
        file->private_data = NULL;
-       free_pages((unsigned long)session->response, 
get_order(session->bufsize));
+       free_pages(session->response, get_order(session->bufsize));
        kfree(session);
        return 0;
 }
@@ -151,8 +151,7 @@ static long vmcp_ioctl(struct file *file, unsigned int cmd, 
unsigned long arg)
                mutex_unlock(&session->mutex);
                return put_user(temp, argp);
        case VMCP_SETBUF:
-               free_pages((unsigned long)session->response,
-                               get_order(session->bufsize));
+               free_pages(session->response, get_order(session->bufsize));
                session->response=NULL;
                temp = get_user(session->bufsize, argp);
                if (get_order(session->bufsize) > 8) {
diff --git a/drivers/s390/cio/cmf.c b/drivers/s390/cio/cmf.c
index b2afad5..70356a3 100644
--- a/drivers/s390/cio/cmf.c
+++ b/drivers/s390/cio/cmf.c
@@ -578,7 +578,7 @@ static int alloc_cmb(struct ccw_device *cdev)
 
                if (cmb_area.mem) {
                        /* ok, another thread was faster */
-                       free_pages((unsigned long)mem, get_order(size));
+                       free_pages(mem, get_order(size));
                } else if (!mem) {
                        /* no luck */
                        ret = -ENOMEM;
@@ -622,7 +622,7 @@ static void free_cmb(struct ccw_device *cdev)
                ssize_t size;
                size = sizeof(struct cmb) * cmb_area.num_channels;
                cmf_activate(NULL, 0);
-               free_pages((unsigned long)cmb_area.mem, get_order(size));
+               free_pages(cmb_area.mem, get_order(size));
                cmb_area.mem = NULL;
        }
        spin_unlock_irq(cdev->ccwlock);
diff --git a/drivers/scsi/cxlflash/main.c b/drivers/scsi/cxlflash/main.c
index b91d769..d4d6e38 100644
--- a/drivers/scsi/cxlflash/main.c
+++ b/drivers/scsi/cxlflash/main.c
@@ -622,7 +622,7 @@ static void free_mem(struct cxlflash_cfg *cfg)
                                free_page(buf);
                }
 
-               free_pages((ulong)afu, get_order(sizeof(struct afu)));
+               free_pages(afu, get_order(sizeof(struct afu)));
                cfg->afu = NULL;
        }
 }
diff --git a/drivers/scsi/libiscsi.c b/drivers/scsi/libiscsi.c
index 6bffd91..d03ab52 100644
--- a/drivers/scsi/libiscsi.c
+++ b/drivers/scsi/libiscsi.c
@@ -2962,7 +2962,7 @@ void iscsi_conn_teardown(struct iscsi_cls_conn *cls_conn)
        iscsi_suspend_tx(conn);
 
        spin_lock_bh(&session->frwd_lock);
-       free_pages((unsigned long) conn->data,
+       free_pages(conn->data,
                   get_order(ISCSI_DEF_MAX_RECV_SEG_LEN));
        kfree(conn->persistent_address);
        kfree(conn->local_ipaddr);
diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
index db9446c..4d9457b 100644
--- a/drivers/scsi/lpfc/lpfc_init.c
+++ b/drivers/scsi/lpfc/lpfc_init.c
@@ -11476,14 +11476,14 @@ lpfc_exit(void)
                printk(KERN_ERR "9062 BLKGRD: freeing %lu pages for "
                                "_dump_buf_data at 0x%p\n",
                                (1L << _dump_buf_data_order), _dump_buf_data);
-               free_pages((unsigned long)_dump_buf_data, _dump_buf_data_order);
+               free_pages(_dump_buf_data, _dump_buf_data_order);
        }
 
        if (_dump_buf_dif) {
                printk(KERN_ERR "9049 BLKGRD: freeing %lu pages for "
                                "_dump_buf_dif at 0x%p\n",
                                (1L << _dump_buf_dif_order), _dump_buf_dif);
-               free_pages((unsigned long)_dump_buf_dif, _dump_buf_dif_order);
+               free_pages(_dump_buf_dif, _dump_buf_dif_order);
        }
        kfree(lpfc_used_cpu);
        idr_destroy(&lpfc_hba_index);
diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c 
b/drivers/scsi/megaraid/megaraid_sas_base.c
index 97a1c1c..2c81ab3 100644
--- a/drivers/scsi/megaraid/megaraid_sas_base.c
+++ b/drivers/scsi/megaraid/megaraid_sas_base.c
@@ -5939,7 +5939,7 @@ static void megasas_detach_one(struct pci_dev *pdev)
                                                  fusion->ld_map[i],
                                                  fusion->ld_map_phys[i]);
                        if (fusion->ld_drv_map[i])
-                               free_pages((ulong)fusion->ld_drv_map[i],
+                               free_pages(fusion->ld_drv_map[i],
                                        fusion->drv_map_pages);
                                if (fusion->pd_seq_sync)
                                        dma_free_coherent(&instance->pdev->dev,
@@ -5947,7 +5947,7 @@ static void megasas_detach_one(struct pci_dev *pdev)
                                                fusion->pd_seq_sync[i],
                                                fusion->pd_seq_phys[i]);
                }
-               free_pages((ulong)instance->ctrl_context,
+               free_pages(instance->ctrl_context,
                        instance->ctrl_context_pages);
        } else {
                megasas_release_mfi(instance);
diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c 
b/drivers/scsi/megaraid/megaraid_sas_fusion.c
index 8d630a5..6429914 100644
--- a/drivers/scsi/megaraid/megaraid_sas_fusion.c
+++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c
@@ -1193,7 +1193,7 @@ megasas_init_adapter_fusion(struct megasas_instance 
*instance)
                                "memory for local map info for %d pages\n",
                                fusion->drv_map_pages);
                        if (i == 1)
-                               free_pages((ulong)fusion->ld_drv_map[0],
+                               free_pages(fusion->ld_drv_map[0],
                                        fusion->drv_map_pages);
                        goto fail_ioc_init;
                }
@@ -2486,7 +2486,7 @@ megasas_free_host_crash_buffer(struct megasas_instance 
*instance)
 ;
        for (i = 0; i < instance->drv_buf_alloc; i++) {
                if (instance->crash_buf[i])
-                       free_pages((ulong)instance->crash_buf[i],
+                       free_pages(instance->crash_buf[i],
                                        instance->crash_buf_pages);
        }
        instance->drv_buf_index = 0;
diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c 
b/drivers/scsi/mpt3sas/mpt3sas_base.c
index 11393eb..0d73ea3 100644
--- a/drivers/scsi/mpt3sas/mpt3sas_base.c
+++ b/drivers/scsi/mpt3sas/mpt3sas_base.c
@@ -3115,7 +3115,7 @@ _base_release_memory_pools(struct MPT3SAS_ADAPTER *ioc)
        }
 
        if (ioc->scsi_lookup) {
-               free_pages((ulong)ioc->scsi_lookup, ioc->scsi_lookup_pages);
+               free_pages(ioc->scsi_lookup, ioc->scsi_lookup_pages);
                ioc->scsi_lookup = NULL;
        }
        kfree(ioc->hpr_lookup);
@@ -3129,7 +3129,7 @@ _base_release_memory_pools(struct MPT3SAS_ADAPTER *ioc)
                }
                if (ioc->chain_dma_pool)
                        pci_pool_destroy(ioc->chain_dma_pool);
-               free_pages((ulong)ioc->chain_lookup, ioc->chain_pages);
+               free_pages(ioc->chain_lookup, ioc->chain_pages);
                ioc->chain_lookup = NULL;
        }
 }
diff --git a/drivers/scsi/ncr53c8xx.c b/drivers/scsi/ncr53c8xx.c
index 5b93ed8..1c3f5a0 100644
--- a/drivers/scsi/ncr53c8xx.c
+++ b/drivers/scsi/ncr53c8xx.c
@@ -366,7 +366,7 @@ static m_addr_t ___mp0_getp(m_pool_s *mp)
 
 static void ___mp0_freep(m_pool_s *mp, m_addr_t m)
 {
-       free_pages(m, MEMO_PAGE_ORDER);
+       free_pages((void *)m, MEMO_PAGE_ORDER);
        --mp->nump;
 }
 
diff --git a/drivers/scsi/sym53c8xx_2/sym_hipd.h 
b/drivers/scsi/sym53c8xx_2/sym_hipd.h
index a141b17..45f9ac2 100644
--- a/drivers/scsi/sym53c8xx_2/sym_hipd.h
+++ b/drivers/scsi/sym53c8xx_2/sym_hipd.h
@@ -1125,7 +1125,7 @@ bad:
 #define sym_get_mem_cluster()  \
        (void *) __get_free_pages(GFP_ATOMIC, SYM_MEM_PAGE_ORDER)
 #define sym_free_mem_cluster(p)        \
-       free_pages((unsigned long)p, SYM_MEM_PAGE_ORDER)
+       free_pages(p, SYM_MEM_PAGE_ORDER)
 
 /*
  *  Link between free memory chunks of a given size.
diff --git a/drivers/scsi/vmw_pvscsi.c b/drivers/scsi/vmw_pvscsi.c
index 0f133c1..7921fc8 100644
--- a/drivers/scsi/vmw_pvscsi.c
+++ b/drivers/scsi/vmw_pvscsi.c
@@ -1159,7 +1159,7 @@ static void pvscsi_free_sgls(const struct pvscsi_adapter 
*adapter)
        unsigned i;
 
        for (i = 0; i < adapter->req_depth; ++i, ++ctx)
-               free_pages((unsigned long)ctx->sgl, get_order(SGL_SIZE));
+               free_pages(ctx->sgl, get_order(SGL_SIZE));
 }
 
 static int pvscsi_setup_msix(const struct pvscsi_adapter *adapter,
@@ -1257,8 +1257,7 @@ static int pvscsi_allocate_sg(struct pvscsi_adapter 
*adapter)
                BUG_ON(!IS_ALIGNED(((unsigned long)ctx->sgl), PAGE_SIZE));
                if (!ctx->sgl) {
                        for (; i >= 0; --i, --ctx) {
-                               free_pages((unsigned long)ctx->sgl,
-                                          get_order(SGL_SIZE));
+                               free_pages(ctx->sgl, get_order(SGL_SIZE));
                                ctx->sgl = NULL;
                        }
                        return -ENOMEM;
diff --git a/drivers/sh/maple/maple.c b/drivers/sh/maple/maple.c
index bec81c2..84fa4f7 100644
--- a/drivers/sh/maple/maple.c
+++ b/drivers/sh/maple/maple.c
@@ -874,7 +874,7 @@ cleanup_irq:
        free_irq(HW_EVENT_MAPLE_DMA, 0);
 
 cleanup_dma:
-       free_pages((unsigned long) maple_sendbuf, MAPLE_DMA_PAGES);
+       free_pages(maple_sendbuf, MAPLE_DMA_PAGES);
 
 cleanup_basic:
        driver_unregister(&maple_unsupported_device.drv);
diff --git a/drivers/staging/rdma/ehca/ehca_mrmw.c 
b/drivers/staging/rdma/ehca/ehca_mrmw.c
index f914b30..8bc19ca 100644
--- a/drivers/staging/rdma/ehca/ehca_mrmw.c
+++ b/drivers/staging/rdma/ehca/ehca_mrmw.c
@@ -2560,7 +2560,7 @@ static void *ehca_dma_alloc_coherent(struct ib_device 
*dev, size_t size,
                addr = page_address(p);
                dma_addr = ehca_map_vaddr(addr);
                if (ehca_dma_mapping_error(dev, dma_addr)) {
-                       free_pages((unsigned long)addr, get_order(size));
+                       free_pages(addr,        get_order(size));
                        return NULL;
                }
                if (dma_handle)
@@ -2574,7 +2574,7 @@ static void ehca_dma_free_coherent(struct ib_device *dev, 
size_t size,
                                   void *cpu_addr, u64 dma_handle)
 {
        if (cpu_addr && size)
-               free_pages((unsigned long)cpu_addr, get_order(size));
+               free_pages(cpu_addr, get_order(size));
 }
 
 
diff --git a/drivers/staging/rdma/hfi1/dma.c b/drivers/staging/rdma/hfi1/dma.c
index e03bd73..2ba5ce4 100644
--- a/drivers/staging/rdma/hfi1/dma.c
+++ b/drivers/staging/rdma/hfi1/dma.c
@@ -168,7 +168,7 @@ static void *hfi1_dma_alloc_coherent(struct ib_device *dev, 
size_t size,
 static void hfi1_dma_free_coherent(struct ib_device *dev, size_t size,
                                   void *cpu_addr, u64 dma_handle)
 {
-       free_pages((unsigned long) cpu_addr, get_order(size));
+       free_pages(cpu_addr, get_order(size));
 }
 
 struct ib_dma_mapping_ops hfi1_dma_mapping_ops = {
diff --git a/drivers/staging/rdma/ipath/ipath_dma.c 
b/drivers/staging/rdma/ipath/ipath_dma.c
index 123a8c0..e363f70 100644
--- a/drivers/staging/rdma/ipath/ipath_dma.c
+++ b/drivers/staging/rdma/ipath/ipath_dma.c
@@ -161,7 +161,7 @@ static void *ipath_dma_alloc_coherent(struct ib_device 
*dev, size_t size,
 static void ipath_dma_free_coherent(struct ib_device *dev, size_t size,
                                    void *cpu_addr, u64 dma_handle)
 {
-       free_pages((unsigned long) cpu_addr, get_order(size));
+       free_pages(cpu_addr, get_order(size));
 }
 
 struct ib_dma_mapping_ops ipath_dma_mapping_ops = {
diff --git a/drivers/usb/core/devices.c b/drivers/usb/core/devices.c
index 2a3bbdf..b741639 100644
--- a/drivers/usb/core/devices.c
+++ b/drivers/usb/core/devices.c
@@ -583,7 +583,7 @@ static ssize_t usb_device_dump(char __user **buffer, size_t 
*nbytes,
                if (length > *nbytes)
                        length = *nbytes;
                if (copy_to_user(*buffer, pages_start + *skip_bytes, length)) {
-                       free_pages((unsigned long)pages_start, 1);
+                       free_pages(pages_start, 1);
                        return -EFAULT;
                }
                *nbytes -= length;
@@ -594,7 +594,7 @@ static ssize_t usb_device_dump(char __user **buffer, size_t 
*nbytes,
        } else
                *skip_bytes -= length;
 
-       free_pages((unsigned long)pages_start, 1);
+       free_pages(pages_start, 1);
 
        /* Now look at all of this device's children. */
        usb_hub_for_each_child(usbdev, chix, childdev) {
diff --git a/drivers/video/fbdev/vermilion/vermilion.c 
b/drivers/video/fbdev/vermilion/vermilion.c
index 1c1e95a..0882f41 100644
--- a/drivers/video/fbdev/vermilion/vermilion.c
+++ b/drivers/video/fbdev/vermilion/vermilion.c
@@ -167,7 +167,7 @@ static void vmlfb_free_vram_area(struct vram_area *va)
                printk(KERN_DEBUG MODULE_NAME
                       ": Freeing %ld bytes vram area at 0x%08lx\n",
                       va->size, va->phys);
-               free_pages(va->logical, va->order);
+               free_pages((void *)va->logical, va->order);
 
                va->logical = 0;
        }
diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
index 7399782..fa6b56e 100644
--- a/drivers/xen/swiotlb-xen.c
+++ b/drivers/xen/swiotlb-xen.c
@@ -261,7 +261,7 @@ retry:
                if (early)
                        free_bootmem(__pa(xen_io_tlb_start), PAGE_ALIGN(bytes));
                else {
-                       free_pages((unsigned long)xen_io_tlb_start, order);
+                       free_pages(xen_io_tlb_start, order);
                        xen_io_tlb_start = NULL;
                }
                m_ret = XEN_SWIOTLB_EFIXUP;
@@ -288,7 +288,7 @@ error:
        if (early)
                panic("%s (rc:%d)", xen_swiotlb_error(m_ret), rc);
        else
-               free_pages((unsigned long)xen_io_tlb_start, order);
+               free_pages(xen_io_tlb_start, order);
        return rc;
 }
 void *
diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c
index e7b130a..40c9ef6 100644
--- a/fs/ceph/mds_client.c
+++ b/fs/ceph/mds_client.c
@@ -339,7 +339,7 @@ static void destroy_reply_info(struct 
ceph_mds_reply_info_parsed *info)
 {
        if (!info->dir_in)
                return;
-       free_pages((unsigned long)info->dir_in, get_order(info->dir_buf_size));
+       free_pages(info->dir_in, get_order(info->dir_buf_size));
 }
 
 
diff --git a/fs/ecryptfs/crypto.c b/fs/ecryptfs/crypto.c
index 80d6901..cf53226 100644
--- a/fs/ecryptfs/crypto.c
+++ b/fs/ecryptfs/crypto.c
@@ -1233,7 +1233,7 @@ int ecryptfs_write_metadata(struct dentry 
*ecryptfs_dentry,
                goto out_free;
        }
 out_free:
-       free_pages((unsigned long)virt, order);
+       free_pages(virt, order);
 out:
        return rc;
 }
diff --git a/fs/hfs/mdb.c b/fs/hfs/mdb.c
index aa3f0d6..92f1730 100644
--- a/fs/hfs/mdb.c
+++ b/fs/hfs/mdb.c
@@ -360,7 +360,7 @@ void hfs_mdb_put(struct super_block *sb)
        unload_nls(HFS_SB(sb)->nls_io);
        unload_nls(HFS_SB(sb)->nls_disk);
 
-       free_pages((unsigned long)HFS_SB(sb)->bitmap, PAGE_SIZE < 8192 ? 1 : 0);
+       free_pages(HFS_SB(sb)->bitmap, PAGE_SIZE < 8192 ? 1 : 0);
        kfree(HFS_SB(sb));
        sb->s_fs_info = NULL;
 }
diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c
index 81e6226..450a30b 100644
--- a/fs/jbd2/journal.c
+++ b/fs/jbd2/journal.c
@@ -2322,14 +2322,14 @@ void *jbd2_alloc(size_t size, gfp_t flags)
 void jbd2_free(void *ptr, size_t size)
 {
        if (size == PAGE_SIZE) {
-               free_pages((unsigned long)ptr, 0);
+               free_pages(ptr, 0);
                return;
        }
        if (size > PAGE_SIZE) {
                int order = get_order(size);
 
                if (order < 3)
-                       free_pages((unsigned long)ptr, order);
+                       free_pages(ptr, order);
                else
                        vfree(ptr);
                return;
diff --git a/fs/nilfs2/ioctl.c b/fs/nilfs2/ioctl.c
index aba4381..09d2ede 100644
--- a/fs/nilfs2/ioctl.c
+++ b/fs/nilfs2/ioctl.c
@@ -122,7 +122,7 @@ static int nilfs_ioctl_wrap_copy(struct the_nilfs *nilfs,
        }
        argv->v_nmembs = total;
 
-       free_pages((unsigned long)buf, 0);
+       free_pages(buf, 0);
        return ret;
 }
 
diff --git a/fs/proc/vmcore.c b/fs/proc/vmcore.c
index 4e61388..dd6566c 100644
--- a/fs/proc/vmcore.c
+++ b/fs/proc/vmcore.c
@@ -990,7 +990,7 @@ static void __init set_vmcore_list_offsets(size_t elfsz, 
size_t elfnotes_sz,
 
 static void free_elfcorebuf(void)
 {
-       free_pages((unsigned long)elfcorebuf, get_order(elfcorebuf_sz_orig));
+       free_pages(elfcorebuf, get_order(elfcorebuf_sz_orig));
        elfcorebuf = NULL;
        vfree(elfnotes_buf);
        elfnotes_buf = NULL;
diff --git a/include/linux/gfp.h b/include/linux/gfp.h
index 54c6efd..df5c0a0 100644
--- a/include/linux/gfp.h
+++ b/include/linux/gfp.h
@@ -487,7 +487,7 @@ void * __meminit alloc_pages_exact_nid(int nid, size_t 
size, gfp_t gfp_mask);
                __get_free_pages((gfp_mask) | GFP_DMA, (order))
 
 extern void __free_pages(struct page *page, unsigned int order);
-extern void free_pages(unsigned long addr, unsigned int order);
+extern void free_pages(const void *addr, unsigned int order);
 extern void free_hot_cold_page(struct page *page, bool cold);
 extern void free_hot_cold_page_list(struct list_head *list, bool cold);
 
@@ -500,7 +500,7 @@ extern void __free_kmem_pages(struct page *page, unsigned 
int order);
 extern void free_kmem_pages(unsigned long addr, unsigned int order);
 
 #define __free_page(page) __free_pages((page), 0)
-#define free_page(addr) free_pages((unsigned long)(addr), 0)
+#define free_page(addr) free_pages((addr), 0)
 
 void page_alloc_init(void);
 void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp);
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index 14703bb..b995e08 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -2985,7 +2985,7 @@ ftrace_allocate_pages(unsigned long num_to_init)
        pg = start_pg;
        while (pg) {
                order = get_count_order(pg->size / ENTRIES_PER_PAGE);
-               free_pages((unsigned long)pg->records, order);
+               free_pages(pg->records, order);
                start_pg = pg->next;
                kfree(pg);
                pg = start_pg;
@@ -4931,7 +4931,7 @@ void ftrace_release_mod(struct module *mod)
 
                        *last_pg = pg->next;
                        order = get_count_order(pg->size / ENTRIES_PER_PAGE);
-                       free_pages((unsigned long)pg->records, order);
+                       free_pages(pg->records, order);
                        kfree(pg);
                } else
                        last_pg = &pg->next;
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
index f2e26df..5d06111 100644
--- a/kernel/trace/trace_events.c
+++ b/kernel/trace/trace_events.c
@@ -600,7 +600,7 @@ static void __ftrace_clear_event_pids(struct trace_array 
*tr)
        /* Wait till all users are no longer using pid filtering */
        synchronize_sched();
 
-       free_pages((unsigned long)pid_list->pids, pid_list->order);
+       free_pages(pid_list->pids, pid_list->order);
        kfree(pid_list);
 }
 
@@ -1662,7 +1662,7 @@ ftrace_event_pid_write(struct file *filp, const char 
__user *ubuf,
                                break;
                        memcpy(pid_page, pid_list->pids,
                               pid_list->nr_pids * sizeof(pid_t));
-                       free_pages((unsigned long)pid_list->pids, 
pid_list->order);
+                       free_pages(pid_list->pids, pid_list->order);
 
                        pid_list->order++;
                        pid_list->pids = pid_page;
@@ -1676,7 +1676,7 @@ ftrace_event_pid_write(struct file *filp, const char 
__user *ubuf,
 
        if (ret < 0) {
                if (pid_list)
-                       free_pages((unsigned long)pid_list->pids, 
pid_list->order);
+                       free_pages(pid_list->pids, pid_list->order);
                kfree(pid_list);
                mutex_unlock(&event_mutex);
                return ret;
@@ -1717,7 +1717,7 @@ ftrace_event_pid_write(struct file *filp, const char 
__user *ubuf,
        if (filtered_pids) {
                synchronize_sched();
 
-               free_pages((unsigned long)filtered_pids->pids, 
filtered_pids->order);
+               free_pages(filtered_pids->pids, filtered_pids->order);
                kfree(filtered_pids);
        } else {
                /*
diff --git a/lib/percpu_ida.c b/lib/percpu_ida.c
index 6d40944..d58f5a9 100644
--- a/lib/percpu_ida.c
+++ b/lib/percpu_ida.c
@@ -266,7 +266,7 @@ EXPORT_SYMBOL_GPL(percpu_ida_free);
 void percpu_ida_destroy(struct percpu_ida *pool)
 {
        free_percpu(pool->tag_cpu);
-       free_pages((unsigned long) pool->freelist,
+       free_pages(pool->freelist,
                   get_order(pool->nr_tags * sizeof(unsigned)));
 }
 EXPORT_SYMBOL_GPL(percpu_ida_destroy);
diff --git a/lib/raid6/algos.c b/lib/raid6/algos.c
index 975c6e0..3d8cf31 100644
--- a/lib/raid6/algos.c
+++ b/lib/raid6/algos.c
@@ -234,7 +234,7 @@ int __init raid6_select_algo(void)
        /* select raid recover functions */
        rec_best = raid6_choose_recov();
 
-       free_pages((unsigned long)syndromes, 1);
+       free_pages(syndromes, 1);
 
        return gen_best && rec_best ? 0 : -EINVAL;
 }
diff --git a/lib/swiotlb.c b/lib/swiotlb.c
index 76f29ec..87e33e7 100644
--- a/lib/swiotlb.c
+++ b/lib/swiotlb.c
@@ -278,7 +278,7 @@ swiotlb_late_init_with_default_size(size_t default_size)
        }
        rc = swiotlb_late_init_with_tbl(vstart, io_tlb_nslabs);
        if (rc)
-               free_pages((unsigned long)vstart, order);
+               free_pages(vstart, order);
        return rc;
 }
 
@@ -336,12 +336,10 @@ swiotlb_late_init_with_tbl(char *tlb, unsigned long 
nslabs)
        return 0;
 
 cleanup4:
-       free_pages((unsigned long)io_tlb_list, get_order(io_tlb_nslabs *
-                                                        sizeof(int)));
+       free_pages(io_tlb_list, get_order(io_tlb_nslabs * sizeof(int)));
        io_tlb_list = NULL;
 cleanup3:
-       free_pages((unsigned long)v_overflow_buffer,
-                  get_order(io_tlb_overflow));
+       free_pages(v_overflow_buffer, get_order(io_tlb_overflow));
        io_tlb_overflow_buffer = 0;
 cleanup2:
        io_tlb_end = 0;
@@ -356,13 +354,12 @@ void __init swiotlb_free(void)
                return;
 
        if (late_alloc) {
-               free_pages((unsigned long)phys_to_virt(io_tlb_overflow_buffer),
+               free_pages(phys_to_virt(io_tlb_overflow_buffer),
                           get_order(io_tlb_overflow));
-               free_pages((unsigned long)io_tlb_orig_addr,
+               free_pages(io_tlb_orig_addr,
                           get_order(io_tlb_nslabs * sizeof(phys_addr_t)));
-               free_pages((unsigned long)io_tlb_list, get_order(io_tlb_nslabs *
-                                                                sizeof(int)));
-               free_pages((unsigned long)phys_to_virt(io_tlb_start),
+               free_pages(io_tlb_list, get_order(io_tlb_nslabs * sizeof(int)));
+               free_pages(phys_to_virt(io_tlb_start),
                           get_order(io_tlb_nslabs << IO_TLB_SHIFT));
        } else {
                memblock_free_late(io_tlb_overflow_buffer,
@@ -644,7 +641,7 @@ swiotlb_alloc_coherent(struct device *hwdev, size_t size,
                        /*
                         * The allocated memory isn't reachable by the device.
                         */
-                       free_pages((unsigned long) ret, order);
+                       free_pages(ret, order);
                        ret = NULL;
                }
        }
@@ -696,7 +693,7 @@ swiotlb_free_coherent(struct device *hwdev, size_t size, 
void *vaddr,
 
        WARN_ON(irqs_disabled());
        if (!is_swiotlb_buffer(paddr))
-               free_pages((unsigned long)vaddr, get_order(size));
+               free_pages(vaddr, get_order(size));
        else
                /* DMA_TO_DEVICE to avoid memcpy in swiotlb_tbl_unmap_single */
                swiotlb_tbl_unmap_single(hwdev, paddr, size, DMA_TO_DEVICE);
diff --git a/mm/memory.c b/mm/memory.c
index 47f8f87..8364c20 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -279,7 +279,7 @@ void tlb_finish_mmu(struct mmu_gather *tlb, unsigned long 
start, unsigned long e
 
        for (batch = tlb->local.next; batch; batch = next) {
                next = batch->next;
-               free_pages((unsigned long)batch, 0);
+               free_pages(batch, 0);
        }
        tlb->local.next = NULL;
 }
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index e68689c..11014f3 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -3292,11 +3292,11 @@ void __free_pages(struct page *page, unsigned int order)
 
 EXPORT_SYMBOL(__free_pages);
 
-void free_pages(unsigned long addr, unsigned int order)
+void free_pages(const void *addr, unsigned int order)
 {
-       if (addr != 0) {
-               VM_BUG_ON(!virt_addr_valid((void *)addr));
-               __free_pages(virt_to_page((void *)addr), order);
+       if (addr) {
+               VM_BUG_ON(!virt_addr_valid(addr));
+               __free_pages(virt_to_page(addr), order);
        }
 }
 
diff --git a/mm/slob.c b/mm/slob.c
index 17e8f8c..d6430e8 100644
--- a/mm/slob.c
+++ b/mm/slob.c
@@ -208,7 +208,7 @@ static void slob_free_pages(void *b, int order)
 {
        if (current->reclaim_state)
                current->reclaim_state->reclaimed_slab += 1 << order;
-       free_pages((unsigned long)b, order);
+       free_pages(b, order);
 }
 
 /*
diff --git a/mm/slub.c b/mm/slub.c
index b50b454..5da985fe 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -4196,8 +4196,7 @@ struct loc_track {
 static void free_loc_track(struct loc_track *t)
 {
        if (t->max)
-               free_pages((unsigned long)t->loc,
-                       get_order(sizeof(struct location) * t->max));
+               free_pages(t->loc, get_order(sizeof(struct location) * t->max));
 }
 
 static int alloc_loc_track(struct loc_track *t, unsigned long max, gfp_t flags)
diff --git a/mm/sparse.c b/mm/sparse.c
index d1b48b6..109258a 100644
--- a/mm/sparse.c
+++ b/mm/sparse.c
@@ -648,7 +648,7 @@ static void __kfree_section_memmap(struct page *memmap)
        if (is_vmalloc_addr(memmap))
                vfree(memmap);
        else
-               free_pages((unsigned long)memmap,
+               free_pages(memmap,
                           get_order(sizeof(struct page) * PAGES_PER_SECTION));
 }
 
diff --git a/net/core/neighbour.c b/net/core/neighbour.c
index f18ae91..6eb5170 100644
--- a/net/core/neighbour.c
+++ b/net/core/neighbour.c
@@ -352,7 +352,7 @@ static void neigh_hash_free_rcu(struct rcu_head *head)
        if (size <= PAGE_SIZE)
                kfree(buckets);
        else
-               free_pages((unsigned long)buckets, get_order(size));
+               free_pages(buckets, get_order(size));
        kfree(nht);
 }
 
diff --git a/net/dccp/proto.c b/net/dccp/proto.c
index 41e6580..b689ca8 100644
--- a/net/dccp/proto.c
+++ b/net/dccp/proto.c
@@ -1211,11 +1211,11 @@ out_ackvec_exit:
 out_free_dccp_mib:
        dccp_mib_exit();
 out_free_dccp_bhash:
-       free_pages((unsigned long)dccp_hashinfo.bhash, bhash_order);
+       free_pages(dccp_hashinfo.bhash, bhash_order);
 out_free_dccp_locks:
        inet_ehash_locks_free(&dccp_hashinfo);
 out_free_dccp_ehash:
-       free_pages((unsigned long)dccp_hashinfo.ehash, ehash_order);
+       free_pages(dccp_hashinfo.ehash, ehash_order);
 out_free_bind_bucket_cachep:
        kmem_cache_destroy(dccp_hashinfo.bind_bucket_cachep);
 out_free_percpu:
@@ -1231,10 +1231,10 @@ static void __exit dccp_fini(void)
 {
        ccid_cleanup_builtins();
        dccp_mib_exit();
-       free_pages((unsigned long)dccp_hashinfo.bhash,
+       free_pages(dccp_hashinfo.bhash,
                   get_order(dccp_hashinfo.bhash_size *
                             sizeof(struct inet_bind_hashbucket)));
-       free_pages((unsigned long)dccp_hashinfo.ehash,
+       free_pages(dccp_hashinfo.ehash,
                   get_order((dccp_hashinfo.ehash_mask + 1) *
                             sizeof(struct inet_ehash_bucket)));
        inet_ehash_locks_free(&dccp_hashinfo);
diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c
index d97268e..f69b6d9 100644
--- a/net/ipv4/fib_semantics.c
+++ b/net/ipv4/fib_semantics.c
@@ -853,7 +853,7 @@ static void fib_info_hash_free(struct hlist_head *hash, int 
bytes)
        if (bytes <= PAGE_SIZE)
                kfree(hash);
        else
-               free_pages((unsigned long) hash, get_order(bytes));
+               free_pages(hash, get_order(bytes));
 }
 
 static void fib_info_hash_move(struct hlist_head *new_info_hash,
diff --git a/net/netfilter/nf_conntrack_core.c 
b/net/netfilter/nf_conntrack_core.c
index 3cb3cb8..5a80da65 100644
--- a/net/netfilter/nf_conntrack_core.c
+++ b/net/netfilter/nf_conntrack_core.c
@@ -1444,8 +1444,7 @@ void nf_ct_free_hashtable(void *hash, unsigned int size)
        if (is_vmalloc_addr(hash))
                vfree(hash);
        else
-               free_pages((unsigned long)hash,
-                          get_order(sizeof(struct hlist_head) * size));
+               free_pages(hash, get_order(sizeof(struct hlist_head) * size));
 }
 EXPORT_SYMBOL_GPL(nf_ct_free_hashtable);
 
diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
index 59651af..da6fba6 100644
--- a/net/netlink/af_netlink.c
+++ b/net/netlink/af_netlink.c
@@ -328,7 +328,7 @@ static void free_pg_vec(void **pg_vec, unsigned int order, 
unsigned int len)
                        if (is_vmalloc_addr(pg_vec[i]))
                                vfree(pg_vec[i]);
                        else
-                               free_pages((unsigned long)pg_vec[i], order);
+                               free_pages(pg_vec[i], order);
                }
        }
        kfree(pg_vec);
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
index 992396a..fae2812 100644
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
@@ -4000,8 +4000,7 @@ static void free_pg_vec(struct pgv *pg_vec, unsigned int 
order,
                        if (is_vmalloc_addr(pg_vec[i].buffer))
                                vfree(pg_vec[i].buffer);
                        else
-                               free_pages((unsigned long)pg_vec[i].buffer,
-                                          order);
+                               free_pages(pg_vec[i].buffer, order);
                        pg_vec[i].buffer = NULL;
                }
        }
diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c
index 7ec667d..1c9ff0b 100644
--- a/net/sched/sch_api.c
+++ b/net/sched/sch_api.c
@@ -645,7 +645,7 @@ static void qdisc_class_hash_free(struct hlist_head *h, 
unsigned int n)
        if (size <= PAGE_SIZE)
                kfree(h);
        else
-               free_pages((unsigned long)h, get_order(size));
+               free_pages(h, get_order(size));
 }
 
 void qdisc_class_hash_grow(struct Qdisc *sch, struct Qdisc_class_hash *clhash)
diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c
index 3d9ea9a..8dfdd0e 100644
--- a/net/sctp/protocol.c
+++ b/net/sctp/protocol.c
@@ -1514,13 +1514,13 @@ err_register_defaults:
        sctp_v4_pf_exit();
        sctp_v6_pf_exit();
        sctp_sysctl_unregister();
-       free_pages((unsigned long)sctp_port_hashtable,
+       free_pages(sctp_port_hashtable,
                   get_order(sctp_port_hashsize *
                             sizeof(struct sctp_bind_hashbucket)));
 err_bhash_alloc:
        kfree(sctp_ep_hashtable);
 err_ehash_alloc:
-       free_pages((unsigned long)sctp_assoc_hashtable,
+       free_pages(sctp_assoc_hashtable,
                   get_order(sctp_assoc_hashsize *
                             sizeof(struct sctp_hashbucket)));
 err_ahash_alloc:
@@ -1557,11 +1557,11 @@ static __exit void sctp_exit(void)
 
        sctp_sysctl_unregister();
 
-       free_pages((unsigned long)sctp_assoc_hashtable,
+       free_pages(sctp_assoc_hashtable,
                   get_order(sctp_assoc_hashsize *
                             sizeof(struct sctp_hashbucket)));
        kfree(sctp_ep_hashtable);
-       free_pages((unsigned long)sctp_port_hashtable,
+       free_pages(sctp_port_hashtable,
                   get_order(sctp_port_hashsize *
                             sizeof(struct sctp_bind_hashbucket)));
 
diff --git a/net/sctp/ssnmap.c b/net/sctp/ssnmap.c
index b9c8521..97b1939 100644
--- a/net/sctp/ssnmap.c
+++ b/net/sctp/ssnmap.c
@@ -75,7 +75,7 @@ fail_map:
        if (size <= KMALLOC_MAX_SIZE)
                kfree(retval);
        else
-               free_pages((unsigned long)retval, get_order(size));
+               free_pages(retval, get_order(size));
 fail:
        return NULL;
 }
@@ -119,7 +119,7 @@ void sctp_ssnmap_free(struct sctp_ssnmap *map)
        if (size <= KMALLOC_MAX_SIZE)
                kfree(map);
        else
-               free_pages((unsigned long)map, get_order(size));
+               free_pages(map, get_order(size));
 
        SCTP_DBG_OBJCNT_DEC(ssnmap);
 }
diff --git a/net/xfrm/xfrm_hash.c b/net/xfrm/xfrm_hash.c
index 1e98bc0..f19872e 100644
--- a/net/xfrm/xfrm_hash.c
+++ b/net/xfrm/xfrm_hash.c
@@ -35,5 +35,5 @@ void xfrm_hash_free(struct hlist_head *n, unsigned int sz)
        else if (hashdist)
                vfree(n);
        else
-               free_pages((unsigned long)n, get_order(sz));
+               free_pages(n, get_order(sz));
 }
diff --git a/security/integrity/ima/ima_crypto.c 
b/security/integrity/ima/ima_crypto.c
index 6eb6293..96f416c 100644
--- a/security/integrity/ima/ima_crypto.c
+++ b/security/integrity/ima/ima_crypto.c
@@ -165,7 +165,7 @@ static void ima_free_pages(void *ptr, size_t size)
 {
        if (!ptr)
                return;
-       free_pages((unsigned long)ptr, get_order(size));
+       free_pages(ptr, get_order(size));
 }
 
 static struct crypto_ahash *ima_alloc_atfm(enum hash_algo algo)
diff --git a/sound/core/memalloc.c b/sound/core/memalloc.c
index f05cb6a..43ac8b5 100644
--- a/sound/core/memalloc.c
+++ b/sound/core/memalloc.c
@@ -69,7 +69,7 @@ void snd_free_pages(void *ptr, size_t size)
        if (ptr == NULL)
                return;
        pg = get_order(size);
-       free_pages((unsigned long) ptr, pg);
+       free_pages(ptr, pg);
 }
 
 /*
diff --git a/sound/oss/dmabuf.c b/sound/oss/dmabuf.c
index e3f2913..457755a 100644
--- a/sound/oss/dmabuf.c
+++ b/sound/oss/dmabuf.c
@@ -141,7 +141,7 @@ static void sound_free_dmap(struct dma_buffparms *dmap)
                ClearPageReserved(page);
 
        dma_unmap_single(NULL, dmap->raw_buf_phys, dmap->buffsize, 
DMA_BIDIRECTIONAL);
-       free_pages((unsigned long) dmap->raw_buf, sz);
+       free_pages(dmap->raw_buf, sz);
        dmap->raw_buf = NULL;
 }
 
diff --git a/sound/usb/usx2y/usb_stream.c b/sound/usb/usx2y/usb_stream.c
index bf618e1..c423951 100644
--- a/sound/usb/usx2y/usb_stream.c
+++ b/sound/usb/usx2y/usb_stream.c
@@ -143,9 +143,9 @@ void usb_stream_free(struct usb_stream_kernel *sk)
        if (!s)
                return;
 
-       free_pages((unsigned long)sk->write_page, get_order(s->write_size));
+       free_pages(sk->write_page, get_order(s->write_size));
        sk->write_page = NULL;
-       free_pages((unsigned long)s, get_order(s->read_size));
+       free_pages(s, get_order(s->read_size));
        sk->s = NULL;
 }
 
-- 
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to