linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / arch / sh / mm / consistent.c
index ee73e30..df3a9e4 100644 (file)
@@ -23,7 +23,6 @@ void *consistent_alloc(gfp_t gfp, size_t size, dma_addr_t *handle)
        page = alloc_pages(gfp, order);
        if (!page)
                return NULL;
-       split_page(page, order);
 
        ret = page_address(page);
        *handle = virt_to_phys(ret);
@@ -38,6 +37,8 @@ void *consistent_alloc(gfp_t gfp, size_t size, dma_addr_t *handle)
        end  = page + (1 << order);
 
        while (++page < end) {
+               set_page_count(page, 1);
+
                /* Free any unused pages */
                if (page >= free) {
                        __free_page(page);