* Re: [PATCH] perf_counter/powerpc: Check oprofile_cpu_type for NULL before using it
[not found] <19066.48028.446975.501454@cargo.ozlabs.ibm.com>
@ 2009-08-06 11:55 ` Ingo Molnar
2009-08-06 11:57 ` [tip:perfcounters/urgent] " tip-bot for Benjamin Herrenschmidt
1 sibling, 0 replies; 2+ messages in thread
From: Ingo Molnar @ 2009-08-06 11:55 UTC (permalink / raw)
To: Paul Mackerras; +Cc: Peter Zijlstra, linux-kernel, benh
* Paul Mackerras <paulus@samba.org> wrote:
> From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
>
> If the current CPU doesn't support performance counters,
> cur_cpu_spec->oprofile_cpu_type can be NULL. The current perf_counter
> modules don't test for that case and would thus crash at boot time.
>
> Bug reported by David Woodhouse.
>
> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> Reported-by: David Woodhouse <dwmw2@infradead.org>
> Signed-off-by: Paul Mackerras <paulus@samba.org>
> ---
> Ingo, this needs to go in for .31 since it fixes a boot-time oops.
> Are you going to be sending a batch to Linus shortly or should I send
> this to him separately?
Yeah, wanted to send a batch of fixes later today - so i've queued
this one up too in perfcounters/urgent.
Thanks,
Ingo
^ permalink raw reply [flat|nested] 2+ messages in thread
* [tip:perfcounters/urgent] perf_counter/powerpc: Check oprofile_cpu_type for NULL before using it
[not found] <19066.48028.446975.501454@cargo.ozlabs.ibm.com>
2009-08-06 11:55 ` [PATCH] perf_counter/powerpc: Check oprofile_cpu_type for NULL before using it Ingo Molnar
@ 2009-08-06 11:57 ` tip-bot for Benjamin Herrenschmidt
1 sibling, 0 replies; 2+ messages in thread
From: tip-bot for Benjamin Herrenschmidt @ 2009-08-06 11:57 UTC (permalink / raw)
To: linux-tip-commits
Cc: linux-kernel, paulus, hpa, mingo, a.p.zijlstra, dwmw2, benh, tglx,
mingo
Commit-ID: e0d82a0a4e9841b787e6431ccfbb515546c55dc2
Gitweb: http://git.kernel.org/tip/e0d82a0a4e9841b787e6431ccfbb515546c55dc2
Author: Benjamin Herrenschmidt <benh@kernel.crashing.org>
AuthorDate: Thu, 6 Aug 2009 21:16:44 +1000
Committer: Ingo Molnar <mingo@elte.hu>
CommitDate: Thu, 6 Aug 2009 13:55:09 +0200
perf_counter/powerpc: Check oprofile_cpu_type for NULL before using it
If the current CPU doesn't support performance counters,
cur_cpu_spec->oprofile_cpu_type can be NULL. The current
perf_counter modules don't test for that case and would thus
crash at boot time.
Bug reported by David Woodhouse.
Reported-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Paul Mackerras <paulus@samba.org>
LKML-Reference: <19066.48028.446975.501454@cargo.ozlabs.ibm.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
arch/powerpc/kernel/mpc7450-pmu.c | 3 ++-
arch/powerpc/kernel/power4-pmu.c | 3 ++-
arch/powerpc/kernel/power5+-pmu.c | 5 +++--
arch/powerpc/kernel/power5-pmu.c | 3 ++-
arch/powerpc/kernel/power6-pmu.c | 3 ++-
arch/powerpc/kernel/power7-pmu.c | 3 ++-
arch/powerpc/kernel/ppc970-pmu.c | 5 +++--
7 files changed, 16 insertions(+), 9 deletions(-)
diff --git a/arch/powerpc/kernel/mpc7450-pmu.c b/arch/powerpc/kernel/mpc7450-pmu.c
index c244133..cc466d0 100644
--- a/arch/powerpc/kernel/mpc7450-pmu.c
+++ b/arch/powerpc/kernel/mpc7450-pmu.c
@@ -407,7 +407,8 @@ struct power_pmu mpc7450_pmu = {
static int init_mpc7450_pmu(void)
{
- if (strcmp(cur_cpu_spec->oprofile_cpu_type, "ppc/7450"))
+ if (!cur_cpu_spec->oprofile_cpu_type ||
+ strcmp(cur_cpu_spec->oprofile_cpu_type, "ppc/7450"))
return -ENODEV;
return register_power_pmu(&mpc7450_pmu);
diff --git a/arch/powerpc/kernel/power4-pmu.c b/arch/powerpc/kernel/power4-pmu.c
index db90b0c..3c90a3d 100644
--- a/arch/powerpc/kernel/power4-pmu.c
+++ b/arch/powerpc/kernel/power4-pmu.c
@@ -606,7 +606,8 @@ static struct power_pmu power4_pmu = {
static int init_power4_pmu(void)
{
- if (strcmp(cur_cpu_spec->oprofile_cpu_type, "ppc64/power4"))
+ if (!cur_cpu_spec->oprofile_cpu_type ||
+ strcmp(cur_cpu_spec->oprofile_cpu_type, "ppc64/power4"))
return -ENODEV;
return register_power_pmu(&power4_pmu);
diff --git a/arch/powerpc/kernel/power5+-pmu.c b/arch/powerpc/kernel/power5+-pmu.c
index f4adca8..31918af 100644
--- a/arch/powerpc/kernel/power5+-pmu.c
+++ b/arch/powerpc/kernel/power5+-pmu.c
@@ -678,8 +678,9 @@ static struct power_pmu power5p_pmu = {
static int init_power5p_pmu(void)
{
- if (strcmp(cur_cpu_spec->oprofile_cpu_type, "ppc64/power5+")
- && strcmp(cur_cpu_spec->oprofile_cpu_type, "ppc64/power5++"))
+ if (!cur_cpu_spec->oprofile_cpu_type ||
+ (strcmp(cur_cpu_spec->oprofile_cpu_type, "ppc64/power5+")
+ && strcmp(cur_cpu_spec->oprofile_cpu_type, "ppc64/power5++")))
return -ENODEV;
return register_power_pmu(&power5p_pmu);
diff --git a/arch/powerpc/kernel/power5-pmu.c b/arch/powerpc/kernel/power5-pmu.c
index 29b2c6c..867f6f6 100644
--- a/arch/powerpc/kernel/power5-pmu.c
+++ b/arch/powerpc/kernel/power5-pmu.c
@@ -618,7 +618,8 @@ static struct power_pmu power5_pmu = {
static int init_power5_pmu(void)
{
- if (strcmp(cur_cpu_spec->oprofile_cpu_type, "ppc64/power5"))
+ if (!cur_cpu_spec->oprofile_cpu_type ||
+ strcmp(cur_cpu_spec->oprofile_cpu_type, "ppc64/power5"))
return -ENODEV;
return register_power_pmu(&power5_pmu);
diff --git a/arch/powerpc/kernel/power6-pmu.c b/arch/powerpc/kernel/power6-pmu.c
index 09ae5bf..fa21890 100644
--- a/arch/powerpc/kernel/power6-pmu.c
+++ b/arch/powerpc/kernel/power6-pmu.c
@@ -537,7 +537,8 @@ static struct power_pmu power6_pmu = {
static int init_power6_pmu(void)
{
- if (strcmp(cur_cpu_spec->oprofile_cpu_type, "ppc64/power6"))
+ if (!cur_cpu_spec->oprofile_cpu_type ||
+ strcmp(cur_cpu_spec->oprofile_cpu_type, "ppc64/power6"))
return -ENODEV;
return register_power_pmu(&power6_pmu);
diff --git a/arch/powerpc/kernel/power7-pmu.c b/arch/powerpc/kernel/power7-pmu.c
index 5a9f5cb..388cf57 100644
--- a/arch/powerpc/kernel/power7-pmu.c
+++ b/arch/powerpc/kernel/power7-pmu.c
@@ -366,7 +366,8 @@ static struct power_pmu power7_pmu = {
static int init_power7_pmu(void)
{
- if (strcmp(cur_cpu_spec->oprofile_cpu_type, "ppc64/power7"))
+ if (!cur_cpu_spec->oprofile_cpu_type ||
+ strcmp(cur_cpu_spec->oprofile_cpu_type, "ppc64/power7"))
return -ENODEV;
return register_power_pmu(&power7_pmu);
diff --git a/arch/powerpc/kernel/ppc970-pmu.c b/arch/powerpc/kernel/ppc970-pmu.c
index 833097a..75dccb7 100644
--- a/arch/powerpc/kernel/ppc970-pmu.c
+++ b/arch/powerpc/kernel/ppc970-pmu.c
@@ -488,8 +488,9 @@ static struct power_pmu ppc970_pmu = {
static int init_ppc970_pmu(void)
{
- if (strcmp(cur_cpu_spec->oprofile_cpu_type, "ppc64/970")
- && strcmp(cur_cpu_spec->oprofile_cpu_type, "ppc64/970MP"))
+ if (!cur_cpu_spec->oprofile_cpu_type ||
+ (strcmp(cur_cpu_spec->oprofile_cpu_type, "ppc64/970")
+ && strcmp(cur_cpu_spec->oprofile_cpu_type, "ppc64/970MP")))
return -ENODEV;
return register_power_pmu(&ppc970_pmu);
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2009-08-06 11:58 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <19066.48028.446975.501454@cargo.ozlabs.ibm.com>
2009-08-06 11:55 ` [PATCH] perf_counter/powerpc: Check oprofile_cpu_type for NULL before using it Ingo Molnar
2009-08-06 11:57 ` [tip:perfcounters/urgent] " tip-bot for Benjamin Herrenschmidt
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.