No need of all those #ifdefs around the pagelist initialisation, use IS_ENABLED(), GCC will kick out unused static variables.
Signed-off-by: Christophe Leroy <christophe.le...@csgroup.eu> --- arch/powerpc/kernel/vdso.c | 57 +++++++++++++++----------------------- 1 file changed, 22 insertions(+), 35 deletions(-) diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c index daef14a284a3..bbb69832fd46 100644 --- a/arch/powerpc/kernel/vdso.c +++ b/arch/powerpc/kernel/vdso.c @@ -51,15 +51,13 @@ static struct page **vdso32_pagelist; unsigned long vdso32_sigtramp; unsigned long vdso32_rt_sigtramp; -#ifdef CONFIG_VDSO32 extern char vdso32_start, vdso32_end; -#endif -#ifdef CONFIG_PPC64 extern char vdso64_start, vdso64_end; static void *vdso64_kbase = &vdso64_start; static unsigned int vdso64_pages; static struct page **vdso64_pagelist; +#ifdef CONFIG_PPC64 unsigned long vdso64_rt_sigtramp; #endif /* CONFIG_PPC64 */ @@ -134,7 +132,6 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) if (!vdso_ready) return 0; -#ifdef CONFIG_PPC64 if (is_32bit_task()) { vdso_pagelist = vdso32_pagelist; vdso_pages = vdso32_pages; @@ -149,11 +146,6 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) */ vdso_base = 0; } -#else - vdso_pagelist = vdso32_pagelist; - vdso_pages = vdso32_pages; - vdso_base = VDSO32_MBASE; -#endif current->mm->context.vdso_base = 0; @@ -718,16 +710,14 @@ static int __init vdso_init(void) vdso_data->icache_block_size = ppc64_caches.l1i.block_size; vdso_data->dcache_log_block_size = ppc64_caches.l1d.log_block_size; vdso_data->icache_log_block_size = ppc64_caches.l1i.log_block_size; +#endif /* CONFIG_PPC64 */ /* * Calculate the size of the 64 bits vDSO */ vdso64_pages = (&vdso64_end - &vdso64_start) >> PAGE_SHIFT; DBG("vdso64_kbase: %p, 0x%x pages\n", vdso64_kbase, vdso64_pages); -#endif /* CONFIG_PPC64 */ - -#ifdef CONFIG_VDSO32 vdso32_kbase = &vdso32_start; /* @@ -735,8 +725,6 @@ static int __init vdso_init(void) */ vdso32_pages = (&vdso32_end - &vdso32_start) >> PAGE_SHIFT; DBG("vdso32_kbase: %p, 0x%x pages\n", vdso32_kbase, vdso32_pages); -#endif - /* * Setup the syscall map in the vDOS @@ -750,30 +738,30 @@ static int __init vdso_init(void) if (vdso_setup()) goto setup_failed; -#ifdef CONFIG_VDSO32 - /* Make sure pages are in the correct state */ - vdso32_pagelist = kcalloc(vdso32_pages + 1, sizeof(struct page *), - GFP_KERNEL); - if (!vdso32_pagelist) - goto alloc_failed; + if (IS_ENABLED(CONFIG_VDSO32)) { + /* Make sure pages are in the correct state */ + vdso32_pagelist = kcalloc(vdso32_pages + 1, sizeof(struct page *), + GFP_KERNEL); + if (!vdso32_pagelist) + goto alloc_failed; - for (i = 0; i < vdso32_pages; i++) - vdso32_pagelist[i] = virt_to_page(vdso32_kbase + i * PAGE_SIZE); + for (i = 0; i < vdso32_pages; i++) + vdso32_pagelist[i] = virt_to_page(vdso32_kbase + i * PAGE_SIZE); - vdso32_pagelist[i] = virt_to_page(vdso_data); -#endif + vdso32_pagelist[i] = virt_to_page(vdso_data); + } -#ifdef CONFIG_PPC64 - vdso64_pagelist = kcalloc(vdso64_pages + 1, sizeof(struct page *), - GFP_KERNEL); - if (!vdso64_pagelist) - goto alloc_failed; + if (IS_ENABLED(CONFIG_PPC64)) { + vdso64_pagelist = kcalloc(vdso64_pages + 1, sizeof(struct page *), + GFP_KERNEL); + if (!vdso64_pagelist) + goto alloc_failed; - for (i = 0; i < vdso64_pages; i++) - vdso64_pagelist[i] = virt_to_page(vdso64_kbase + i * PAGE_SIZE); + for (i = 0; i < vdso64_pages; i++) + vdso64_pagelist[i] = virt_to_page(vdso64_kbase + i * PAGE_SIZE); - vdso64_pagelist[i] = virt_to_page(vdso_data); -#endif /* CONFIG_PPC64 */ + vdso64_pagelist[i] = virt_to_page(vdso_data); + } smp_wmb(); vdso_ready = 1; @@ -784,9 +772,8 @@ static int __init vdso_init(void) pr_err("vDSO setup failure, not enabled !\n"); alloc_failed: vdso32_pages = 0; -#ifdef CONFIG_PPC64 vdso64_pages = 0; -#endif + return 0; } arch_initcall(vdso_init); -- 2.25.0