From 178d598b5fae36fa9d54c30668771f9c626724f6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alfonso=20S=C3=A1nchez-Beato?= Date: Thu, 3 Mar 2022 11:42:41 +0100 Subject: [PATCH] sd-stub: do not print warning if filesystem is not supported Do not print a warning in case we try to load the file system protocol for an unsupported file system, just return EFI_SUCCESS instead. --- src/boot/efi/cpio.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/boot/efi/cpio.c b/src/boot/efi/cpio.c index 258755366e..2855c4119b 100644 --- a/src/boot/efi/cpio.c +++ b/src/boot/efi/cpio.c @@ -324,6 +324,7 @@ EFI_STATUS pack_cpio( _cleanup_freepool_ void *buffer = NULL; UINT32 inode = 1; /* inode counter, so that each item gets a new inode */ EFI_STATUS err; + EFI_FILE_IO_INTERFACE *volume; assert(loaded_image); assert(target_dir_prefix); @@ -336,9 +337,24 @@ EFI_STATUS pack_cpio( return EFI_SUCCESS; } - root = LibOpenRoot(loaded_image->DeviceHandle); - if (!root) - return log_error_status_stall(EFI_LOAD_ERROR, L"Unable to open root directory."); + err = BS->HandleProtocol(loaded_image->DeviceHandle, + &FileSystemProtocol, (void*)&volume); + /* Error will be unsupported if the bootloader doesn't implement the + * file system protocol on its file handles. + */ + if (err == EFI_UNSUPPORTED) { + *ret_buffer = NULL; + *ret_buffer_size = 0; + return EFI_SUCCESS; + } + if (EFI_ERROR(err)) + return log_error_status_stall( + err, L"Unable to load file system protocol: %r", err); + + err = volume->OpenVolume(volume, &root); + if (EFI_ERROR(err)) + return log_error_status_stall( + err, L"Unable to open root directory: %r", err); if (!dropin_dir) dropin_dir = rel_dropin_dir = xpool_print(L"%D.extra.d", loaded_image->FilePath); -- 2.25.1