linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Glauber Costa <glommer@parallels.com>
To: Christoph Lameter <cl@linux.com>
Cc: Pekka Enberg <penberg@kernel.org>, Joonsoo Kim <js1304@gmail.com>,
	linux-mm@kvack.org, David Rientjes <rientjes@google.com>
Subject: Re: C13 [07/14] Move freeing of kmem_cache structure to common code
Date: Mon, 3 Sep 2012 18:51:11 +0400	[thread overview]
Message-ID: <5044C3DF.6090009@parallels.com> (raw)
In-Reply-To: <000001395967d655-21142922-91ec-41da-ba80-c050d3230f44-000000@email.amazonses.com>

On 08/24/2012 08:12 PM, Christoph Lameter wrote:
> The freeing action is basically the same in all slab allocators.
> Move to the common kmem_cache_destroy() function.
> 
> Reviewed-by: Joonsoo Kim <js1304@gmail.com>
> Signed-off-by: Christoph Lameter <cl@linux.com>

For slab & slub, it seems trivial. Then:

Reviewed-by: Glauber Costa <glommer@parallels.com>

I should point out that the code movement in the slob is not equivalent.
First, we'll not be always calling kmemleak_free(). We'll only do it
when SLAB_NOLEAKTRACE is not set. This actually seem even safer than
before, but it is worth mentioning.

Also, we'll be freeing here under a rcu call, which didn't happen
before. To my eyes, this seems that it will only potentially take more
time to complete, without any context problems. But slob reviewers are
appreciated.

> ---
>  mm/slab.c        |    1 -
>  mm/slab_common.c |    1 +
>  mm/slob.c        |    2 --
>  mm/slub.c        |    2 --
>  4 files changed, 1 insertion(+), 5 deletions(-)
> 
> diff --git a/mm/slab.c b/mm/slab.c
> index 6365632..814cfc9 100644
> --- a/mm/slab.c
> +++ b/mm/slab.c
> @@ -2215,7 +2215,6 @@ void __kmem_cache_destroy(struct kmem_cache *cachep)
>  			kfree(l3);
>  		}
>  	}
> -	kmem_cache_free(kmem_cache, cachep);
>  }
>  
>  
> diff --git a/mm/slab_common.c b/mm/slab_common.c
> index 850c497..3e3c403 100644
> --- a/mm/slab_common.c
> +++ b/mm/slab_common.c
> @@ -154,6 +154,7 @@ void kmem_cache_destroy(struct kmem_cache *s)
>  				rcu_barrier();
>  
>  			__kmem_cache_destroy(s);
> +			kmem_cache_free(kmem_cache, s);
>  		} else {
>  			list_add(&s->list, &slab_caches);
>  			printk(KERN_ERR "kmem_cache_destroy %s: Slab cache still has objects\n",
> diff --git a/mm/slob.c b/mm/slob.c
> index 7d272c3..cb4ab96 100644
> --- a/mm/slob.c
> +++ b/mm/slob.c
> @@ -540,8 +540,6 @@ struct kmem_cache *__kmem_cache_create(const char *name, size_t size,
>  
>  void __kmem_cache_destroy(struct kmem_cache *c)
>  {
> -	kmemleak_free(c);
> -	slob_free(c, sizeof(struct kmem_cache));
>  }
>  
>  void *kmem_cache_alloc_node(struct kmem_cache *c, gfp_t flags, int node)
> diff --git a/mm/slub.c b/mm/slub.c
> index 607fee5..8da785a 100644
> --- a/mm/slub.c
> +++ b/mm/slub.c
> @@ -213,7 +213,6 @@ static inline int sysfs_slab_alias(struct kmem_cache *s, const char *p)
>  static inline void sysfs_slab_remove(struct kmem_cache *s)
>  {
>  	kfree(s->name);
> -	kmem_cache_free(kmem_cache, s);
>  }
>  
>  #endif
> @@ -5206,7 +5205,6 @@ static void kmem_cache_release(struct kobject *kobj)
>  	struct kmem_cache *s = to_slab(kobj);
>  
>  	kfree(s->name);
> -	kmem_cache_free(kmem_cache, s);
>  }
>  
>  static const struct sysfs_ops slab_sysfs_ops = {
> 

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2012-09-03 14:54 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20120824160903.168122683@linux.com>
2012-08-24 16:10 ` C13 [05/14] Extract a common function for kmem_cache_destroy Christoph Lameter
2012-09-03 14:41   ` Glauber Costa
2012-09-03 15:26   ` Glauber Costa
2012-09-04 22:58     ` Christoph Lameter
2012-08-24 16:12 ` C13 [07/14] Move freeing of kmem_cache structure to common code Christoph Lameter
2012-09-03 14:51   ` Glauber Costa [this message]
2012-08-24 16:12 ` C13 [08/14] Get rid of __kmem_cache_destroy Christoph Lameter
2012-09-03 14:58   ` Glauber Costa
2012-09-04 22:39     ` Christoph Lameter
2012-09-05  8:25       ` Glauber Costa
2012-08-24 16:17 ` C13 [12/14] Move kmem_cache allocations into common code Christoph Lameter
2012-09-03 15:24   ` Glauber Costa
2012-08-24 16:17 ` C13 [11/14] Move sysfs_slab_add to common Christoph Lameter
2012-09-03 15:09   ` Glauber Costa
2012-08-24 16:17 ` C13 [03/14] Improve error handling in kmem_cache_create Christoph Lameter
2012-09-03 14:30   ` Glauber Costa
2012-08-24 16:17 ` C13 [04/14] Move list_add() to slab_common.c Christoph Lameter
2012-08-24 16:17 ` C13 [06/14] Always use the name "kmem_cache" for the slab cache with the kmem_cache structure Christoph Lameter
2012-08-24 16:17 ` C13 [10/14] Do slab aliasing call from common code Christoph Lameter
2012-08-24 16:17 ` C13 [09/14] Move duping of slab name to slab_common.c Christoph Lameter
2012-09-03 15:02   ` Glauber Costa
2012-08-24 16:17 ` C13 [01/14] slub: Add debugging to verify correct cache use on kmem_cache_free() Christoph Lameter
2012-09-03 14:26   ` Glauber Costa
2012-08-24 16:17 ` C13 [14/14] Move kmem_cache refcounting to common code Christoph Lameter
2012-09-03 15:12   ` Glauber Costa
2012-09-04 19:10     ` Christoph Lameter
2012-08-24 16:17 ` C13 [02/14] slub: Use kmem_cache for the kmem_cache structure Christoph Lameter
2012-09-03 14:27   ` Glauber Costa
2012-08-24 16:17 ` C13 [13/14] Shrink __kmem_cache_create() parameter lists Christoph Lameter
2012-09-03 15:33   ` Glauber Costa
2012-09-03 15:35     ` Glauber Costa
2012-09-04 22:48       ` Christoph Lameter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5044C3DF.6090009@parallels.com \
    --to=glommer@parallels.com \
    --cc=cl@linux.com \
    --cc=js1304@gmail.com \
    --cc=linux-mm@kvack.org \
    --cc=penberg@kernel.org \
    --cc=rientjes@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox