From: mingo@elte.hu (Ingo Molnar)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] oprofile, x86: fix init_sysfs error handling
Date: Wed, 1 Sep 2010 11:51:17 +0200 [thread overview]
Message-ID: <20100901095117.GA4246@elte.hu> (raw)
In-Reply-To: <20100831103001.GC22783@erda.amd.com>
* Robert Richter <robert.richter@amd.com> wrote:
> On 31.08.10 05:31:29, Will Deacon wrote:
> > > For x86 wont change the code (actually I found a bug in the init_sysfs
> > > error handler for which I will send a fix). Just wanted to get your
> > > confirmation in case I was missing something that x86 is not affected.
> > > I will apply the first 2 patches, no need to resubmit.
>
> This is the patch, applied to:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/rric/oprofile.git urgent
>
> -Robert
>
> --
>
> >From 10f0412f57f2a76a90eff4376f59cbb0a39e4e18 Mon Sep 17 00:00:00 2001
> From: Robert Richter <robert.richter@amd.com>
> Date: Mon, 30 Aug 2010 10:56:18 +0200
> Subject: [PATCH] oprofile, x86: fix init_sysfs error handling
>
> On failure init_sysfs() might not properly free resources. The error
> code of the function is not checked. And, when reinitializing the exit
> function might be called twice. This patch fixes all this.
>
> Cc: stable at kernel.org
> Signed-off-by: Robert Richter <robert.richter@amd.com>
> ---
> arch/x86/oprofile/nmi_int.c | 16 +++++++++++++---
> 1 files changed, 13 insertions(+), 3 deletions(-)
>
> diff --git a/arch/x86/oprofile/nmi_int.c b/arch/x86/oprofile/nmi_int.c
> index f6b48f6..73a41d3 100644
> --- a/arch/x86/oprofile/nmi_int.c
> +++ b/arch/x86/oprofile/nmi_int.c
> @@ -568,8 +568,13 @@ static int __init init_sysfs(void)
> int error;
>
> error = sysdev_class_register(&oprofile_sysclass);
> - if (!error)
> - error = sysdev_register(&device_oprofile);
> + if (error)
> + return error;
> +
> + error = sysdev_register(&device_oprofile);
> + if (error)
> + sysdev_class_unregister(&oprofile_sysclass);
> +
> return error;
> }
>
> @@ -695,6 +700,8 @@ int __init op_nmi_init(struct oprofile_operations *ops)
> char *cpu_type = NULL;
> int ret = 0;
>
> + using_nmi = 0;
> +
> if (!cpu_has_apic)
> return -ENODEV;
>
> @@ -774,7 +781,10 @@ int __init op_nmi_init(struct oprofile_operations *ops)
>
> mux_init(ops);
>
> - init_sysfs();
> + ret = init_sysfs();
FYI, this causes a build error if CONFIG_PM is off:
arch/x86/oprofile/nmi_int.c:784: error: expected expression before ?do?
Due to this assymetric form of the wrapper:
#define init_sysfs() do { } while (0)
The wrapper should be changed to return 0 i suspect, via something like
this:
static inline int init_sysfs(void) { return 0; }
(untested)
Thanks,
Ingo
WARNING: multiple messages have this Message-ID (diff)
From: Ingo Molnar <mingo@elte.hu>
To: Robert Richter <robert.richter@amd.com>
Cc: Will Deacon <will.deacon@arm.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
Matt Fleming <matt@console-pimps.org>,
Peter Zijlstra <peterz@infradead.org>
Subject: Re: [PATCH] oprofile, x86: fix init_sysfs error handling
Date: Wed, 1 Sep 2010 11:51:17 +0200 [thread overview]
Message-ID: <20100901095117.GA4246@elte.hu> (raw)
In-Reply-To: <20100831103001.GC22783@erda.amd.com>
* Robert Richter <robert.richter@amd.com> wrote:
> On 31.08.10 05:31:29, Will Deacon wrote:
> > > For x86 wont change the code (actually I found a bug in the init_sysfs
> > > error handler for which I will send a fix). Just wanted to get your
> > > confirmation in case I was missing something that x86 is not affected.
> > > I will apply the first 2 patches, no need to resubmit.
>
> This is the patch, applied to:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/rric/oprofile.git urgent
>
> -Robert
>
> --
>
> >From 10f0412f57f2a76a90eff4376f59cbb0a39e4e18 Mon Sep 17 00:00:00 2001
> From: Robert Richter <robert.richter@amd.com>
> Date: Mon, 30 Aug 2010 10:56:18 +0200
> Subject: [PATCH] oprofile, x86: fix init_sysfs error handling
>
> On failure init_sysfs() might not properly free resources. The error
> code of the function is not checked. And, when reinitializing the exit
> function might be called twice. This patch fixes all this.
>
> Cc: stable@kernel.org
> Signed-off-by: Robert Richter <robert.richter@amd.com>
> ---
> arch/x86/oprofile/nmi_int.c | 16 +++++++++++++---
> 1 files changed, 13 insertions(+), 3 deletions(-)
>
> diff --git a/arch/x86/oprofile/nmi_int.c b/arch/x86/oprofile/nmi_int.c
> index f6b48f6..73a41d3 100644
> --- a/arch/x86/oprofile/nmi_int.c
> +++ b/arch/x86/oprofile/nmi_int.c
> @@ -568,8 +568,13 @@ static int __init init_sysfs(void)
> int error;
>
> error = sysdev_class_register(&oprofile_sysclass);
> - if (!error)
> - error = sysdev_register(&device_oprofile);
> + if (error)
> + return error;
> +
> + error = sysdev_register(&device_oprofile);
> + if (error)
> + sysdev_class_unregister(&oprofile_sysclass);
> +
> return error;
> }
>
> @@ -695,6 +700,8 @@ int __init op_nmi_init(struct oprofile_operations *ops)
> char *cpu_type = NULL;
> int ret = 0;
>
> + using_nmi = 0;
> +
> if (!cpu_has_apic)
> return -ENODEV;
>
> @@ -774,7 +781,10 @@ int __init op_nmi_init(struct oprofile_operations *ops)
>
> mux_init(ops);
>
> - init_sysfs();
> + ret = init_sysfs();
FYI, this causes a build error if CONFIG_PM is off:
arch/x86/oprofile/nmi_int.c:784: error: expected expression before ‘do’
Due to this assymetric form of the wrapper:
#define init_sysfs() do { } while (0)
The wrapper should be changed to return 0 i suspect, via something like
this:
static inline int init_sysfs(void) { return 0; }
(untested)
Thanks,
Ingo
next prev parent reply other threads:[~2010-09-01 9:51 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-29 18:51 [PATCH 0/3] stop OProfile calling arch_exit when arch_init fails Will Deacon
2010-08-29 18:51 ` Will Deacon
2010-08-29 18:51 ` [PATCH 1/3] oprofile: don't call arch exit code from init code on failure Will Deacon
2010-08-29 18:51 ` Will Deacon
2010-08-29 18:52 ` [PATCH 2/3] ARM: oprofile: fix and simplify init/exit functions Will Deacon
2010-08-29 18:52 ` Will Deacon
2010-08-29 18:52 ` [PATCH 3/3] x86: oprofile: fix oprofile_arch_init behaviour on failure Will Deacon
2010-08-29 18:52 ` Will Deacon
2010-08-30 9:09 ` Robert Richter
2010-08-30 9:09 ` Robert Richter
2010-08-31 8:54 ` Will Deacon
2010-08-31 8:54 ` Will Deacon
2010-08-31 9:05 ` Robert Richter
2010-08-31 9:05 ` Robert Richter
2010-08-31 9:31 ` Will Deacon
2010-08-31 9:31 ` Will Deacon
2010-08-31 9:47 ` Robert Richter
2010-08-31 9:47 ` Robert Richter
2010-08-31 10:30 ` [PATCH] oprofile, x86: fix init_sysfs error handling Robert Richter
2010-08-31 10:30 ` Robert Richter
2010-09-01 9:51 ` Ingo Molnar [this message]
2010-09-01 9:51 ` Ingo Molnar
2010-09-01 13:07 ` Robert Richter
2010-09-01 13:07 ` Robert Richter
2010-08-31 11:01 ` [PATCH 0/3] stop OProfile calling arch_exit when arch_init fails Robert Richter
2010-08-31 11:01 ` Robert Richter
-- strict thread matches above, loose matches on Subject: below --
2010-08-30 8:56 [PATCH] oprofile, x86: fix init_sysfs error handling Robert Richter
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=20100901095117.GA4246@elte.hu \
--to=mingo@elte.hu \
--cc=linux-arm-kernel@lists.infradead.org \
/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.