]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
kernel-image: pass through XAT_FDROOT
authorLennart Poettering <lennart@poettering.net>
Mon, 8 Dec 2025 12:33:55 +0000 (13:33 +0100)
committerLennart Poettering <lennart@poettering.net>
Sat, 17 Jan 2026 11:37:39 +0000 (12:37 +0100)
src/shared/kernel-image.c

index ed8fde1fb21dc218007eac1819089d0fd3ed09d8..d3e18d19f41a895b8f36a41e0b36b3cbfa726e58 100644 (file)
@@ -3,6 +3,7 @@
 #include "alloc-util.h"
 #include "env-file.h"
 #include "fd-util.h"
+#include "fs-util.h"
 #include "kernel-image.h"
 #include "log.h"
 #include "pe-binary.h"
@@ -134,12 +135,12 @@ int inspect_kernel(
         _cleanup_close_ int fd = -EBADF;
         int r;
 
-        assert(dir_fd >= 0 || dir_fd == AT_FDCWD);
+        assert(dir_fd >= 0 || IN_SET(dir_fd, AT_FDCWD, XAT_FDROOT));
         assert(filename);
 
-        fd = openat(dir_fd, filename, O_RDONLY|O_CLOEXEC);
+        fd = xopenat(dir_fd, filename, O_RDONLY|O_CLOEXEC);
         if (fd < 0)
-                return log_error_errno(errno, "Failed to open kernel image file '%s': %m", filename);
+                return log_error_errno(fd, "Failed to open kernel image file '%s': %m", filename);
 
         r = pe_load_headers(fd, &dos_header, &pe_header);
         if (r == -EBADMSG) /* not a valid PE file */