diff options
Diffstat (limited to 'mm/slab.c')
-rw-r--r-- | mm/slab.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -1507,7 +1507,7 @@ static void *kmem_getpages(struct kmem_cache *cachep, gfp_t flags, int nodeid) | |||
1507 | nr_pages = (1 << cachep->gfporder); | 1507 | nr_pages = (1 << cachep->gfporder); |
1508 | if (cachep->flags & SLAB_RECLAIM_ACCOUNT) | 1508 | if (cachep->flags & SLAB_RECLAIM_ACCOUNT) |
1509 | atomic_add(nr_pages, &slab_reclaim_pages); | 1509 | atomic_add(nr_pages, &slab_reclaim_pages); |
1510 | add_page_state(nr_slab, nr_pages); | 1510 | add_zone_page_state(page_zone(page), NR_SLAB, nr_pages); |
1511 | for (i = 0; i < nr_pages; i++) | 1511 | for (i = 0; i < nr_pages; i++) |
1512 | __SetPageSlab(page + i); | 1512 | __SetPageSlab(page + i); |
1513 | return page_address(page); | 1513 | return page_address(page); |
@@ -1522,12 +1522,12 @@ static void kmem_freepages(struct kmem_cache *cachep, void *addr) | |||
1522 | struct page *page = virt_to_page(addr); | 1522 | struct page *page = virt_to_page(addr); |
1523 | const unsigned long nr_freed = i; | 1523 | const unsigned long nr_freed = i; |
1524 | 1524 | ||
1525 | sub_zone_page_state(page_zone(page), NR_SLAB, nr_freed); | ||
1525 | while (i--) { | 1526 | while (i--) { |
1526 | BUG_ON(!PageSlab(page)); | 1527 | BUG_ON(!PageSlab(page)); |
1527 | __ClearPageSlab(page); | 1528 | __ClearPageSlab(page); |
1528 | page++; | 1529 | page++; |
1529 | } | 1530 | } |
1530 | sub_page_state(nr_slab, nr_freed); | ||
1531 | if (current->reclaim_state) | 1531 | if (current->reclaim_state) |
1532 | current->reclaim_state->reclaimed_slab += nr_freed; | 1532 | current->reclaim_state->reclaimed_slab += nr_freed; |
1533 | free_pages((unsigned long)addr, cachep->gfporder); | 1533 | free_pages((unsigned long)addr, cachep->gfporder); |