EFI_STATUS Status;\r
UNIX_SIMPLE_FILE_SYSTEM_PRIVATE *Private;\r
UNIX_EFI_FILE_PRIVATE *PrivateFile;\r
+ EFI_TPL OldTpl;\r
\r
if (This == NULL || Root == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
+ OldTpl = gBS->RaiseTPL (EFI_TPL_CALLBACK);\r
\r
Private = UNIX_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS (This);\r
\r
}\r
}\r
\r
+ gBS->RestoreTPL (OldTpl);\r
+\r
return Status;\r
}\r
\r
BOOLEAN LoopFinish;\r
UINTN InfoSize;\r
EFI_FILE_INFO *Info;\r
- EFI_TPL OldTpl;\r
\r
TrailingDash = FALSE;\r
\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
- OldTpl = gBS->RaiseTPL (EFI_TPL_CALLBACK);\r
\r
PrivateFile = UNIX_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
PrivateRoot = UNIX_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS (PrivateFile->SimpleFileSystem);\r
*NewHandle = &NewPrivateFile->EfiFile;\r
}\r
\r
- gBS->RestoreTPL (OldTpl);\r
-\r
return Status;\r
}\r
\r
gBS->FreePool (PrivateFile->FileName);\r
gBS->FreePool (PrivateFile);\r
\r
+ gBS->RestoreTPL (OldTpl);\r
+\r
return Status;\r
}\r
\r
if (!PrivateFile->IsDirectoryPath) {\r
\r
if (PrivateFile->fd < 0) {\r
- return EFI_DEVICE_ERROR;\r
+ Status = EFI_DEVICE_ERROR;\r
+ goto Done;\r
}\r
\r
Res = PrivateFile->UnixThunk->Read (\r
PrivateFile->fd,\r
Buffer,\r
*BufferSize);\r
- if (Res < 0)\r
- return EFI_DEVICE_ERROR;\r
+ if (Res < 0) {\r
+ Status = EFI_DEVICE_ERROR;\r
+ goto Done;\r
+ }\r
*BufferSize = Res;\r
- return EFI_SUCCESS;\r
+ Status = EFI_SUCCESS;\r
+ goto Done;\r
}\r
\r
//\r
// Read on a directory.\r
//\r
if (PrivateFile->Dir == NULL) {\r
- return EFI_DEVICE_ERROR;\r
+ Status = EFI_DEVICE_ERROR;\r
+ goto Done;\r
}\r
\r
if (PrivateFile->Dirent == NULL) {\r
PrivateFile->Dirent = PrivateFile->UnixThunk->ReadDir (PrivateFile->Dir);\r
if (PrivateFile->Dirent == NULL) {\r
*BufferSize = 0;\r
- return EFI_SUCCESS;\r
+ Status = EFI_SUCCESS;\r
+ goto Done;\r
}\r
}\r
\r
\r
if (*BufferSize < ResultSize) {\r
*BufferSize = ResultSize;\r
- return EFI_BUFFER_TOO_SMALL;\r
+ Status = EFI_BUFFER_TOO_SMALL;\r
+ goto Done;\r
}\r
Status = EFI_SUCCESS;\r
\r
);\r
\r
if (EFI_ERROR (Status)) {\r
- return Status;\r
+ goto Done;\r
}\r
\r
AsciiStrCpy(FullFileName, PrivateFile->FileName);\r
\r
PrivateFile->Dirent = NULL;\r
\r
+Done:\r
+ gBS->RestoreTPL (OldTpl);\r
+\r
return Status;\r
}\r
\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
+ OldTpl = gBS->RaiseTPL (EFI_TPL_CALLBACK);\r
+\r
PrivateFile = UNIX_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
\r
if (PrivateFile->fd < 0) {\r
return EFI_ACCESS_DENIED;\r
}\r
\r
- OldTpl = gBS->RaiseTPL (EFI_TPL_CALLBACK);\r
- \r
Res = PrivateFile->UnixThunk->Write (\r
PrivateFile->fd,\r
Buffer,\r