summaryrefslogtreecommitdiffstats
path: root/arch/arm64/kernel/armv8_deprecated.c
diff options
context:
space:
mode:
authorWill Deacon <will.deacon@arm.com>2014-11-25 11:05:35 +0100
committerWill Deacon <will.deacon@arm.com>2014-11-25 11:05:35 +0100
commit909633957d85561dab7655d69a9d17dd16231d92 (patch)
tree3acf8d21e92305a5ac51350e23706ff59dd08f11 /arch/arm64/kernel/armv8_deprecated.c
parentarm64: mm: report unhandled level-0 translation faults correctly (diff)
downloadlinux-909633957d85561dab7655d69a9d17dd16231d92.tar.xz
linux-909633957d85561dab7655d69a9d17dd16231d92.zip
arm64: fix return code check when changing emulation handler
update_insn_emulation_mode() returns 0 on success, so we should be treating any non-zero values as failure, rather than the other way around. Otherwise, writes to the sysctl file controlling the emulation are ignored and immediately rolled back. Reported-by: Gene Hackmann <ghackmann@google.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
Diffstat (limited to 'arch/arm64/kernel/armv8_deprecated.c')
-rw-r--r--arch/arm64/kernel/armv8_deprecated.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/arm64/kernel/armv8_deprecated.c b/arch/arm64/kernel/armv8_deprecated.c
index 529aad93336f..c363671d7509 100644
--- a/arch/arm64/kernel/armv8_deprecated.c
+++ b/arch/arm64/kernel/armv8_deprecated.c
@@ -165,7 +165,7 @@ static int emulation_proc_handler(struct ctl_table *table, int write,
goto ret;
ret = update_insn_emulation_mode(insn, prev_mode);
- if (!ret) {
+ if (ret) {
/* Mode change failed, revert to previous mode. */
insn->current_mode = prev_mode;
update_insn_emulation_mode(insn, INSN_UNDEF);