Messages in this thread Patch in this message | | | Date | Tue, 27 May 2008 10:00:30 +0200 | From | Ingo Molnar <> | Subject | Re: [PATCH 2.6.26-rc4] Fix nesting error checking in arch/x86/mm/ioremap.c |
| |
* Mika Kukkonen <mikukkon@srv1-m700-lanp.koti> wrote:
> unsigned int nesting; > > - nesting = --early_ioremap_nested; > - WARN_ON(nesting < 0); > + if (early_ioremap_nested) > + nesting = --early_ioremap_nested; > + else { > + nesting = 0; > + WARN_ON(1); > + }
the better fix would be to turn 'nesting' into an int, hm?
Also, instead of forcing nesting to 0, it is better to just return - as we cannot do any sane unmap here anymore. (we are unbalanced)
I.e. something like the fix below?
Ingo
------------------------------> Subject: ioremap: nesting fix From: Ingo Molnar <mingo@elte.hu> Date: Tue May 27 09:56:49 CEST 2008
Mika Kukkonen noticed that the nesting check in early_iounmap() is not actually done.
Reported-by: Mika Kukkonen <mikukkon@srv1-m700-lanp.koti> Signed-off-by: Ingo Molnar <mingo@elte.hu> --- arch/x86/mm/ioremap.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
Index: linux/arch/x86/mm/ioremap.c =================================================================== --- linux.orig/arch/x86/mm/ioremap.c +++ linux/arch/x86/mm/ioremap.c @@ -602,10 +602,11 @@ void __init early_iounmap(void *addr, un unsigned long offset; unsigned int nrpages; enum fixed_addresses idx; - unsigned int nesting; + int nesting; nesting = --early_ioremap_nested; - WARN_ON(nesting < 0); + if (WARN_ON(nesting < 0)) + return; if (early_ioremap_debug) { printk(KERN_INFO "early_iounmap(%p, %08lx) [%d]\n", addr,
| |