From f796c60e6e7b9130960ee0982feb25ca4994df2a Mon Sep 17 00:00:00 2001 From: Philipp Schuster Date: Mon, 13 Apr 2026 09:14:35 +0200 Subject: [PATCH] OvmfPkg/VirtioBlkDxe: protect SynchronousRequest against interrupts (e.g., timer) --- OvmfPkg/VirtioBlkDxe/VirtioBlk.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/OvmfPkg/VirtioBlkDxe/VirtioBlk.c b/OvmfPkg/VirtioBlkDxe/VirtioBlk.c index f881cde4c5db..3bee2229c088 100644 --- a/OvmfPkg/VirtioBlkDxe/VirtioBlk.c +++ b/OvmfPkg/VirtioBlkDxe/VirtioBlk.c @@ -253,6 +253,7 @@ SynchronousRequest ( EFI_PHYSICAL_ADDRESS RequestDeviceAddress; EFI_STATUS Status; EFI_STATUS UnmapStatus; + EFI_TPL CurrentTpl; BlockSize = Dev->BlockIoMedia.BlockSize; @@ -365,6 +366,8 @@ SynchronousRequest ( goto UnmapDataBuffer; } + CurrentTpl = gBS->RaiseTPL (TPL_NOTIFY); + VirtioPrepare (&Dev->Ring, &Indices); // @@ -438,6 +441,7 @@ SynchronousRequest ( Status = EFI_DEVICE_ERROR; } + gBS->RestoreTPL (CurrentTpl); Dev->VirtIo->UnmapSharedBuffer (Dev->VirtIo, StatusMapping); UnmapDataBuffer: