mirror of https://github.com/acidanthera/audk.git
OvmfPkg/QemuKernelLoaderFsDxe: don't expose kernel command line
We have no need for exposing the kernel command line as a file, so remove support for that. Since the remaining blobs (kernel and initrd) are typically much larger than a page, switch to the page based allocator for blobs at the same time. Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2566 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
This commit is contained in:
parent
364e0b4cda
commit
efc52d67e1
|
@ -30,7 +30,6 @@
|
||||||
typedef enum {
|
typedef enum {
|
||||||
KernelBlobTypeKernel,
|
KernelBlobTypeKernel,
|
||||||
KernelBlobTypeInitrd,
|
KernelBlobTypeInitrd,
|
||||||
KernelBlobTypeCommandLine,
|
|
||||||
KernelBlobTypeMax
|
KernelBlobTypeMax
|
||||||
} KERNEL_BLOB_TYPE;
|
} KERNEL_BLOB_TYPE;
|
||||||
|
|
||||||
|
@ -45,7 +44,6 @@ typedef struct {
|
||||||
STATIC KERNEL_BLOB mKernelBlob[KernelBlobTypeMax] = {
|
STATIC KERNEL_BLOB mKernelBlob[KernelBlobTypeMax] = {
|
||||||
{ QemuFwCfgItemKernelSize, QemuFwCfgItemKernelData, L"kernel" },
|
{ QemuFwCfgItemKernelSize, QemuFwCfgItemKernelData, L"kernel" },
|
||||||
{ QemuFwCfgItemInitrdSize, QemuFwCfgItemInitrdData, L"initrd" },
|
{ QemuFwCfgItemInitrdSize, QemuFwCfgItemInitrdData, L"initrd" },
|
||||||
{ QemuFwCfgItemCommandLineSize, QemuFwCfgItemCommandLineData, L"cmdline" }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
STATIC UINT64 mTotalBlobBytes;
|
STATIC UINT64 mTotalBlobBytes;
|
||||||
|
@ -865,7 +863,7 @@ FetchBlob (
|
||||||
//
|
//
|
||||||
// Read blob.
|
// Read blob.
|
||||||
//
|
//
|
||||||
Blob->Data = AllocatePool (Blob->Size);
|
Blob->Data = AllocatePages (EFI_SIZE_TO_PAGES ((UINTN)Blob->Size));
|
||||||
if (Blob->Data == NULL) {
|
if (Blob->Data == NULL) {
|
||||||
DEBUG ((DEBUG_ERROR, "%a: failed to allocate %Ld bytes for \"%s\"\n",
|
DEBUG ((DEBUG_ERROR, "%a: failed to allocate %Ld bytes for \"%s\"\n",
|
||||||
__FUNCTION__, (INT64)Blob->Size, Blob->Name));
|
__FUNCTION__, (INT64)Blob->Size, Blob->Name));
|
||||||
|
@ -969,7 +967,8 @@ FreeBlobs:
|
||||||
while (BlobType > 0) {
|
while (BlobType > 0) {
|
||||||
CurrentBlob = &mKernelBlob[--BlobType];
|
CurrentBlob = &mKernelBlob[--BlobType];
|
||||||
if (CurrentBlob->Data != NULL) {
|
if (CurrentBlob->Data != NULL) {
|
||||||
FreePool (CurrentBlob->Data);
|
FreePages (CurrentBlob->Data,
|
||||||
|
EFI_SIZE_TO_PAGES ((UINTN)CurrentBlob->Size));
|
||||||
CurrentBlob->Size = 0;
|
CurrentBlob->Size = 0;
|
||||||
CurrentBlob->Data = NULL;
|
CurrentBlob->Data = NULL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue