1 Star 0 Fork 49

zyu_cheng/systemd

forked from src-anolis-os/systemd 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
10012-seccomp-add-loongarch-support.patch 2.95 KB
一键复制 编辑 原始数据 按行查看 历史
geliwei 提交于 2022-09-22 10:38 . seccomp: add loongarch support
From 1894533699f7e01c80e896c5d022275777344492 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Thu, 22 Sep 2022 10:33:54 +0800
Subject: [PATCH] seccomp: add loongarch support
---
src/shared/seccomp-util.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/src/shared/seccomp-util.c b/src/shared/seccomp-util.c
index c57c409..63a875c 100644
--- a/src/shared/seccomp-util.c
+++ b/src/shared/seccomp-util.c
@@ -42,6 +42,8 @@ const uint32_t seccomp_local_archs[] = {
SCMP_ARCH_AARCH64, /* native */
#elif defined(__arm__)
SCMP_ARCH_ARM,
+#elif defined(__loongarch__)
+ SCMP_ARCH_LOONGARCH64,
#elif defined(__mips__) && __BYTE_ORDER == __BIG_ENDIAN && _MIPS_SIM == _MIPS_SIM_ABI32
SCMP_ARCH_MIPSEL,
SCMP_ARCH_MIPS, /* native */
@@ -136,6 +138,10 @@ const char* seccomp_arch_to_string(uint32_t c) {
return "s390";
case SCMP_ARCH_S390X:
return "s390x";
+#if defined(__loongarch__)
+ case SCMP_ARCH_LOONGARCH64:
+ return "loongarch64";
+#endif
default:
return NULL;
}
@@ -181,6 +187,10 @@ int seccomp_arch_from_string(const char *n, uint32_t *ret) {
*ret = SCMP_ARCH_S390;
else if (streq(n, "s390x"))
*ret = SCMP_ARCH_S390X;
+#if defined(__loongarch__)
+ else if (streq(n, "loongarch64"))
+ *ret = SCMP_ARCH_LOONGARCH64;
+#endif
else
return -EINVAL;
@@ -1209,6 +1219,11 @@ int seccomp_protect_sysctl(void) {
if (IN_SET(arch, SCMP_ARCH_X32, SCMP_ARCH_AARCH64))
/* No _sysctl syscall */
continue;
+#if defined(__loongarch__)
+ if (IN_SET(arch, SCMP_ARCH_LOONGARCH64))
+ /* No _sysctl syscall */
+ continue;
+#endif
r = seccomp_init_for_arch(&seccomp, arch, SCMP_ACT_ALLOW);
if (r < 0)
@@ -1267,6 +1282,9 @@ int seccomp_restrict_address_families(Set *address_families, bool whitelist) {
case SCMP_ARCH_PPC:
case SCMP_ARCH_PPC64:
case SCMP_ARCH_PPC64LE:
+#if defined(__loongarch__)
+ case SCMP_ARCH_LOONGARCH64:
+#endif
default:
/* These we either know we don't support (i.e. are the ones that do use socketcall()), or we
* don't know */
@@ -1543,6 +1561,9 @@ int seccomp_memory_deny_write_execute(void) {
case SCMP_ARCH_X86_64:
case SCMP_ARCH_X32:
case SCMP_ARCH_AARCH64:
+#if defined(__loongarch__)
+ case SCMP_ARCH_LOONGARCH64:
+#endif
filter_syscall = SCMP_SYS(mmap); /* amd64, x32, and arm64 have only mmap */
shmat_syscall = SCMP_SYS(shmat);
break;
--
2.27.0
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/zyu_cheng/systemd.git
[email protected]:zyu_cheng/systemd.git
zyu_cheng
systemd
systemd
a8

搜索帮助