On Tue, Dec 8, 2009 at 07:57, Tejun Heo <teheo@xxxxxxxxxx> wrote: > On SUN3, m68k defines macro VMALLOC_END as unsigned long variable > vmalloc_end which is adjusted from mmu_emu_init(). This becomes > problematic if a local variables vmalloc_end is defined in some > function (not very unlikely) and VMALLOC_END is used in the function - > the function thinks its referencing the global VMALLOC_END value but > would be referencing its own local vmalloc_end variable. > > There's no reason VMALLOC_END should be a macro. Just define it as an > unsigned long variable to avoid nasty surprises. > > Signed-off-by: Tejun Heo <tj@xxxxxxxxxx> > Cc: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> > Cc: Roman Zippel <zippel@xxxxxxxxxxxxxx> > --- > Okay, here it is. Compile tested. Geert, Roman, if you guys don't > object, I'd like to push it with the rest of percpu changes to Linus. > What do you think? Fine for me, except that by convention allcaps is reserved for macros? > > Thanks. > > arch/m68k/include/asm/pgtable_mm.h | 3 +-- > arch/m68k/sun3/mmu_emu.c | 8 ++++---- > 2 files changed, 5 insertions(+), 6 deletions(-) > > diff --git a/arch/m68k/include/asm/pgtable_mm.h b/arch/m68k/include/asm/pgtable_mm.h > index fe60e1a..0ea9f09 100644 > --- a/arch/m68k/include/asm/pgtable_mm.h > +++ b/arch/m68k/include/asm/pgtable_mm.h > @@ -83,9 +83,8 @@ > #define VMALLOC_START (((unsigned long) high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1)) > #define VMALLOC_END KMAP_START > #else > -extern unsigned long vmalloc_end; > #define VMALLOC_START 0x0f800000 > -#define VMALLOC_END vmalloc_end > +extern unsigned long VMALLOC_END; > #endif /* CONFIG_SUN3 */ > > /* zero page used for uninitialized stuff */ > diff --git a/arch/m68k/sun3/mmu_emu.c b/arch/m68k/sun3/mmu_emu.c > index 3cd1939..25e2b14 100644 > --- a/arch/m68k/sun3/mmu_emu.c > +++ b/arch/m68k/sun3/mmu_emu.c > @@ -45,8 +45,8 @@ > ** Globals > */ > > -unsigned long vmalloc_end; > -EXPORT_SYMBOL(vmalloc_end); > +unsigned long VMALLOC_END; > +EXPORT_SYMBOL(VMALLOC_END); > > unsigned long pmeg_vaddr[PMEGS_NUM]; > unsigned char pmeg_alloc[PMEGS_NUM]; > @@ -172,8 +172,8 @@ void mmu_emu_init(unsigned long bootmem_end) > #endif > // the lowest mapping here is the end of our > // vmalloc region > - if(!vmalloc_end) > - vmalloc_end = seg; > + if (!VMALLOC_END) > + VMALLOC_END = seg; > > // mark the segmap alloc'd, and reserve any > // of the first 0xbff pages the hardware is > -- Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds -- To unsubscribe from this list: send the line "unsubscribe linux-ia64" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
![]() |