Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'powerpc-5.11-7' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux

Pull powerpc fixes from Michael Ellerman:

- A fix for a change we made to __kernel_sigtramp_rt64() which confused
glibc's backtrace logic, and also changed the semantics of that
symbol, which was arguably an ABI break.

- A fix for a stack overwrite in our VSX instruction emulation.

- A couple of fixes for the Makefile logic in the new C VDSO.

Thanks to Masahiro Yamada, Naveen N. Rao, Raoni Fassina Firmino, and
Ravi Bangoria.

* tag 'powerpc-5.11-7' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
powerpc/64/signal: Fix regression in __kernel_sigtramp_rt64() semantics
powerpc/vdso64: remove meaningless vgettimeofday.o build rule
powerpc/vdso: fix unnecessary rebuilds of vgettimeofday.o
powerpc/sstep: Fix array out of bound warning

+23 -21
+2 -2
arch/powerpc/kernel/Makefile
··· 51 51 obj-$(CONFIG_PPC64) += setup_64.o \ 52 52 paca.o nvram_64.o note.o syscall_64.o 53 53 obj-$(CONFIG_COMPAT) += sys_ppc32.o signal_32.o 54 - obj-$(CONFIG_VDSO32) += vdso32/ 54 + obj-$(CONFIG_VDSO32) += vdso32_wrapper.o 55 55 obj-$(CONFIG_PPC_WATCHDOG) += watchdog.o 56 56 obj-$(CONFIG_HAVE_HW_BREAKPOINT) += hw_breakpoint.o 57 57 obj-$(CONFIG_PPC_DAWR) += dawr.o ··· 60 60 obj-$(CONFIG_PPC_BOOK3S_64) += mce.o mce_power.o 61 61 obj-$(CONFIG_PPC_BOOK3E_64) += exceptions-64e.o idle_book3e.o 62 62 obj-$(CONFIG_PPC_BARRIER_NOSPEC) += security.o 63 - obj-$(CONFIG_PPC64) += vdso64/ 63 + obj-$(CONFIG_PPC64) += vdso64_wrapper.o 64 64 obj-$(CONFIG_ALTIVEC) += vecemu.o 65 65 obj-$(CONFIG_PPC_BOOK3S_IDLE) += idle_book3s.o 66 66 procfs-y := proc_powerpc.o
+1 -4
arch/powerpc/kernel/vdso32/Makefile
··· 30 30 KBUILD_CFLAGS := $(filter-out -mcmodel=medium -mabi=elfv1 -mabi=elfv2 -mcall-aixdesc,$(KBUILD_CFLAGS)) 31 31 endif 32 32 33 - targets := $(obj-vdso32) vdso32.so.dbg 33 + targets := $(obj-vdso32) vdso32.so.dbg vgettimeofday.o 34 34 obj-vdso32 := $(addprefix $(obj)/, $(obj-vdso32)) 35 35 36 36 GCOV_PROFILE := n ··· 45 45 obj-y += vdso32_wrapper.o 46 46 targets += vdso32.lds 47 47 CPPFLAGS_vdso32.lds += -P -C -Upowerpc 48 - 49 - # Force dependency (incbin is bad) 50 - $(obj)/vdso32_wrapper.o : $(obj)/vdso32.so.dbg 51 48 52 49 # link rule for the .so file, .lds has to be first 53 50 $(obj)/vdso32.so.dbg: $(src)/vdso32.lds $(obj-vdso32) $(obj)/vgettimeofday.o FORCE
arch/powerpc/kernel/vdso32/vdso32_wrapper.S arch/powerpc/kernel/vdso32_wrapper.S
+1 -7
arch/powerpc/kernel/vdso64/Makefile
··· 17 17 18 18 # Build rules 19 19 20 - targets := $(obj-vdso64) vdso64.so.dbg 20 + targets := $(obj-vdso64) vdso64.so.dbg vgettimeofday.o 21 21 obj-vdso64 := $(addprefix $(obj)/, $(obj-vdso64)) 22 22 23 23 GCOV_PROFILE := n ··· 29 29 -Wl,-soname=linux-vdso64.so.1 -Wl,--hash-style=both 30 30 asflags-y := -D__VDSO64__ -s 31 31 32 - obj-y += vdso64_wrapper.o 33 32 targets += vdso64.lds 34 33 CPPFLAGS_vdso64.lds += -P -C -U$(ARCH) 35 - 36 - $(obj)/vgettimeofday.o: %.o: %.c FORCE 37 - 38 - # Force dependency (incbin is bad) 39 - $(obj)/vdso64_wrapper.o : $(obj)/vdso64.so.dbg 40 34 41 35 # link rule for the .so file, .lds has to be first 42 36 $(obj)/vdso64.so.dbg: $(src)/vdso64.lds $(obj-vdso64) $(obj)/vgettimeofday.o FORCE
+10 -1
arch/powerpc/kernel/vdso64/sigtramp.S
··· 15 15 16 16 .text 17 17 18 + /* 19 + * __kernel_start_sigtramp_rt64 and __kernel_sigtramp_rt64 together 20 + * are one function split in two parts. The kernel jumps to the former 21 + * and the signal handler indirectly (by blr) returns to the latter. 22 + * __kernel_sigtramp_rt64 needs to point to the return address so 23 + * glibc can correctly identify the trampoline stack frame. 24 + */ 18 25 .balign 8 19 26 .balign IFETCH_ALIGN_BYTES 20 - V_FUNCTION_BEGIN(__kernel_sigtramp_rt64) 27 + V_FUNCTION_BEGIN(__kernel_start_sigtramp_rt64) 21 28 .Lsigrt_start: 22 29 bctrl /* call the handler */ 30 + V_FUNCTION_END(__kernel_start_sigtramp_rt64) 31 + V_FUNCTION_BEGIN(__kernel_sigtramp_rt64) 23 32 addi r1, r1, __SIGNAL_FRAMESIZE 24 33 li r0,__NR_rt_sigreturn 25 34 sc
+1 -1
arch/powerpc/kernel/vdso64/vdso64.lds.S
··· 131 131 /* 132 132 * Make the sigreturn code visible to the kernel. 133 133 */ 134 - VDSO_sigtramp_rt64 = __kernel_sigtramp_rt64; 134 + VDSO_sigtramp_rt64 = __kernel_start_sigtramp_rt64;
arch/powerpc/kernel/vdso64/vdso64_wrapper.S arch/powerpc/kernel/vdso64_wrapper.S
+8 -6
arch/powerpc/lib/sstep.c
··· 818 818 break; 819 819 if (rev) { 820 820 /* reverse 32 bytes */ 821 - buf.d[0] = byterev_8(reg->d[3]); 822 - buf.d[1] = byterev_8(reg->d[2]); 823 - buf.d[2] = byterev_8(reg->d[1]); 824 - buf.d[3] = byterev_8(reg->d[0]); 825 - reg = &buf; 821 + union vsx_reg buf32[2]; 822 + buf32[0].d[0] = byterev_8(reg[1].d[1]); 823 + buf32[0].d[1] = byterev_8(reg[1].d[0]); 824 + buf32[1].d[0] = byterev_8(reg[0].d[1]); 825 + buf32[1].d[1] = byterev_8(reg[0].d[0]); 826 + memcpy(mem, buf32, size); 827 + } else { 828 + memcpy(mem, reg, size); 826 829 } 827 - memcpy(mem, reg, size); 828 830 break; 829 831 case 16: 830 832 /* stxv, stxvx, stxvl, stxvll */