Skip to content

Commit

Permalink
powerpc/mpic: Break cpumask abstraction earlier
Browse files Browse the repository at this point in the history
mpic_set_affinity is allocating and freeing a cpumask var even though
it was breaking the cpumask abstraction when passing the mask to
mpic_physmask.  It also didn't have any check for allocatin failure.

Break the cpumask abstraction earlier and use simple bitwise and of the
bits from the mask with the bits of cpu_online_mask.

Signed-off-by: Milton Miller <miltonm@bga.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
  • Loading branch information
Milton Miller authored and Benjamin Herrenschmidt committed May 19, 2011
1 parent ebc0421 commit 2a116f3
Showing 1 changed file with 3 additions and 7 deletions.
10 changes: 3 additions & 7 deletions arch/powerpc/sysdev/mpic.c
Original file line number Diff line number Diff line change
Expand Up @@ -821,16 +821,12 @@ int mpic_set_affinity(struct irq_data *d, const struct cpumask *cpumask,

mpic_irq_write(src, MPIC_INFO(IRQ_DESTINATION), 1 << cpuid);
} else {
cpumask_var_t tmp;
u32 mask = cpumask_bits(cpumask)[0];

alloc_cpumask_var(&tmp, GFP_KERNEL);

cpumask_and(tmp, cpumask, cpu_online_mask);
mask &= cpumask_bits(cpu_online_mask)[0];

mpic_irq_write(src, MPIC_INFO(IRQ_DESTINATION),
mpic_physmask(cpumask_bits(tmp)[0]));

free_cpumask_var(tmp);
mpic_physmask(mask));
}

return 0;
Expand Down

0 comments on commit 2a116f3

Please sign in to comment.