Re: [PATCH 1/2] perf_event: Fix incorrect range check on cpu number

From: Corey Ashford
Date: Tue Dec 15 2009 - 14:15:58 EST


Ingo Molnar wrote:
* Corey Ashford <cjashfor@xxxxxxxxxxxxxxxxxx> wrote:

Paul Mackerras wrote:
On Tue, Dec 15, 2009 at 11:31:32AM +0100, Peter Zijlstra wrote:

On Tue, 2009-12-15 at 19:40 +1100, Paul Mackerras wrote:
It is quite legitimate for CPUs to be numbered sparsely, meaning that
it possible for an online CPU to have a number which is greater than
the total count of possible CPUs.

Currently find_get_context() has a sanity check on the cpu number
where it checks it against num_possible_cpus(). This test can fail
for a legitimate cpu number if the cpu_possible_mask is sparsely
populated.

This fixes the problem by checking the CPU number against
nr_cpumask_bits instead, since that is the appropriate check to ensure
that the cpu number is same to pass to cpu_isset() subsequently.
Cute, do you actually have hardware that does this?
Yeah, Mikey ran across this on a POWER7 box here.
Does the perf tool need to be fixed too? The "perf stat" tool, at
least, has a "-a" switch that tells the tool to count the event on
all cpus, and it does this by iterating over the number of cpus,
0..n, assuming they are all contiguous.

Yes, see patch 2/2 of this series.

Ingo

Oops! missed that. Thanks!

- Corey


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/