Coverage Report

Created: 2025-12-05 07:03

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioBlkDxe/TestVirtioBlk.c
Line
Count
Source
1
/** @file
2
3
Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
4
SPDX-License-Identifier: BSD-2-Clause-Patent
5
6
**/
7
8
#include <stdio.h>
9
#include <stdlib.h>
10
#include <string.h>
11
#include <assert.h>
12
13
#include <Uefi.h>
14
15
#include <Library/BaseLib.h>
16
#include <Library/DebugLib.h>
17
#include <Library/BaseMemoryLib.h>
18
#include <Library/MemoryAllocationLib.h>
19
#include <Library/VirtioBlkStubLib.h>
20
#include <Library/VirtioPciDeviceStubLib.h>
21
22
2.80k
#define TOTAL_SIZE   (512 * 1024)
23
#define BLOCK_SIZE   (512)
24
#define IO_ALIGN     (1)
25
26
UINTN
27
EFIAPI
28
GetMaxBufferSize (
29
  VOID
30
  )
31
2.80k
{
32
2.80k
  return TOTAL_SIZE;
33
2.80k
}
34
35
VOID
36
EFIAPI
37
RunTestHarness(
38
  IN VOID  *TestBuffer,
39
  IN UINTN TestBufferSize
40
  )
41
571
{
42
571
  VBLK_DEV                        *VblkDev;
43
571
  VIRTIO_PCI_DEVICE               *VirtioDev;
44
571
  EFI_PCI_IO_PROTOCOL             *PciIo;
45
571
  VOID                            *ConfigRegion;
46
571
  EFI_STATUS                      Status;
47
48
571
  VirtioDev = (VIRTIO_PCI_DEVICE *) AllocateZeroPool (sizeof *VirtioDev);
49
571
  VblkDev = (VBLK_DEV *) AllocateZeroPool (sizeof *VblkDev);
50
571
  PciIo = (EFI_PCI_IO_PROTOCOL *)AllocateZeroPool(sizeof (*PciIo));
51
571
  ConfigRegion = (VOID *) AllocatePool(sizeof (PCI_CFG_SPACE) + sizeof(VIRTIO_HDR) + sizeof (VIRTIO_BLK_CONFIG));
52
53
571
  Status = ParseBufferAndInitVirtioPciDev (TestBuffer, TestBufferSize, PciIo, ConfigRegion, VirtioDev);
54
55
571
  if (!EFI_ERROR(Status)) {
56
315
    if (VirtioDev->VirtioDevice.SubSystemDeviceId == VIRTIO_SUBSYSTEM_BLOCK_DEVICE) {
57
291
      VblkDev->Signature = VBLK_SIG;
58
291
      VblkDev->VirtIo = &VirtioDev->VirtioDevice;
59
291
      VirtioBlkInit (VblkDev);
60
291
    }
61
315
  }
62
  
63
571
  FreePool (ConfigRegion);
64
571
  FreePool (VirtioDev);
65
571
  FreePool (VblkDev); 
66
571
  FreePool (PciIo);
67
571
}