]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - mm/huge_memory.c
Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/olof/tegra...
[mv-sheeva.git] / mm / huge_memory.c
index 5a595554bd8c842d930890fdf75168535fbec493..b3ffc21ce8010b9de9c92004e2a364326af8dc1b 100644 (file)
@@ -1228,9 +1228,7 @@ static int __split_huge_page_splitting(struct page *page,
 static void __split_huge_page_refcount(struct page *page)
 {
        int i;
-       unsigned long head_index = page->index;
        struct zone *zone = page_zone(page);
-       int zonestat;
        int tail_count = 0;
 
        /* prevent PageLRU to go away from under us, and freeze lru stats */
@@ -1239,7 +1237,7 @@ static void __split_huge_page_refcount(struct page *page)
        /* complete memcg works before add pages to LRU */
        mem_cgroup_split_huge_fixup(page);
 
-       for (i = 1; i < HPAGE_PMD_NR; i++) {
+       for (i = HPAGE_PMD_NR - 1; i >= 1; i--) {
                struct page *page_tail = page + i;
 
                /* tail_page->_mapcount cannot change */
@@ -1302,7 +1300,7 @@ static void __split_huge_page_refcount(struct page *page)
                BUG_ON(page_tail->mapping);
                page_tail->mapping = page->mapping;
 
-               page_tail->index = ++head_index;
+               page_tail->index = page->index + i;
 
                BUG_ON(!PageAnon(page_tail));
                BUG_ON(!PageUptodate(page_tail));
@@ -1318,15 +1316,6 @@ static void __split_huge_page_refcount(struct page *page)
        __dec_zone_page_state(page, NR_ANON_TRANSPARENT_HUGEPAGES);
        __mod_zone_page_state(zone, NR_ANON_PAGES, HPAGE_PMD_NR);
 
-       /*
-        * A hugepage counts for HPAGE_PMD_NR pages on the LRU statistics,
-        * so adjust those appropriately if this page is on the LRU.
-        */
-       if (PageLRU(page)) {
-               zonestat = NR_LRU_BASE + page_lru(page);
-               __mod_zone_page_state(zone, zonestat, -(HPAGE_PMD_NR-1));
-       }
-
        ClearPageCompound(page);
        compound_unlock(page);
        spin_unlock_irq(&zone->lru_lock);