From 24b0e9d128e2f467fdd5092fc60b1c1978b1379e Mon Sep 17 00:00:00 2001 From: Dov Murik Date: Mon, 28 Jun 2021 10:51:08 +0000 Subject: [PATCH] Revert "OvmfPkg/QemuKernelLoaderFsDxe: don't expose kernel command line" This reverts commit efc52d67e1573ce174d301b52fa1577d552c8441. Manually fixed conflicts in: OvmfPkg/QemuKernelLoaderFsDxe/QemuKernelLoaderFsDxe.c Note that besides re-exposing the kernel command line as a file in the synthetic filesystem, we also revert back to AllocatePool instead of AllocatePages. Cc: Laszlo Ersek Cc: Ard Biesheuvel Cc: Jordan Justen Cc: James Bottomley Cc: Tobin Feldman-Fitzthum Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3457 Signed-off-by: Dov Murik Reviewed-by: Laszlo Ersek Message-Id: <20210628105110.379951-4-dovmurik@linux.ibm.com> Tested-by: Laszlo Ersek --- OvmfPkg/QemuKernelLoaderFsDxe/QemuKernelLoaderFsDxe.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/OvmfPkg/QemuKernelLoaderFsDxe/QemuKernelLoaderFsDxe.c b/OvmfPkg/QemuKernelLoaderFsDxe/QemuKernelLoaderFsDxe.c index b09ff6a359..c7ddd86f5c 100644 --- a/OvmfPkg/QemuKernelLoaderFsDxe/QemuKernelLoaderFsDxe.c +++ b/OvmfPkg/QemuKernelLoaderFsDxe/QemuKernelLoaderFsDxe.c @@ -33,6 +33,7 @@ typedef enum { KernelBlobTypeKernel, KernelBlobTypeInitrd, + KernelBlobTypeCommandLine, KernelBlobTypeMax } KERNEL_BLOB_TYPE; @@ -59,6 +60,11 @@ STATIC KERNEL_BLOB mKernelBlob[KernelBlobTypeMax] = { { { QemuFwCfgItemInitrdSize, QemuFwCfgItemInitrdData, }, } + }, { + L"cmdline", + { + { QemuFwCfgItemCommandLineSize, QemuFwCfgItemCommandLineData, }, + } } }; @@ -948,7 +954,7 @@ FetchBlob ( // // Read blob. // - Blob->Data = AllocatePages (EFI_SIZE_TO_PAGES ((UINTN)Blob->Size)); + Blob->Data = AllocatePool (Blob->Size); if (Blob->Data == NULL) { DEBUG ((DEBUG_ERROR, "%a: failed to allocate %Ld bytes for \"%s\"\n", __FUNCTION__, (INT64)Blob->Size, Blob->Name)); @@ -1083,8 +1089,7 @@ FreeBlobs: while (BlobType > 0) { CurrentBlob = &mKernelBlob[--BlobType]; if (CurrentBlob->Data != NULL) { - FreePages (CurrentBlob->Data, - EFI_SIZE_TO_PAGES ((UINTN)CurrentBlob->Size)); + FreePool (CurrentBlob->Data); CurrentBlob->Size = 0; CurrentBlob->Data = NULL; }