提交 fa28cf92 编写于 作者: M MikeBeaton

OpenLinuxBoot: Fix crash if initrd but no vmlinuz files in autodetect dir

https://github.com/acidanthera/bugtracker/issues/1938
上级 9fe6ecb5
......@@ -11,6 +11,7 @@ OpenCore Changelog
- Added `flags+=` and `flags-=` arguments to OpenLinuxBoot to simplify setting driver flags if needed
- Fixed OpenLinuxBoot entry name disambiguation when `LINUX_BOOT_USE_LATEST` flag is clear
- Updated builtin firmware versions for SMBIOS and the rest
- Fixed crash in OpenLinuxBoot with partly (re-)installed Linux distro
#### v0.7.7
- Fixed rare crash caused by register corruption in the entry point
......
......@@ -623,18 +623,13 @@ AutodetectBootOptions (
return EFI_INVALID_PARAMETER;
}
//
// Standard attached drives on OVMF appear as MBR, so it can be convenient when
// debugging to allow entries with incorrect (i.e. specifies no/every drive)
// root=... on NOOPT debugging build.
//
//#if !defined(OC_TARGET_NOOPT)
#if !defined(LINUX_ALLOW_MBR)
if (CompareGuid (&gPartuuid, &gEfiPartTypeUnusedGuid)) {
Status = EFI_UNSUPPORTED;
DEBUG ((DEBUG_WARN, "LNX: Cannot autodetect root on MBR partition - %r\n", Status));
return Status;
}
//#endif
#endif
//
// Insert "root=PARTUUID=..." option, followed by "ro" if requested, only if we get to here.
......@@ -682,6 +677,8 @@ GenerateEntriesForVmlinuzFiles (
BOOLEAN IsRescue;
ASSERT (DirectoryPath != NULL);
ASSERT (mVmlinuzFiles->Count > 0);
DirectoryPathLength = StrLen (DirectoryPath);
for (VmlinuzIndex = 0; VmlinuzIndex < mVmlinuzFiles->Count; VmlinuzIndex++) {
......@@ -851,6 +848,13 @@ InternalAutodetectLinux (
//
if (!EFI_ERROR (Status)) {
Status = OcScanDirectory (VmlinuzDirectory, ProcessVmlinuzFile, NULL);
if (!EFI_ERROR (Status) && mVmlinuzFiles->Count == 0) {
//
// If initrd files but no vmlinuz files are present in autodetect dir.
//
Status = EFI_NOT_FOUND;
}
}
if (!EFI_ERROR (Status)) {
......
......@@ -10,6 +10,13 @@
#define OC_TRACE_GRUB_VARS DEBUG_VERBOSE
#endif
/*
Standard attached drives on OVMF appear as MBR, so it can be convenient when
debugging to allow entries with incorrect (i.e. specifies no/every drive)
root=... .
*/
//#define LINUX_ALLOW_MBR
#include <Uefi.h>
#include <Library/OcBootManagementLib.h>
#include <Library/OcMiscLib.h>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册