summaryrefslogtreecommitdiff
path: root/arch/s390/kernel/uprobes.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/s390/kernel/uprobes.c')
-rw-r--r--arch/s390/kernel/uprobes.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/arch/s390/kernel/uprobes.c b/arch/s390/kernel/uprobes.c
index b88345ef8bd9..18591ca40ae7 100644
--- a/arch/s390/kernel/uprobes.c
+++ b/arch/s390/kernel/uprobes.c
@@ -11,6 +11,7 @@
#include <linux/compat.h>
#include <linux/kdebug.h>
#include <linux/sched/task_stack.h>
+#include <linux/non-atomic/xchg.h>
#include <asm/switch_to.h>
#include <asm/facility.h>
@@ -144,11 +145,7 @@ void arch_uprobe_abort_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
unsigned long arch_uretprobe_hijack_return_addr(unsigned long trampoline,
struct pt_regs *regs)
{
- unsigned long orig;
-
- orig = regs->gprs[14];
- regs->gprs[14] = trampoline;
- return orig;
+ return __xchg(&regs->gprs[14], trampoline);
}
bool arch_uretprobe_is_alive(struct return_instance *ret, enum rp_check ctx,