All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gautham R Shenoy <ego@in.ibm.com>
To: Akinobu Mita <akinobu.mita@gmail.com>
Cc: linux-kernel@vger.kernel.org,
	Rusty Russell <rusty@rustcorp.com.au>,
	Greg Kroah-Hartman <gregkh@suse.de>,
	Dmitriy Zavin <dmitriyz@google.com>,
	"H. Peter Anvin" <hpa@zytor.com>,
	Andi Kleen <andi@firstfloor.org>, Ashok Raj <ashok.raj@intel.com>,
	Srivatsa Vaddagiri <vatsa@in.ibm.com>,
	heiko.carstens@de.ibm.com, kiran@scalex86.org, clameter@sgi.com,
	Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH 4/10] cpu: deliver CPU_UP_CANCELED only to NOTIFY_OKed callbacks with CPU_UP_PREPARE
Date: Wed, 18 Jul 2007 12:24:04 +0530	[thread overview]
Message-ID: <20070718065404.GA1982@in.ibm.com> (raw)
In-Reply-To: <961aa3350707171018i58a47b7asb4a92e1bcd146adf@mail.gmail.com>

Hi!
On Wed, Jul 18, 2007 at 02:18:41AM +0900, Akinobu Mita wrote:
> >> So it is natural to deliver CPU_UP_CANCELED event only to the functions
> >> that have returned NOTIFY_OK with CPU_UP_PREPARE event and not to call
> >> the function that have returned NOTIFY_BAD. This is what this patch is 
> >doing.
> >
> >Yes, this makes sense.
> 
> Thank you for making sure of it.
> 
> >[...] However, it might break slab.
> >If I am not mistaken, slab code initializes multiple objects in
> >CPU_UP_PREPARE and relies on the CPU_UP_CANCELLED to destroy the
> >objects which successfully got initialized before the some object's
> >initialization went bad.
> 
> My testing machine is ordinary dual core non numa box. So it might not
> trigger the problem that you are warried about under heavy slab alloc
> failure injection.
> 
> At first glance I couln't find the problem in cpu hottplug code in slab.c 
> yet,
> but found some memory leak path. (it doesn't break slab though)

That's what I meant. I shouldn't have used the word "break" :-)
In case of slab, freeing up of resources on an error during CPU_UP_PREPARE,
is currently handled in CPU_UP_CANCELLED.

But, like you reasoned out, it makes more sense for such a subsystem
to free up all the correctly allocated resources before sending a
NOTIFY_BAD, rather than handling it in CPU_UP_CANCELLED. And slab 
needed that fix, which you've provided, before we send the notification
to (nr_calls - 1) callers.

So could you add this patch to series? 

Thanks and Regards
gautham.
> 
> Index: 2.6-git/mm/slab.c
> ===================================================================
> --- 2.6-git.orig/mm/slab.c
> +++ 2.6-git/mm/slab.c
> @@ -1221,13 +1221,18 @@ static int __cpuinit cpuup_callback(stru
> 				shared = alloc_arraycache(node,
> 					cachep->shared * cachep->batchcount,
> 					0xbaadf00d);
> -				if (!shared)
> +				if (!shared) {
> +					kfree(nc);
> 					goto bad;
> +				}
> 			}
> 			if (use_alien_caches) {
>                                 alien = alloc_alien_cache(node, 
>                                 cachep->limit);
> -                                if (!alien)
> -                                        goto bad;
> +                                if (!alien) {
> +					kfree(shared);
> +					kfree(nc);
> +					goto bad;
> +				}
>                         }
> 			cachep->array[cpu] = nc;
> 			l3 = cachep->nodelists[node];

-- 
Gautham R Shenoy
Linux Technology Center
IBM India.
"Freedom comes with a price tag of responsibility, which is still a bargain,
because Freedom is priceless!"

  reply	other threads:[~2007-07-18  6:54 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-16 13:48 [PATCH 0/10] CPU hotplug error handling fixes Akinobu Mita
2007-07-16 13:50 ` [PATCH 1/10] sysfs: fix kmem_cache_free(NULL) Akinobu Mita
2007-07-16 15:43   ` Greg KH
2007-07-16 16:53     ` Akinobu Mita
2007-07-17  7:04       ` Pekka J Enberg
2007-07-16 13:51 ` [PATCH 2/10] sysdev: add error check in sysdev_register() Akinobu Mita
2007-07-16 15:12   ` Cornelia Huck
2007-07-16 16:18     ` Akinobu Mita
2007-07-16 13:52 ` [PATCH 3/10] sysfs: fix error handling in create_files() Akinobu Mita
2007-07-16 15:29   ` Cornelia Huck
2007-07-16 16:28     ` Akinobu Mita
2007-07-16 16:29     ` Greg KH
2007-07-17 16:22       ` Akinobu Mita
2007-07-16 13:53 ` [PATCH 4/10] cpu: deliver CPU_UP_CANCELED only to NOTIFY_OKed callbacks with CPU_UP_PREPARE Akinobu Mita
2007-07-17  8:23   ` Gautham R Shenoy
2007-07-17 17:18     ` Akinobu Mita
2007-07-18  6:54       ` Gautham R Shenoy [this message]
2007-07-18 16:28         ` Akinobu Mita
2007-07-16 13:54 ` [PATCH 5/10] topology: remove topology_dev_map Akinobu Mita
2007-07-16 13:57 ` [PATCH 6/10] thermal_throttle: fix cpu hotplug error handling Akinobu Mita
2007-07-16 13:58 ` [PATCH 7/10] msr: " Akinobu Mita
2007-07-16 13:58 ` [PATCH 8/10] cpuid: " Akinobu Mita
2007-07-16 14:00 ` [PATCH 9/10] mce: " Akinobu Mita
2007-07-16 14:01 ` [PATCH 10/10] intel_cacheinfo: " Akinobu Mita

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=20070718065404.GA1982@in.ibm.com \
    --to=ego@in.ibm.com \
    --cc=akinobu.mita@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=andi@firstfloor.org \
    --cc=ashok.raj@intel.com \
    --cc=clameter@sgi.com \
    --cc=dmitriyz@google.com \
    --cc=gregkh@suse.de \
    --cc=heiko.carstens@de.ibm.com \
    --cc=hpa@zytor.com \
    --cc=kiran@scalex86.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rusty@rustcorp.com.au \
    --cc=vatsa@in.ibm.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.