From 244b2c5ca8b14627e4a17755e5922221e121c771 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Wed, 09 Oct 2024 06:15:07 +0000
Subject: [PATCH] change system file
---
kernel/include/linux/cfi.h | 45 ++++++++++++++++++++++++---------------------
1 files changed, 24 insertions(+), 21 deletions(-)
diff --git a/kernel/include/linux/cfi.h b/kernel/include/linux/cfi.h
index e27033d..b381c6c 100644
--- a/kernel/include/linux/cfi.h
+++ b/kernel/include/linux/cfi.h
@@ -1,38 +1,41 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Clang Control Flow Integrity (CFI) support.
+ *
+ * Copyright (C) 2019 Google LLC
+ */
#ifndef _LINUX_CFI_H
#define _LINUX_CFI_H
-#include <linux/stringify.h>
-
#ifdef CONFIG_CFI_CLANG
-#ifdef CONFIG_MODULES
-
-typedef void (*cfi_check_fn)(uint64_t, void *, void *);
+typedef void (*cfi_check_fn)(uint64_t id, void *ptr, void *diag);
/* Compiler-generated function in each module, and the kernel */
-#define CFI_CHECK_FN __cfi_check
-#define CFI_CHECK_FN_NAME __stringify(CFI_CHECK_FN)
+extern void __cfi_check(uint64_t id, void *ptr, void *diag);
-extern void CFI_CHECK_FN(uint64_t, void *, void *);
+/*
+ * Force the compiler to generate a CFI jump table entry for a function
+ * and store the jump table address to __cfi_jt_<function>.
+ */
+#define __CFI_ADDRESSABLE(fn) \
+ const void* __cfi_jt_ ## fn __visible = (void *)&fn;
#ifdef CONFIG_CFI_CLANG_SHADOW
-extern void cfi_module_add(struct module *mod, unsigned long min_addr,
- unsigned long max_addr);
-extern void cfi_module_remove(struct module *mod, unsigned long min_addr,
- unsigned long max_addr);
+extern void cfi_module_add(struct module *mod, unsigned long base_addr);
+extern void cfi_module_remove(struct module *mod, unsigned long base_addr);
+
#else
-static inline void cfi_module_add(struct module *mod, unsigned long min_addr,
- unsigned long max_addr)
-{
-}
-static inline void cfi_module_remove(struct module *mod, unsigned long min_addr,
- unsigned long max_addr)
-{
-}
+static inline void cfi_module_add(struct module *mod, unsigned long base_addr) {}
+static inline void cfi_module_remove(struct module *mod, unsigned long base_addr) {}
+
#endif /* CONFIG_CFI_CLANG_SHADOW */
-#endif /* CONFIG_MODULES */
+#else /* !CONFIG_CFI_CLANG */
+
+#define __CFI_ADDRESSABLE(fn)
+
#endif /* CONFIG_CFI_CLANG */
#endif /* _LINUX_CFI_H */
--
Gitblit v1.6.2