From 7e970c18f85f99acc678d90128b6e01dce1bf273 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Fri, 01 Nov 2024 02:40:12 +0000
Subject: [PATCH] gmac get mac form eeprom
---
kernel/arch/arm64/kernel/syscall.c | 20 ++++++++++++++++++--
1 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/kernel/arch/arm64/kernel/syscall.c b/kernel/arch/arm64/kernel/syscall.c
index 6f9839d..24ab737 100644
--- a/kernel/arch/arm64/kernel/syscall.c
+++ b/kernel/arch/arm64/kernel/syscall.c
@@ -2,6 +2,7 @@
#include <linux/compiler.h>
#include <linux/context_tracking.h>
+#include <linux/irqstage.h>
#include <linux/errno.h>
#include <linux/nospec.h>
#include <linux/ptrace.h>
@@ -94,6 +95,7 @@
const syscall_fn_t syscall_table[])
{
unsigned long flags = current_thread_info()->flags;
+ int ret;
regs->orig_x0 = regs->regs[0];
regs->syscallno = scno;
@@ -117,9 +119,18 @@
*/
cortex_a76_erratum_1463225_svc_handler();
+ WARN_ON_ONCE(dovetail_debug() &&
+ running_inband() && test_inband_stall());
local_daif_restore(DAIF_PROCCTX);
- if (flags & _TIF_MTE_ASYNC_FAULT) {
+ ret = pipeline_syscall(scno, regs);
+ if (ret > 0)
+ return;
+
+ if (ret < 0)
+ goto tail_work;
+
+ if (system_supports_mte() && (flags & _TIF_MTE_ASYNC_FAULT)) {
/*
* Process the asynchronous tag check fault before the actual
* syscall. do_notify_resume() will send a signal to userspace
@@ -159,11 +170,16 @@
* check again. However, if we were tracing entry, then we always trace
* exit regardless, as the old entry assembly did.
*/
+tail_work:
if (!has_syscall_work(flags) && !IS_ENABLED(CONFIG_DEBUG_RSEQ)) {
local_daif_mask();
+ stall_inband();
flags = current_thread_info()->flags;
- if (!has_syscall_work(flags) && !(flags & _TIF_SINGLESTEP))
+ if (!has_syscall_work(flags) && !(flags & _TIF_SINGLESTEP)) {
+ unstall_inband();
return;
+ }
+ unstall_inband();
local_daif_restore(DAIF_PROCCTX);
}
--
Gitblit v1.6.2