Messages in this thread | | | Date | Tue, 28 Sep 2010 23:35:51 +0200 (CEST) | From | Thomas Gleixner <> | Subject | Re: Fwd: [PATCH] x86: Plug memory leak in sparse irq |
| |
On Tue, 28 Sep 2010, Yinghai Lu wrote: > > From: Thomas Gleixner <tglx@linutronix.de> > > Date: Tue, Sep 28, 2010 at 11:57 AM > > Subject: [PATCH] x86: Plug memory leak in sparse irq > > To: LKML <linux-kernel@vger.kernel.org> > > Cc: x86@kernel.org, Yinghai Lu <yhlu.kernel@gmail.com> > > > > > > free_irq_cfg() is not freeing the cpumask_vars in irq_cfg. > > > > Signed-off-by: Thomas Gleixner <tglx@linutronix.de> > > Cc: stable@kernel.org > > --- > > arch/x86/kernel/apic/io_apic.c | 6 ++++-- > > 1 file changed, 4 insertions(+), 2 deletions(-) > > > > Index: linux-2.6/arch/x86/kernel/apic/io_apic.c > > =================================================================== > > --- linux-2.6.orig/arch/x86/kernel/apic/io_apic.c > > +++ linux-2.6/arch/x86/kernel/apic/io_apic.c > > @@ -311,9 +311,11 @@ void arch_init_copy_chip_data(struct irq > > init_copy_irq_2_pin(old_cfg, cfg, node); > > } > > > > -static void free_irq_cfg(struct irq_cfg *old_cfg) > > +static void free_irq_cfg(struct irq_cfg *cfg) > > { > > - kfree(old_cfg); > > + free_cpumask_var(cfg->domain); > > + free_cpumask_var(cfg->old_domain); > > + kfree(cfg); > > } > > > > void arch_free_chip_data(struct irq_desc *old_desc, struct irq_desc *desc) > > yes. still need
Was about to send that out next.
> [PATCH] x86: copy cpumask while copying chip_data for offstack cpumask > > While looking Thomas's > | x86: Plug memory leak in sparse irq > > found copy_chip_data() could copy the cpumask pointers instead of real data. > Need to use cpumask_copy there.
Sigh. That code should just depend on CONFIG_BROKEN, really.
Thanks,
tglx
| |