2014-06-10 07:38:13

by Zhouyi Zhou

[permalink] [raw]
Subject: [PATCH 1/1] perf/amd: NULL return of kzalloc_node should be handled


Signed-off-by: Zhouyi Zhou <[email protected]>
---
arch/x86/kernel/cpu/perf_event_amd_uncore.c | 32 +++++++++++++++------------
1 file changed, 18 insertions(+), 14 deletions(-)

diff --git a/arch/x86/kernel/cpu/perf_event_amd_uncore.c b/arch/x86/kernel/cpu/perf_event_amd_uncore.c
index 3bbdf4c..f60a50e 100644
--- a/arch/x86/kernel/cpu/perf_event_amd_uncore.c
+++ b/arch/x86/kernel/cpu/perf_event_amd_uncore.c
@@ -300,24 +300,28 @@ static void amd_uncore_cpu_up_prepare(unsigned int cpu)

if (amd_uncore_nb) {
uncore = amd_uncore_alloc(cpu);
- uncore->cpu = cpu;
- uncore->num_counters = NUM_COUNTERS_NB;
- uncore->rdpmc_base = RDPMC_BASE_NB;
- uncore->msr_base = MSR_F15H_NB_PERF_CTL;
- uncore->active_mask = &amd_nb_active_mask;
- uncore->pmu = &amd_nb_pmu;
- *per_cpu_ptr(amd_uncore_nb, cpu) = uncore;
+ if (uncore) {
+ uncore->cpu = cpu;
+ uncore->num_counters = NUM_COUNTERS_NB;
+ uncore->rdpmc_base = RDPMC_BASE_NB;
+ uncore->msr_base = MSR_F15H_NB_PERF_CTL;
+ uncore->active_mask = &amd_nb_active_mask;
+ uncore->pmu = &amd_nb_pmu;
+ *per_cpu_ptr(amd_uncore_nb, cpu) = uncore;
+ }
}

if (amd_uncore_l2) {
uncore = amd_uncore_alloc(cpu);
- uncore->cpu = cpu;
- uncore->num_counters = NUM_COUNTERS_L2;
- uncore->rdpmc_base = RDPMC_BASE_L2;
- uncore->msr_base = MSR_F16H_L2I_PERF_CTL;
- uncore->active_mask = &amd_l2_active_mask;
- uncore->pmu = &amd_l2_pmu;
- *per_cpu_ptr(amd_uncore_l2, cpu) = uncore;
+ if (uncore) {
+ uncore->cpu = cpu;
+ uncore->num_counters = NUM_COUNTERS_L2;
+ uncore->rdpmc_base = RDPMC_BASE_L2;
+ uncore->msr_base = MSR_F16H_L2I_PERF_CTL;
+ uncore->active_mask = &amd_l2_active_mask;
+ uncore->pmu = &amd_l2_pmu;
+ *per_cpu_ptr(amd_uncore_l2, cpu) = uncore;
+ }
}
}

--
1.7.10.4


2014-06-10 08:22:19

by Peter Zijlstra

[permalink] [raw]
Subject: Re: [PATCH 1/1] perf/amd: NULL return of kzalloc_node should be handled

On Tue, Jun 10, 2014 at 03:37:38PM +0800, Zhouyi Zhou wrote:

Less typing more thinking, this is wrong. You should fail when the
allocation fails.


Attachments:
(No filename) (147.00 B)
(No filename) (836.00 B)
Download all attachments

2014-06-10 08:45:49

by Zhouyi Zhou

[permalink] [raw]
Subject: Re: [PATCH 1/1] perf/amd: NULL return of kzalloc_node should be handled

Thanks Peter for reviewing, and sorry for not think it thoroughly
before submitting.
Is that ok that when amd_uncore_cpu_up_prepare is called from
amd_uncore_cpu_notifier
I return notifier_from_errno(-ENOMEM), and when
amd_uncore_cpu_up_prepare is called from
amd_uncore_init I immediately return -ENODEV?

On Tue, Jun 10, 2014 at 4:22 PM, Peter Zijlstra <[email protected]> wrote:
> On Tue, Jun 10, 2014 at 03:37:38PM +0800, Zhouyi Zhou wrote:
>
> Less typing more thinking, this is wrong. You should fail when the
> allocation fails.

2014-06-10 08:52:11

by Peter Zijlstra

[permalink] [raw]
Subject: Re: [PATCH 1/1] perf/amd: NULL return of kzalloc_node should be handled

On Tue, Jun 10, 2014 at 04:45:46PM +0800, Zhouyi Zhou wrote:
> Thanks Peter for reviewing, and sorry for not think it thoroughly
> before submitting.
> Is that ok that when amd_uncore_cpu_up_prepare is called from
> amd_uncore_cpu_notifier
> I return notifier_from_errno(-ENOMEM), and when
> amd_uncore_cpu_up_prepare is called from
> amd_uncore_init I immediately return -ENODEV?

That sounds about right. Thanks!


Attachments:
(No filename) (417.00 B)
(No filename) (836.00 B)
Download all attachments