[PATCH RFC v3 88/90] arch: wire up the cell system calls

From: Josef Bacik

Date: Thu Nov 05 2026 - 10:47:04 EST


Wire up cell_create(), cell_configure(), cell_info(), cell_open(),
cell_kill() and pidfd_configure() on x86 and in the generic system call
table.

Signed-off-by: Josef Bacik <josef@xxxxxxxxxxxxxx>
---
arch/x86/entry/syscalls/syscall_32.tbl | 6 ++++++
arch/x86/entry/syscalls/syscall_64.tbl | 6 ++++++
include/linux/syscalls.h | 14 ++++++++++++++
include/uapi/asm-generic/unistd.h | 15 ++++++++++++++-
kernel/sys_ni.c | 6 ++++++
scripts/syscall.tbl | 6 ++++++
6 files changed, 52 insertions(+), 1 deletion(-)

diff --git a/arch/x86/entry/syscalls/syscall_32.tbl b/arch/x86/entry/syscalls/syscall_32.tbl
index 2c172ef48dfd..4ed6bf999b53 100644
--- a/arch/x86/entry/syscalls/syscall_32.tbl
+++ b/arch/x86/entry/syscalls/syscall_32.tbl
@@ -478,3 +478,9 @@
470 i386 listns sys_listns
471 i386 rseq_slice_yield sys_rseq_slice_yield
472 i386 fchroot sys_fchroot
+473 i386 cell_create sys_cell_create
+474 i386 cell_configure sys_cell_configure
+475 i386 cell_info sys_cell_info
+476 i386 cell_open sys_cell_open
+477 i386 cell_kill sys_cell_kill
+478 i386 pidfd_configure sys_pidfd_configure
diff --git a/arch/x86/entry/syscalls/syscall_64.tbl b/arch/x86/entry/syscalls/syscall_64.tbl
index d5b6045b0090..bdf0c48b5682 100644
--- a/arch/x86/entry/syscalls/syscall_64.tbl
+++ b/arch/x86/entry/syscalls/syscall_64.tbl
@@ -397,6 +397,12 @@
470 common listns sys_listns
471 common rseq_slice_yield sys_rseq_slice_yield
472 common fchroot sys_fchroot
+473 common cell_create sys_cell_create
+474 common cell_configure sys_cell_configure
+475 common cell_info sys_cell_info
+476 common cell_open sys_cell_open
+477 common cell_kill sys_cell_kill
+478 common pidfd_configure sys_pidfd_configure

#
# Due to a historical design error, certain syscalls are numbered differently
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
index 552d9710a0d5..f70bfe5b028b 100644
--- a/include/linux/syscalls.h
+++ b/include/linux/syscalls.h
@@ -77,6 +77,7 @@ struct cachestat;
struct statmount;
struct mnt_id_req;
struct ns_id_req;
+struct cell_info;
struct xattr_args;
struct file_attr;

@@ -442,6 +443,19 @@ asmlinkage long sys_statmount(const struct mnt_id_req __user *req,
asmlinkage long sys_listmount(const struct mnt_id_req __user *req,
u64 __user *mnt_ids, size_t nr_mnt_ids,
unsigned int flags);
+asmlinkage long sys_cell_create(int parent, unsigned int flags);
+asmlinkage long sys_cell_configure(int cfd, unsigned int cmd,
+ const char __user *key,
+ const void __user *value, int aux);
+asmlinkage long sys_cell_info(int cfd, struct cell_info __user *info,
+ size_t size, unsigned int flags);
+asmlinkage long sys_cell_open(int cfd, unsigned int what,
+ const char __user *key, const void __user *arg,
+ unsigned int flags);
+asmlinkage long sys_cell_kill(int cfd, unsigned int flags);
+asmlinkage long sys_pidfd_configure(int pidfd, unsigned int cmd,
+ const char __user *key,
+ const void __user *value, int aux);
asmlinkage long sys_listns(const struct ns_id_req __user *req,
u64 __user *ns_ids, size_t nr_ns_ids,
unsigned int flags);
diff --git a/include/uapi/asm-generic/unistd.h b/include/uapi/asm-generic/unistd.h
index 5b7e77a7c736..aa7bcaa8348f 100644
--- a/include/uapi/asm-generic/unistd.h
+++ b/include/uapi/asm-generic/unistd.h
@@ -867,8 +867,21 @@ __SYSCALL(__NR_rseq_slice_yield, sys_rseq_slice_yield)
#define __NR_fchroot 472
__SYSCALL(__NR_fchroot, sys_fchroot)

+#define __NR_cell_create 473
+__SYSCALL(__NR_cell_create, sys_cell_create)
+#define __NR_cell_configure 474
+__SYSCALL(__NR_cell_configure, sys_cell_configure)
+#define __NR_cell_info 475
+__SYSCALL(__NR_cell_info, sys_cell_info)
+#define __NR_cell_open 476
+__SYSCALL(__NR_cell_open, sys_cell_open)
+#define __NR_cell_kill 477
+__SYSCALL(__NR_cell_kill, sys_cell_kill)
+#define __NR_pidfd_configure 478
+__SYSCALL(__NR_pidfd_configure, sys_pidfd_configure)
+
#undef __NR_syscalls
-#define __NR_syscalls 473
+#define __NR_syscalls 479

/*
* 32 bit systems traditionally used different
diff --git a/kernel/sys_ni.c b/kernel/sys_ni.c
index c8be0abaa407..e0ff9a6909fb 100644
--- a/kernel/sys_ni.c
+++ b/kernel/sys_ni.c
@@ -167,6 +167,12 @@ COND_SYSCALL_COMPAT(keyctl);
COND_SYSCALL(landlock_create_ruleset);
COND_SYSCALL(landlock_add_rule);
COND_SYSCALL(landlock_restrict_self);
+COND_SYSCALL(cell_create);
+COND_SYSCALL(cell_configure);
+COND_SYSCALL(cell_info);
+COND_SYSCALL(cell_open);
+COND_SYSCALL(cell_kill);
+COND_SYSCALL(pidfd_configure);
COND_SYSCALL(fadvise64_64);
COND_SYSCALL_COMPAT(fadvise64_64);
COND_SYSCALL(lsm_get_self_attr);
diff --git a/scripts/syscall.tbl b/scripts/syscall.tbl
index 0ab531605120..cff7843e2677 100644
--- a/scripts/syscall.tbl
+++ b/scripts/syscall.tbl
@@ -413,3 +413,9 @@
470 common listns sys_listns
471 common rseq_slice_yield sys_rseq_slice_yield
472 common fchroot sys_fchroot
+473 common cell_create sys_cell_create
+474 common cell_configure sys_cell_configure
+475 common cell_info sys_cell_info
+476 common cell_open sys_cell_open
+477 common cell_kill sys_cell_kill
+478 common pidfd_configure sys_pidfd_configure

--
2.55.0