Skip to contentSkip to conversation

Patch "MIPS: Fix sigreturn via VDSO on microMIPS kernel" has been added to the 4.4-stable tree

PATCH [email protected] 1 participant 1 message Jun 4, 2016

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

MIPS: Fix sigreturn via VDSO on microMIPS kernel

to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
mips-fix-sigreturn-via-vdso-on-micromips-kernel.patch
and it can be found in the queue-4.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From 13eb192d10bcc9ac518d57356179071d603bcb4e Mon Sep 17 00:00:00 2001

From: James Hogan <[email protected]>
Date: Tue, 24 May 2016 09:35:10 +0100
Subject: MIPS: Fix sigreturn via VDSO on microMIPS kernel

From: James Hogan <[email protected]>

commit 13eb192d10bcc9ac518d57356179071d603bcb4e upstream.

In microMIPS kernels, handle_signal() sets the isa16 mode bit in the vdso address so that the sigreturn trampolines (which are offset from the VDSO) get executed as microMIPS.

However commit ebb5e78cc634 ("MIPS: Initial implementation of a VDSO") changed the offsets to come from the VDSO image, which already have the isa16 mode bit set correctly since they're extracted from the VDSO shared library symbol table.

Drop the isa16 mode bit handling from handle_signal() to fix sigreturn for cores which support both microMIPS and normal MIPS. This doesn't fix microMIPS only cores, since the VDSO is still built for normal MIPS, but thats a separate problem.

Fixes ebb5e78cc634 ("MIPS: Initial implementation of a VDSO")
Cc Paul Burton <[email protected]>

Patchwork: https://patchwork.linux-mips.org/patch/13348/

---
 arch/mips/kernel/signal.c |    8 --------
 1 file changed, 8 deletions(-)
arch/mips/kernel/signal.c +0 -8
@@ -770,15 +770,7 @@ static void handle_signal(struct ksignal
 	sigset_t *oldset = sigmask_to_save();
 	int ret;
 	struct mips_abi *abi = current->thread.abi;
-#ifdef CONFIG_CPU_MICROMIPS
-	void *vdso;
-	unsigned long tmp = (unsigned long)current->mm->context.vdso;
-
-	set_isa16_mode(tmp);
-	vdso = (void *)tmp;
-#else
 	void *vdso = current->mm->context.vdso;
-#endif
 
 	if (regs->regs[0]) {
 		switch(regs->regs[2]) {

Patches currently in stable-queue which might be from [email protected] are

queue-4.4/mips64-r6-r2-emulation-bugfix.patch queue-4.4/mips-fix-uapi-include-in-exported-asm-siginfo.h.patch queue-4.4/mips-disable-preemption-during-prctl-pr_set_fp_mode.patch queue-4.4/mips-fix-sigreturn-via-vdso-on-micromips-kernel.patch queue-4.4/mips-fix-siginfo.h-to-use-strict-posix-types.patch queue-4.4/mips-don-t-unwind-to-user-mode-with-eva.patch queue-4.4/mips-vdso-build-with-fno-strict-aliasing.patch queue-4.4/mips-fix-watchpoint-restoration.patch queue-4.4/mips-build-micromips-vdso-for-micromips-kernels.patch queue-4.4/mips-math-emu-fix-jalr-emulation-when-rd-0.patch queue-4.4/mips-fix-msa-ld_-st_-asm-macros-to-use-ptr_addu.patch queue-4.4/mips-avoid-using-unwind_stack-with-usermode.patch queue-4.4/mips-prevent-restoration-of-msa-context-in-non-msa-kernels.patch queue-4.4/mips-use-copy_s.fmt-rather-than-copy_u.fmt.patch