X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=OvmfPkg%2FVirtioFsDxe%2FSimpleFsDelete.c;h=e745c4e25210b8fd3e489edb0e11d38d8e1066e9;hp=76a868b3c24df182281a34780fb7df3fa4fc68bc;hb=ac0a286f4d747a4c6c603a7b225917293cbe1e9f;hpb=d1050b9dff1cace252aff86630bfdb59dff5f507 diff --git a/OvmfPkg/VirtioFsDxe/SimpleFsDelete.c b/OvmfPkg/VirtioFsDxe/SimpleFsDelete.c index 76a868b3c2..e745c4e252 100644 --- a/OvmfPkg/VirtioFsDxe/SimpleFsDelete.c +++ b/OvmfPkg/VirtioFsDxe/SimpleFsDelete.c @@ -14,12 +14,12 @@ EFI_STATUS EFIAPI VirtioFsSimpleFileDelete ( - IN EFI_FILE_PROTOCOL *This + IN EFI_FILE_PROTOCOL *This ) { - VIRTIO_FS_FILE *VirtioFsFile; - VIRTIO_FS *VirtioFs; - EFI_STATUS Status; + VIRTIO_FS_FILE *VirtioFsFile; + VIRTIO_FS *VirtioFs; + EFI_STATUS Status; VirtioFsFile = VIRTIO_FS_FILE_FROM_SIMPLE_FILE (This); VirtioFs = VirtioFsFile->OwnerFs; @@ -38,8 +38,12 @@ VirtioFsSimpleFileDelete ( // // If any action fails below, we still try the others. // - VirtioFsFuseReleaseFileOrDir (VirtioFs, VirtioFsFile->NodeId, - VirtioFsFile->FuseHandle, VirtioFsFile->IsDirectory); + VirtioFsFuseReleaseFileOrDir ( + VirtioFs, + VirtioFsFile->NodeId, + VirtioFsFile->FuseHandle, + VirtioFsFile->IsDirectory + ); // // VirtioFsFile->FuseHandle is gone at this point, but VirtioFsFile->NodeId @@ -47,8 +51,8 @@ VirtioFsSimpleFileDelete ( // of this operation determines the return status of the function. // if (VirtioFsFile->IsOpenForWriting) { - UINT64 ParentNodeId; - CHAR8 *LastComponent; + UINT64 ParentNodeId; + CHAR8 *LastComponent; // // Split our canonical pathname into most specific parent directory @@ -78,6 +82,7 @@ VirtioFsSimpleFileDelete ( VirtioFsFuseForget (VirtioFs, ParentNodeId); } } + if (EFI_ERROR (Status)) { // // Map any failure to the spec-mandated warning code. @@ -105,6 +110,7 @@ VirtioFsSimpleFileDelete ( if (VirtioFsFile->FileInfoArray != NULL) { FreePool (VirtioFsFile->FileInfoArray); } + FreePool (VirtioFsFile); return Status; }