diff options
author | Yinghai Lu <yinghai@kernel.org> | 2009-03-30 23:37:20 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-04-03 13:14:44 -0400 |
commit | 9756b15e1b58453a6fd54b85c1ad8515209e10bb (patch) | |
tree | 1b6ba55e845bbd07460c0c4e061641564b9a69b2 /include | |
parent | 8fe74cf053de7ad2124a894996f84fa890a81093 (diff) |
irq: fix cpumask memory leak on offstack cpumask kernels
Need to free the old cpumask for affinity and pending_mask.
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Acked-by: Rusty Russell <rusty@rustcorp.com.au>
LKML-Reference: <49D18FF0.50707@kernel.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/irq.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/include/linux/irq.h b/include/linux/irq.h index 974890b3c52f..99d147efe399 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h | |||
@@ -482,6 +482,16 @@ static inline void init_copy_desc_masks(struct irq_desc *old_desc, | |||
482 | #endif | 482 | #endif |
483 | } | 483 | } |
484 | 484 | ||
485 | static inline void free_desc_masks(struct irq_desc *old_desc, | ||
486 | struct irq_desc *new_desc) | ||
487 | { | ||
488 | free_cpumask_var(old_desc->affinity); | ||
489 | |||
490 | #ifdef CONFIG_GENERIC_PENDING_IRQ | ||
491 | free_cpumask_var(old_desc->pending_mask); | ||
492 | #endif | ||
493 | } | ||
494 | |||
485 | #else /* !CONFIG_SMP */ | 495 | #else /* !CONFIG_SMP */ |
486 | 496 | ||
487 | static inline bool init_alloc_desc_masks(struct irq_desc *desc, int cpu, | 497 | static inline bool init_alloc_desc_masks(struct irq_desc *desc, int cpu, |
@@ -495,6 +505,10 @@ static inline void init_copy_desc_masks(struct irq_desc *old_desc, | |||
495 | { | 505 | { |
496 | } | 506 | } |
497 | 507 | ||
508 | static inline void free_desc_masks(struct irq_desc *old_desc, | ||
509 | struct irq_desc *new_desc) | ||
510 | { | ||
511 | } | ||
498 | #endif /* CONFIG_SMP */ | 512 | #endif /* CONFIG_SMP */ |
499 | 513 | ||
500 | #endif /* _LINUX_IRQ_H */ | 514 | #endif /* _LINUX_IRQ_H */ |