Partly copied from commit 16fb1a9bec61 ("arm64: vdso: clean up vdso_pagelist initialization").
No need to get_page() the vdso text/data - these are part of the kernel image. Signed-off-by: Christophe Leroy <christophe.le...@csgroup.eu> --- arch/powerpc/kernel/vdso.c | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c index 88a4a02ed4c4..3bc4d5b1980b 100644 --- a/arch/powerpc/kernel/vdso.c +++ b/arch/powerpc/kernel/vdso.c @@ -757,11 +757,9 @@ static int __init vdso_init(void) if (!vdso32_pagelist) goto alloc_failed; - for (i = 0; i < vdso32_pages; i++) { - struct page *pg = virt_to_page(vdso32_kbase + i*PAGE_SIZE); - get_page(pg); - vdso32_pagelist[i] = pg; - } + 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); vdso32_pagelist[i] = NULL; #endif @@ -772,17 +770,13 @@ static int __init vdso_init(void) if (!vdso64_pagelist) goto alloc_failed; - for (i = 0; i < vdso64_pages; i++) { - struct page *pg = virt_to_page(vdso64_kbase + i*PAGE_SIZE); - get_page(pg); - vdso64_pagelist[i] = pg; - } + 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); vdso64_pagelist[i] = NULL; #endif /* CONFIG_PPC64 */ - get_page(virt_to_page(vdso_data)); - smp_wmb(); vdso_ready = 1; -- 2.25.0