Loading arch/s390/Makefile +2 −2 Original line number Diff line number Diff line Loading @@ -151,9 +151,9 @@ ifeq ($(KBUILD_EXTMOD),) # this hack. prepare: vdso_prepare vdso_prepare: prepare0 $(Q)$(MAKE) $(build)=arch/s390/kernel/vdso64 include/generated/vdso64-offsets.h $(Q)$(MAKE) $(build)=arch/s390/kernel/vdso include/generated/vdso-offsets.h vdso-install-y += arch/s390/kernel/vdso64/vdso64.so.dbg vdso-install-y += arch/s390/kernel/vdso/vdso.so.dbg endif Loading arch/s390/include/asm/vdso-symbols.h +2 −2 Original line number Diff line number Diff line Loading @@ -2,8 +2,8 @@ #ifndef __S390_VDSO_SYMBOLS_H__ #define __S390_VDSO_SYMBOLS_H__ #include <generated/vdso64-offsets.h> #include <generated/vdso-offsets.h> #define VDSO64_SYMBOL(tsk, name) ((tsk)->mm->context.vdso_base + (vdso64_offset_##name)) #define VDSO_SYMBOL(tsk, name) ((tsk)->mm->context.vdso_base + (vdso_offset_##name)) #endif /* __S390_VDSO_SYMBOLS_H__ */ arch/s390/kernel/Makefile +1 −1 Original line number Diff line number Diff line Loading @@ -81,4 +81,4 @@ obj-$(CONFIG_PERF_EVENTS) += perf_pai.o obj-$(CONFIG_TRACEPOINTS) += trace.o # vdso obj-y += vdso64/ obj-y += vdso/ arch/s390/kernel/signal.c +3 −3 Original line number Diff line number Diff line Loading @@ -326,7 +326,7 @@ static int setup_frame(int sig, struct k_sigaction *ka, if (ka->sa.sa_flags & SA_RESTORER) restorer = (unsigned long) ka->sa.sa_restorer; else restorer = VDSO64_SYMBOL(current, sigreturn); restorer = VDSO_SYMBOL(current, sigreturn); /* Set up registers for signal handler */ regs->gprs[14] = restorer; Loading Loading @@ -378,7 +378,7 @@ static int setup_rt_frame(struct ksignal *ksig, sigset_t *set, if (ksig->ka.sa.sa_flags & SA_RESTORER) restorer = (unsigned long) ksig->ka.sa.sa_restorer; else restorer = VDSO64_SYMBOL(current, rt_sigreturn); restorer = VDSO_SYMBOL(current, rt_sigreturn); /* Create siginfo on the signal stack */ if (copy_siginfo_to_user(&frame->info, &ksig->info)) Loading Loading @@ -490,7 +490,7 @@ void arch_do_signal_or_restart(struct pt_regs *regs) /* Restart with sys_restart_syscall */ regs->gprs[2] = regs->orig_gpr2; current->restart_block.arch_data = regs->psw.addr; regs->psw.addr = VDSO64_SYMBOL(current, restart_syscall); regs->psw.addr = VDSO_SYMBOL(current, restart_syscall); if (test_thread_flag(TIF_SINGLE_STEP)) clear_thread_flag(TIF_PER_TRAP); break; Loading arch/s390/kernel/vdso.c +7 −9 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ #include <asm/alternative.h> #include <asm/vdso.h> extern char vdso64_start[], vdso64_end[]; extern char vdso_start[], vdso_end[]; static int vdso_mremap(const struct vm_special_mapping *sm, struct vm_area_struct *vma) Loading @@ -31,7 +31,7 @@ static int vdso_mremap(const struct vm_special_mapping *sm, return 0; } static struct vm_special_mapping vdso64_mapping = { static struct vm_special_mapping vdso_mapping = { .name = "[vdso]", .mremap = vdso_mremap, }; Loading @@ -46,7 +46,6 @@ early_initcall(vdso_getcpu_init); /* Must be called before SMP init */ static int map_vdso(unsigned long addr, unsigned long vdso_mapping_len) { unsigned long vvar_start, vdso_text_start, vdso_text_len; struct vm_special_mapping *vdso_mapping; struct mm_struct *mm = current->mm; struct vm_area_struct *vma; int rc; Loading @@ -55,8 +54,7 @@ static int map_vdso(unsigned long addr, unsigned long vdso_mapping_len) if (mmap_write_lock_killable(mm)) return -EINTR; vdso_text_len = vdso64_end - vdso64_start; vdso_mapping = &vdso64_mapping; vdso_text_len = vdso_end - vdso_start; vvar_start = get_unmapped_area(NULL, addr, vdso_mapping_len, 0, 0); rc = vvar_start; if (IS_ERR_VALUE(vvar_start)) Loading @@ -70,7 +68,7 @@ static int map_vdso(unsigned long addr, unsigned long vdso_mapping_len) vma = _install_special_mapping(mm, vdso_text_start, vdso_text_len, VM_READ|VM_EXEC|VM_SEALED_SYSMAP| VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC, vdso_mapping); &vdso_mapping); if (IS_ERR(vma)) { do_munmap(mm, vvar_start, PAGE_SIZE, NULL); rc = PTR_ERR(vma); Loading Loading @@ -110,7 +108,7 @@ static unsigned long vdso_addr(unsigned long start, unsigned long len) unsigned long vdso_text_size(void) { return PAGE_ALIGN(vdso64_end - vdso64_start); return PAGE_ALIGN(vdso_end - vdso_start); } unsigned long vdso_size(void) Loading Loading @@ -148,7 +146,7 @@ static void vdso_apply_alternatives(void) struct alt_instr *start, *end; const struct elf64_hdr *hdr; hdr = (struct elf64_hdr *)vdso64_start; hdr = (struct elf64_hdr *)vdso_start; shdr = (void *)hdr + hdr->e_shoff; alt = find_section(hdr, shdr, ".altinstructions"); if (!alt) Loading @@ -161,7 +159,7 @@ static void vdso_apply_alternatives(void) static int __init vdso_init(void) { vdso_apply_alternatives(); vdso64_mapping.pages = vdso_setup_pages(vdso64_start, vdso64_end); vdso_mapping.pages = vdso_setup_pages(vdso_start, vdso_end); return 0; } arch_initcall(vdso_init); Loading
arch/s390/Makefile +2 −2 Original line number Diff line number Diff line Loading @@ -151,9 +151,9 @@ ifeq ($(KBUILD_EXTMOD),) # this hack. prepare: vdso_prepare vdso_prepare: prepare0 $(Q)$(MAKE) $(build)=arch/s390/kernel/vdso64 include/generated/vdso64-offsets.h $(Q)$(MAKE) $(build)=arch/s390/kernel/vdso include/generated/vdso-offsets.h vdso-install-y += arch/s390/kernel/vdso64/vdso64.so.dbg vdso-install-y += arch/s390/kernel/vdso/vdso.so.dbg endif Loading
arch/s390/include/asm/vdso-symbols.h +2 −2 Original line number Diff line number Diff line Loading @@ -2,8 +2,8 @@ #ifndef __S390_VDSO_SYMBOLS_H__ #define __S390_VDSO_SYMBOLS_H__ #include <generated/vdso64-offsets.h> #include <generated/vdso-offsets.h> #define VDSO64_SYMBOL(tsk, name) ((tsk)->mm->context.vdso_base + (vdso64_offset_##name)) #define VDSO_SYMBOL(tsk, name) ((tsk)->mm->context.vdso_base + (vdso_offset_##name)) #endif /* __S390_VDSO_SYMBOLS_H__ */
arch/s390/kernel/Makefile +1 −1 Original line number Diff line number Diff line Loading @@ -81,4 +81,4 @@ obj-$(CONFIG_PERF_EVENTS) += perf_pai.o obj-$(CONFIG_TRACEPOINTS) += trace.o # vdso obj-y += vdso64/ obj-y += vdso/
arch/s390/kernel/signal.c +3 −3 Original line number Diff line number Diff line Loading @@ -326,7 +326,7 @@ static int setup_frame(int sig, struct k_sigaction *ka, if (ka->sa.sa_flags & SA_RESTORER) restorer = (unsigned long) ka->sa.sa_restorer; else restorer = VDSO64_SYMBOL(current, sigreturn); restorer = VDSO_SYMBOL(current, sigreturn); /* Set up registers for signal handler */ regs->gprs[14] = restorer; Loading Loading @@ -378,7 +378,7 @@ static int setup_rt_frame(struct ksignal *ksig, sigset_t *set, if (ksig->ka.sa.sa_flags & SA_RESTORER) restorer = (unsigned long) ksig->ka.sa.sa_restorer; else restorer = VDSO64_SYMBOL(current, rt_sigreturn); restorer = VDSO_SYMBOL(current, rt_sigreturn); /* Create siginfo on the signal stack */ if (copy_siginfo_to_user(&frame->info, &ksig->info)) Loading Loading @@ -490,7 +490,7 @@ void arch_do_signal_or_restart(struct pt_regs *regs) /* Restart with sys_restart_syscall */ regs->gprs[2] = regs->orig_gpr2; current->restart_block.arch_data = regs->psw.addr; regs->psw.addr = VDSO64_SYMBOL(current, restart_syscall); regs->psw.addr = VDSO_SYMBOL(current, restart_syscall); if (test_thread_flag(TIF_SINGLE_STEP)) clear_thread_flag(TIF_PER_TRAP); break; Loading
arch/s390/kernel/vdso.c +7 −9 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ #include <asm/alternative.h> #include <asm/vdso.h> extern char vdso64_start[], vdso64_end[]; extern char vdso_start[], vdso_end[]; static int vdso_mremap(const struct vm_special_mapping *sm, struct vm_area_struct *vma) Loading @@ -31,7 +31,7 @@ static int vdso_mremap(const struct vm_special_mapping *sm, return 0; } static struct vm_special_mapping vdso64_mapping = { static struct vm_special_mapping vdso_mapping = { .name = "[vdso]", .mremap = vdso_mremap, }; Loading @@ -46,7 +46,6 @@ early_initcall(vdso_getcpu_init); /* Must be called before SMP init */ static int map_vdso(unsigned long addr, unsigned long vdso_mapping_len) { unsigned long vvar_start, vdso_text_start, vdso_text_len; struct vm_special_mapping *vdso_mapping; struct mm_struct *mm = current->mm; struct vm_area_struct *vma; int rc; Loading @@ -55,8 +54,7 @@ static int map_vdso(unsigned long addr, unsigned long vdso_mapping_len) if (mmap_write_lock_killable(mm)) return -EINTR; vdso_text_len = vdso64_end - vdso64_start; vdso_mapping = &vdso64_mapping; vdso_text_len = vdso_end - vdso_start; vvar_start = get_unmapped_area(NULL, addr, vdso_mapping_len, 0, 0); rc = vvar_start; if (IS_ERR_VALUE(vvar_start)) Loading @@ -70,7 +68,7 @@ static int map_vdso(unsigned long addr, unsigned long vdso_mapping_len) vma = _install_special_mapping(mm, vdso_text_start, vdso_text_len, VM_READ|VM_EXEC|VM_SEALED_SYSMAP| VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC, vdso_mapping); &vdso_mapping); if (IS_ERR(vma)) { do_munmap(mm, vvar_start, PAGE_SIZE, NULL); rc = PTR_ERR(vma); Loading Loading @@ -110,7 +108,7 @@ static unsigned long vdso_addr(unsigned long start, unsigned long len) unsigned long vdso_text_size(void) { return PAGE_ALIGN(vdso64_end - vdso64_start); return PAGE_ALIGN(vdso_end - vdso_start); } unsigned long vdso_size(void) Loading Loading @@ -148,7 +146,7 @@ static void vdso_apply_alternatives(void) struct alt_instr *start, *end; const struct elf64_hdr *hdr; hdr = (struct elf64_hdr *)vdso64_start; hdr = (struct elf64_hdr *)vdso_start; shdr = (void *)hdr + hdr->e_shoff; alt = find_section(hdr, shdr, ".altinstructions"); if (!alt) Loading @@ -161,7 +159,7 @@ static void vdso_apply_alternatives(void) static int __init vdso_init(void) { vdso_apply_alternatives(); vdso64_mapping.pages = vdso_setup_pages(vdso64_start, vdso64_end); vdso_mapping.pages = vdso_setup_pages(vdso_start, vdso_end); return 0; } arch_initcall(vdso_init);