VIRTIO_FS *VirtioFs;\r
VIRTIO_FS_FILE *VirtioFsFile;\r
EFI_STATUS Status;\r
+ CHAR8 *CanonicalPathname;\r
UINT64 RootDirHandle;\r
\r
VirtioFs = VIRTIO_FS_FROM_SIMPLE_FS (This);\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
+ CanonicalPathname = AllocateCopyPool (sizeof "/", "/");\r
+ if (CanonicalPathname == NULL) {\r
+ Status = EFI_OUT_OF_RESOURCES;\r
+ goto FreeVirtioFsFile;\r
+ }\r
+\r
//\r
// Open the root directory.\r
//\r
Status = VirtioFsFuseOpenDir (VirtioFs, VIRTIO_FS_FUSE_ROOT_DIR_NODE_ID,\r
&RootDirHandle);\r
if (EFI_ERROR (Status)) {\r
- goto FreeVirtioFsFile;\r
+ goto FreeCanonicalPathname;\r
}\r
\r
//\r
VirtioFsFile->IsDirectory = TRUE;\r
VirtioFsFile->IsOpenForWriting = FALSE;\r
VirtioFsFile->OwnerFs = VirtioFs;\r
+ VirtioFsFile->CanonicalPathname = CanonicalPathname;\r
VirtioFsFile->NodeId = VIRTIO_FS_FUSE_ROOT_DIR_NODE_ID;\r
VirtioFsFile->FuseHandle = RootDirHandle;\r
\r
*Root = &VirtioFsFile->SimpleFile;\r
return EFI_SUCCESS;\r
\r
+FreeCanonicalPathname:\r
+ FreePool (CanonicalPathname);\r
+\r
FreeVirtioFsFile:\r
FreePool (VirtioFsFile);\r
\r
BOOLEAN IsOpenForWriting;\r
VIRTIO_FS *OwnerFs;\r
LIST_ENTRY OpenFilesEntry;\r
+ CHAR8 *CanonicalPathname;\r
//\r
// In the FUSE wire protocol, every request except FUSE_INIT refers to a\r
// file, namely by the "VIRTIO_FS_FUSE_REQUEST.NodeId" field; that is, by the\r