I just had a look at patch-3.7.2-rc1, and this change doesn't appear to have made it in yet. Am I missing something? -Paul On Tue, Dec 25, 2012 at 7:30 AM, JoonSoo Kim wrote: > 2012/12/26 Joonsoo Kim : > > commit cce89f4f6911286500cf7be0363f46c9b0a12ce0('Move kmem_cache > > refcounting to common code') moves some refcount manipulation code to > > common code. Unfortunately, it also removed refcount assignment for > > kmalloc_caches. So, kmalloc_caches's refcount is initially 0. > > This makes errornous situation. > > > > Paul Hargrove report that when he create a 8-byte kmem_cache and > > destory it, he encounter below message. > > 'Objects remaining in kmalloc-8 on kmem_cache_close()' > > > > 8-byte kmem_cache merge with 8-byte kmalloc cache and refcount is > > increased by one. So, resulting refcount is 1. When destory it, it hit > > refcount = 0, then kmem_cache_close() is executed and error message is > > printed. > > > > This patch assign initial refcount 1 to kmalloc_caches, so fix this > > errornous situtation. > > > > Cc: # v3.7 > > Cc: Christoph Lameter > > Reported-by: Paul Hargrove > > Signed-off-by: Joonsoo Kim > > > > diff --git a/mm/slub.c b/mm/slub.c > > index a0d6984..321afab 100644 > > --- a/mm/slub.c > > +++ b/mm/slub.c > > @@ -3279,6 +3279,7 @@ static struct kmem_cache *__init > create_kmalloc_cache(const char *name, > > if (kmem_cache_open(s, flags)) > > goto panic; > > > > + s->refcount = 1; > > list_add(&s->list, &slab_caches); > > return s; > > > > -- > > 1.7.9.5 > > > > I missed some explanation. > In v3.8-rc1, this problem is already solved. > See create_kmalloc_cache() in mm/slab_common.c. > So this patch is just for v3.7 stable. > -- Paul H. Hargrove PHHargrove@lbl.gov Future Technologies Group Computer and Data Sciences Department Tel: +1-510-495-2352 Lawrence Berkeley National Laboratory Fax: +1-510-486-6900