| From 0543c6b29df04da770ae57a12da1ea57b1a3cba3 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 22 Apr 2020 20:24:11 +0900 |
| Subject: openrisc: Fix issue with argument clobbering for clone/fork |
| |
| From: Stafford Horne <shorne@gmail.com> |
| |
| [ Upstream commit 6bd140e14d9aaa734ec37985b8b20a96c0ece948 ] |
| |
| Working on the OpenRISC glibc port I found that sometimes clone was |
| working strange. That the tls data argument sent in r7 was always |
| wrong. Further investigation revealed that the arguments were getting |
| clobbered in the entry code. This patch removes the code that writes to |
| the argument registers. This was likely due to some old code hanging |
| around. |
| |
| This patch fixes this up for clone and fork. This fork clobber is |
| harmless but also useless so remove. |
| |
| Signed-off-by: Stafford Horne <shorne@gmail.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/openrisc/kernel/entry.S | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| diff --git a/arch/openrisc/kernel/entry.S b/arch/openrisc/kernel/entry.S |
| index c17e8451d9978..3fbe420f49c43 100644 |
| --- a/arch/openrisc/kernel/entry.S |
| +++ b/arch/openrisc/kernel/entry.S |
| @@ -1092,13 +1092,13 @@ ENTRY(__sys_clone) |
| l.movhi r29,hi(sys_clone) |
| l.ori r29,r29,lo(sys_clone) |
| l.j _fork_save_extra_regs_and_call |
| - l.addi r7,r1,0 |
| + l.nop |
| |
| ENTRY(__sys_fork) |
| l.movhi r29,hi(sys_fork) |
| l.ori r29,r29,lo(sys_fork) |
| l.j _fork_save_extra_regs_and_call |
| - l.addi r3,r1,0 |
| + l.nop |
| |
| ENTRY(sys_rt_sigreturn) |
| l.j _sys_rt_sigreturn |
| -- |
| 2.25.1 |
| |