nr_slab accounting fix
Subsystems (2)
PATCH 1/1 nr_slab accounting fix
Hi Andrew,
if alloc_slabmgmt fails, then kmem_freepages() calls sub_page_state(), altough nr_slab was not yet increased. The attached patch fixes that by moving the inc_page_state into kmem_getpages(). Could you add it to your next -mm kernel?
--
Manfred
// $Header$
// Kernel Version:
// VERSION = 2 // PATCHLEVEL = 6 // SUBLEVEL = 0 // EXTRAVERSION = -test11
mm/slab.c +1 -1
@@ -812,6 +812,7 @@int i = (1 << cachep->gfporder);struct page *page =virt_to_page (addr); +add_page_state (nr_slab, i);while (i--) {SetPageSlab (page); page++;
@@ -1608,7 +1609,6 @@do {SET_PAGE_CACHE (page, cachep);SET_PAGE_SLAB (page, slabp); -inc_page_state (nr_slab); page++; }while (--i);
include/linux/page-flags.h +1 -0
@@ -133,6 +133,7 @@#define inc_page_state (member) mod_page_state(member, 1UL)#define dec_page_state (member) mod_page_state(member, 0UL - 1) +#define add_page_state (member,delta) mod_page_state(member, (delta))#define sub_page_state (member,delta) mod_page_state(member, 0UL - (delta))