[pve-devel] [PATCH pve-common] syscall: use mknodat instead of mknod

Kamil Trzcinski ayufan at ayufan.eu
Mon Aug 11 09:56:14 CEST 2025


On arm64 the `SYS_mknod` is not available,
replace it with use of `SYS_mknodat`.

Signed-off-by: Kamil Trzcinski <ayufan at ayufan.eu>
---
 src/PVE/Syscall.pm | 2 +-
 src/PVE/Tools.pm   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/PVE/Syscall.pm b/src/PVE/Syscall.pm
index 68e16fe..503d3fe 100644
--- a/src/PVE/Syscall.pm
+++ b/src/PVE/Syscall.pm
@@ -17,7 +17,7 @@ BEGIN {
         openat => &SYS_openat,
         close => &SYS_close,
         mkdirat => &SYS_mkdirat,
-        mknod => &SYS_mknod,
+        mknodat => &SYS_mknodat,
         faccessat => &SYS_faccessat,
         setresuid => &SYS_setresuid,
         fallocate => &SYS_fallocate,
diff --git a/src/PVE/Tools.pm b/src/PVE/Tools.pm
index fe9616e..f3c6e81 100644
--- a/src/PVE/Tools.pm
+++ b/src/PVE/Tools.pm
@@ -1817,7 +1817,7 @@ sub mkdirat($$$) {
 
 sub mknod($$$) {
     my ($filename, $mode, $dev) = @_;
-    return syscall(PVE::Syscall::mknod, $filename, int($mode), int($dev)) == 0;
+    return syscall(PVE::Syscall::mknodat, AT_FDCWD, $filename, int($mode), int($dev)) == 0;
 }
 
 sub fchownat($$$$$) {
-- 
2.47.2




More information about the pve-devel mailing list