Subject: [PATCH 0/3] stop OProfile calling arch_exit when arch_init fails

From: [email-masked] (Robert Richter)
Date: Tue, 31 Aug 2010 13:01:52 +0200

On 29.08.10 14:51:58, Will Deacon wrote:
> These patches remove the oprofile_arch_exit call from oprofile_init,
> allowing architectures that perform memory allocation in their init
> functions to be simplified. This requires some changes to the ARM and
> x86 OProfile backends to ensure that their init functions clean up
> after themselves if they fail.
> 
> This is required for Matt's combined OProfile/Perf driver which will
> be shared between all architectures.
> 
> Patches taken against tip/master.
> 
> Cc: Robert Richter <[email-masked]>
> Cc: Matt Fleming <[email-masked]>
> Cc: Peter Zijlstra <[email-masked]>
> Cc: Ingo Molnar <[email-masked]>
> 
> Will Deacon (3):
>   oprofile: don't call arch exit code from init code on failure
>   ARM: oprofile: fix and simplify init/exit functions
>   x86: oprofile: fix oprofile_arch_init behaviour on failure
> 
>  arch/arm/oprofile/common.c |   47 +++++++++++++++++++++++--------------------
>  arch/x86/oprofile/init.c   |   26 ++++++++++++++----------
>  drivers/oprofile/oprof.c   |   11 +--------
>  3 files changed, 42 insertions(+), 42 deletions(-)

I have applied patch #1 and #2 to

 git://git.kernel.org/pub/scm/linux/kernel/git/rric/oprofile.git core

with some small modifications:

Patch #1: Commit message, x86 removed.
Patch #2: Order of freeing memory:

+out:
+       if (ret) {
+               for_each_possible_cpu(cpu)
+                       kfree(perf_events[cpu]);
+               kfree(counter_config);
+       }
+

There is also the patch below on top of it.

Thanks Will,

-Robert

--