Skip to content
Snippets Groups Projects
Commit aab344d2 authored by Alexey Brodkin's avatar Alexey Brodkin Committed by John Crispin
Browse files

arc770: backport upstream fix for unaligned access


This commit reverts 42f3c1fe ("arc770: fix broken upstream change")
and simultaneously adds back-ported fix from Linus' tree:
a524c218bc94 ("ARC: [arcompact] brown paper bag bug in unaligned
access delay slot fixup").

Note mentioned patch will appear in stable trees soon as well so
IMHO there's not much sense in adding this separate patch in lede/master branch.
As well as we will get rid of it here in 17.01 once we bump 4.4 kernel here
later down the line.

Signed-off-by: default avatarAlexey Brodkin <abrodkin@synopsys.com>
Cc: Felix Fietkau <nbd@nbd.name>
Cc: John Crispin <john@phrozen.org>
Cc: Jo-Philipp Wich <jo@mein.io>
parent 1f3de995
No related branches found
No related tags found
No related merge requests found
From patchwork Tue Feb 7 17:44:58 2017
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: ARC: [arcompact] brown paper bag bug in unaligned access delay slot
fixup
From: Vineet Gupta <Vineet.Gupta1@synopsys.com>
X-Patchwork-Id: 725238
Message-Id: <1486489498-9221-1-git-send-email-vgupta@synopsys.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Vineet Gupta <Vineet.Gupta1@synopsys.com>,
linux-snps-arc@lists.infradead.org, Jo-Philipp Wich <jo@mein.io>,
linux-kernel@vger.kernel.org, stable@vger.kernel.org
Date: Tue, 7 Feb 2017 09:44:58 -0800
Reported-by: Jo-Philipp Wich <jo@mein.io>
Fixes: 9aed02feae57bf7 ("ARC: [arcompact] handle unaligned access delay slot")
Cc: linux-kernel@vger.kernel.org
Cc: linux-snps-arc@lists.infradead.org
Cc: stable@vger.kernel.org
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
---
arch/arc/kernel/unaligned.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arc/kernel/unaligned.c b/arch/arc/kernel/unaligned.c
index 91ebe382147f..5f69c3bd59bb 100644
--- a/arch/arc/kernel/unaligned.c
+++ b/arch/arc/kernel/unaligned.c
@@ -243,7 +243,7 @@ int misaligned_fixup(unsigned long address, struct pt_regs *regs,
/* clear any remanants of delay slot */
if (delay_mode(regs)) {
- regs->ret = regs->bta ~1U;
+ regs->ret = regs->bta & ~1U;
regs->status32 &= ~STATUS_DE_MASK;
} else {
regs->ret += state.instr_len;
From: Jo-Philipp Wich <jo@mein.io>
Date: Tue, 7 Feb 2017 09:26:00 +0100
Subject: [PATCH] arc: revert broken upstream change
The upstream commit
"9aed02f ARC: [arcompact] handle unaligned access delay slot corner case"
introduced a syntax error in arch/arc/kernel/unaligned.c, leading to the
following build failure:
arch/arc/kernel/unaligned.c: In function 'misaligned_fixup':
arch/arc/kernel/unaligned.c:246:25: error: expected ';' before '~' token
regs->ret = regs->bta ~1U;
^
make[6]: *** [arch/arc/kernel/unaligned.o] Error 1
This patch reverts the offending change until an upstream fix is available.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
--- a/arch/arc/kernel/unaligned.c
+++ b/arch/arc/kernel/unaligned.c
@@ -241,9 +241,8 @@ int misaligned_fixup(unsigned long addre
if (state.fault)
goto fault;
- /* clear any remanants of delay slot */
if (delay_mode(regs)) {
- regs->ret = regs->bta ~1U;
+ regs->ret = regs->bta;
regs->status32 &= ~STATUS_DE_MASK;
} else {
regs->ret += state.instr_len;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment