git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2449
6f19259b-4bc3-4df7-8a09-
765794883524
-Copyright (c) 2004 - 2005, Intel Corporation \r
+Copyright (c) 2004 - 2007, Intel Corporation \r
All rights reserved. This program and the accompanying materials \r
are licensed and made available under the terms and conditions of the BSD License \r
which accompanies this distribution. The full text of the license may be found at \r
All rights reserved. This program and the accompanying materials \r
are licensed and made available under the terms and conditions of the BSD License \r
which accompanies this distribution. The full text of the license may be found at \r
UNIX_BLOCK_IO_PRIVATE *Private;\r
ssize_t len;\r
EFI_STATUS Status;\r
UNIX_BLOCK_IO_PRIVATE *Private;\r
ssize_t len;\r
EFI_STATUS Status;\r
+ EFI_TPL OldTpl;\r
+\r
+ OldTpl = gBS->RaiseTPL (EFI_TPL_CALLBACK);\r
\r
Private = UNIX_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This);\r
\r
Status = UnixBlockIoReadWriteCommon (Private, MediaId, Lba, BufferSize, Buffer, "UnixReadBlocks");\r
if (EFI_ERROR (Status)) {\r
\r
Private = UNIX_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This);\r
\r
Status = UnixBlockIoReadWriteCommon (Private, MediaId, Lba, BufferSize, Buffer, "UnixReadBlocks");\r
if (EFI_ERROR (Status)) {\r
}\r
\r
len = Private->UnixThunk->Read (Private->fd, Buffer, BufferSize);\r
if (len != BufferSize) {\r
DEBUG ((EFI_D_INIT, "ReadBlocks: ReadFile failed.\n"));\r
}\r
\r
len = Private->UnixThunk->Read (Private->fd, Buffer, BufferSize);\r
if (len != BufferSize) {\r
DEBUG ((EFI_D_INIT, "ReadBlocks: ReadFile failed.\n"));\r
- return UnixBlockIoError (Private);\r
+ Status = UnixBlockIoError (Private);\r
+ goto Done;\r
}\r
\r
//\r
// If we wrote then media is present.\r
//\r
This->Media->MediaPresent = TRUE;\r
}\r
\r
//\r
// If we wrote then media is present.\r
//\r
This->Media->MediaPresent = TRUE;\r
+ Status = EFI_SUCCESS;\r
+\r
+ gBS->RestoreTPL (OldTpl);\r
+ return Status;\r
UNIX_BLOCK_IO_PRIVATE *Private;\r
ssize_t len;\r
EFI_STATUS Status;\r
UNIX_BLOCK_IO_PRIVATE *Private;\r
ssize_t len;\r
EFI_STATUS Status;\r
+ EFI_TPL OldTpl;\r
+\r
+ OldTpl = gBS->RaiseTPL (EFI_TPL_CALLBACK);\r
\r
Private = UNIX_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This);\r
\r
Status = UnixBlockIoReadWriteCommon (Private, MediaId, Lba, BufferSize, Buffer, "UnixWriteBlocks");\r
if (EFI_ERROR (Status)) {\r
\r
Private = UNIX_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This);\r
\r
Status = UnixBlockIoReadWriteCommon (Private, MediaId, Lba, BufferSize, Buffer, "UnixWriteBlocks");\r
if (EFI_ERROR (Status)) {\r
}\r
\r
len = Private->UnixThunk->Write (Private->fd, Buffer, BufferSize);\r
if (len != BufferSize) {\r
DEBUG ((EFI_D_INIT, "ReadBlocks: WriteFile failed.\n"));\r
}\r
\r
len = Private->UnixThunk->Write (Private->fd, Buffer, BufferSize);\r
if (len != BufferSize) {\r
DEBUG ((EFI_D_INIT, "ReadBlocks: WriteFile failed.\n"));\r
- return UnixBlockIoError (Private);\r
+ Status = UnixBlockIoError (Private);\r
+ goto Done;\r
//\r
This->Media->MediaPresent = TRUE;\r
This->Media->ReadOnly = FALSE;\r
//\r
This->Media->MediaPresent = TRUE;\r
This->Media->ReadOnly = FALSE;\r
+ Status = EFI_SUCCESS;\r
+\r
+Done:\r
+ gBS->RestoreTPL (OldTpl);\r
+ return Status;\r
--*/\r
{\r
UNIX_BLOCK_IO_PRIVATE *Private;\r
--*/\r
{\r
UNIX_BLOCK_IO_PRIVATE *Private;\r
+ OldTpl = gBS->RaiseTPL (EFI_TPL_CALLBACK);\r
+ \r
Private = UNIX_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This);\r
\r
if (Private->fd >= 0) {\r
Private = UNIX_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This);\r
\r
if (Private->fd >= 0) {\r
Private->fd = -1;\r
}\r
\r
Private->fd = -1;\r
}\r
\r
+ gBS->RestoreTPL (OldTpl);\r
+\r
return EFI_SUCCESS;\r
}\r
\r
return EFI_SUCCESS;\r
}\r
\r
-Copyright (c) 2006, Intel Corporation \r
+Copyright (c) 2006 - 2007, Intel Corporation \r
All rights reserved. This program and the accompanying materials \r
are licensed and made available under the terms and conditions of the BSD License \r
which accompanies this distribution. The full text of the license may be found at \r
All rights reserved. This program and the accompanying materials \r
are licensed and made available under the terms and conditions of the BSD License \r
which accompanies this distribution. The full text of the license may be found at \r
CHAR16 *Src;\r
char *Dst;\r
CHAR8 *RealFileName;\r
CHAR16 *Src;\r
char *Dst;\r
CHAR8 *RealFileName;\r
- //CHAR16 *TempFileName;\r
char *ParseFileName;\r
char *GuardPointer;\r
CHAR8 TempChar;\r
char *ParseFileName;\r
char *GuardPointer;\r
CHAR8 TempChar;\r
BOOLEAN LoopFinish;\r
UINTN InfoSize;\r
EFI_FILE_INFO *Info;\r
BOOLEAN LoopFinish;\r
UINTN InfoSize;\r
EFI_FILE_INFO *Info;\r
\r
TrailingDash = FALSE;\r
\r
\r
TrailingDash = FALSE;\r
\r
return EFI_INVALID_PARAMETER;\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
PrivateRoot = UNIX_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS (PrivateFile->SimpleFileSystem);\r
NewPrivateFile = NULL;\r
PrivateFile = UNIX_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
PrivateRoot = UNIX_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS (PrivateFile->SimpleFileSystem);\r
NewPrivateFile = NULL;\r
*NewHandle = &NewPrivateFile->EfiFile;\r
}\r
\r
*NewHandle = &NewPrivateFile->EfiFile;\r
}\r
\r
+ gBS->RestoreTPL (OldTpl);\r
+\r
// TODO: EFI_INVALID_PARAMETER - add return value to function comment\r
{\r
UNIX_EFI_FILE_PRIVATE *PrivateFile;\r
// TODO: EFI_INVALID_PARAMETER - add return value to function comment\r
{\r
UNIX_EFI_FILE_PRIVATE *PrivateFile;\r
\r
if (This == NULL) {\r
return EFI_INVALID_PARAMETER;\r
\r
if (This == NULL) {\r
return EFI_INVALID_PARAMETER;\r
\r
PrivateFile = UNIX_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
\r
\r
PrivateFile = UNIX_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
\r
+ OldTpl = gBS->RaiseTPL (EFI_TPL_CALLBACK);\r
+\r
if (PrivateFile->fd >= 0) {\r
PrivateFile->UnixThunk->Close (PrivateFile->fd);\r
}\r
if (PrivateFile->fd >= 0) {\r
PrivateFile->UnixThunk->Close (PrivateFile->fd);\r
}\r
}\r
\r
gBS->FreePool (PrivateFile);\r
}\r
\r
gBS->FreePool (PrivateFile);\r
+\r
+ gBS->RestoreTPL (OldTpl);\r
+ \r
return EFI_SUCCESS;\r
}\r
\r
return EFI_SUCCESS;\r
}\r
\r
// TODO: EFI_INVALID_PARAMETER - add return value to function comment\r
{\r
EFI_STATUS Status;\r
// TODO: EFI_INVALID_PARAMETER - add return value to function comment\r
{\r
EFI_STATUS Status;\r
- UNIX_EFI_FILE_PRIVATE *PrivateFile;\r
+ UNIX_EFI_FILE_PRIVATE *PrivateFile;\r
+ EFI_TPL OldTpl;\r
\r
if (This == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
\r
if (This == NULL) {\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
Status = EFI_WARN_DELETE_FAILURE;\r
PrivateFile = UNIX_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
\r
Status = EFI_WARN_DELETE_FAILURE;\r
UINTN NameSize;\r
UINTN ResultSize;\r
CHAR8 *FullFileName;\r
UINTN NameSize;\r
UINTN ResultSize;\r
CHAR8 *FullFileName;\r
\r
if (This == NULL || BufferSize == NULL || Buffer == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
\r
if (This == NULL || BufferSize == NULL || Buffer == NULL) {\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->IsDirectoryPath) {\r
PrivateFile = UNIX_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
\r
if (!PrivateFile->IsDirectoryPath) {\r
// TODO: EFI_INVALID_PARAMETER - add return value to function comment\r
{\r
UNIX_EFI_FILE_PRIVATE *PrivateFile;\r
// TODO: EFI_INVALID_PARAMETER - add return value to function comment\r
{\r
UNIX_EFI_FILE_PRIVATE *PrivateFile;\r
+ UINTN Res;\r
+ EFI_STATUS Status;\r
+ EFI_TPL OldTpl;\r
\r
if (This == NULL || BufferSize == NULL || Buffer == NULL) {\r
return EFI_INVALID_PARAMETER;\r
\r
if (This == NULL || BufferSize == NULL || Buffer == NULL) {\r
return EFI_INVALID_PARAMETER;\r
return EFI_ACCESS_DENIED;\r
}\r
\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
*BufferSize);\r
Res = PrivateFile->UnixThunk->Write (\r
PrivateFile->fd,\r
Buffer,\r
*BufferSize);\r
- if (Res == (UINTN)-1)\r
- return EFI_DEVICE_ERROR;\r
+ if (Res == (UINTN)-1) {\r
+ Status = EFI_DEVICE_ERROR;\r
+ goto Done;\r
+ }\r
+ Status = EFI_SUCCESS;\r
+\r
+Done:\r
+ gBS->RestoreTPL (OldTpl);\r
+ return Status;\r
\r
//\r
// bugbug: need to access unix error reporting\r
\r
//\r
// bugbug: need to access unix error reporting\r
EFI_STATUS Status;\r
UNIX_EFI_FILE_PRIVATE *PrivateFile;\r
UINT64 Pos;\r
EFI_STATUS Status;\r
UNIX_EFI_FILE_PRIVATE *PrivateFile;\r
UINT64 Pos;\r
\r
if (This == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
\r
if (This == NULL) {\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->IsDirectoryPath) {\r
if (Position != 0) {\r
PrivateFile = UNIX_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
\r
if (PrivateFile->IsDirectoryPath) {\r
if (Position != 0) {\r
- return EFI_UNSUPPORTED;\r
+ Status = EFI_UNSUPPORTED;\r
+ goto Done;\r
}\r
\r
if (PrivateFile->Dir == NULL) {\r
}\r
\r
if (PrivateFile->Dir == NULL) {\r
- return EFI_DEVICE_ERROR;\r
+ Status = EFI_DEVICE_ERROR;\r
+ goto Done;\r
}\r
PrivateFile->UnixThunk->RewindDir (PrivateFile->Dir);\r
}\r
PrivateFile->UnixThunk->RewindDir (PrivateFile->Dir);\r
+ Status = EFI_SUCCESS;\r
+ goto Done;\r
} else {\r
if (Position == (UINT64) -1) {\r
Pos = PrivateFile->UnixThunk->Lseek (PrivateFile->fd, 0, SEEK_END);\r
} else {\r
if (Position == (UINT64) -1) {\r
Pos = PrivateFile->UnixThunk->Lseek (PrivateFile->fd, 0, SEEK_END);\r
Pos = PrivateFile->UnixThunk->Lseek (PrivateFile->fd, Position, SEEK_SET);\r
}\r
Status = (Pos == (UINT64) -1) ? EFI_DEVICE_ERROR : EFI_SUCCESS;\r
Pos = PrivateFile->UnixThunk->Lseek (PrivateFile->fd, Position, SEEK_SET);\r
}\r
Status = (Pos == (UINT64) -1) ? EFI_DEVICE_ERROR : EFI_SUCCESS;\r
+Done:\r
+ gBS->RestoreTPL (OldTpl);\r
--*/\r
// TODO: EFI_INVALID_PARAMETER - add return value to function comment\r
{\r
--*/\r
// TODO: EFI_INVALID_PARAMETER - add return value to function comment\r
{\r
UNIX_EFI_FILE_PRIVATE *PrivateFile;\r
UNIX_EFI_FILE_PRIVATE *PrivateFile;\r
\r
if (This == NULL || Position == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
\r
if (This == NULL || Position == NULL) {\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->IsDirectoryPath) {\r
PrivateFile = UNIX_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
\r
if (PrivateFile->IsDirectoryPath) {\r
- return EFI_UNSUPPORTED;\r
+ Status = EFI_UNSUPPORTED;\r
} else {\r
*Position = PrivateFile->UnixThunk->Lseek (PrivateFile->fd, 0, SEEK_CUR);\r
} else {\r
*Position = PrivateFile->UnixThunk->Lseek (PrivateFile->fd, 0, SEEK_CUR);\r
- return (*Position == (UINT64) -1) ? EFI_DEVICE_ERROR : EFI_SUCCESS;\r
+ Status = (*Position == (UINT64) -1) ? EFI_DEVICE_ERROR : EFI_SUCCESS;\r
+\r
+Done:\r
+ OldTpl = gBS->RaiseTPL (EFI_TPL_CALLBACK);\r
+ return Status;\r
INTN UnixStatus;\r
UNIX_SIMPLE_FILE_SYSTEM_PRIVATE *PrivateRoot;\r
struct statfs buf;\r
INTN UnixStatus;\r
UNIX_SIMPLE_FILE_SYSTEM_PRIVATE *PrivateRoot;\r
struct statfs buf;\r
\r
if (This == NULL || InformationType == NULL || BufferSize == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
\r
if (This == NULL || InformationType == NULL || BufferSize == NULL) {\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
\r
PrivateFile = UNIX_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
PrivateRoot = UNIX_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS (PrivateFile->SimpleFileSystem);\r
\r
\r
if (CompareGuid (InformationType, &gEfiFileInfoGuid)) {\r
Status = UnixSimpleFileSystemFileInfo (PrivateFile, NULL, BufferSize, Buffer);\r
\r
if (CompareGuid (InformationType, &gEfiFileInfoGuid)) {\r
Status = UnixSimpleFileSystemFileInfo (PrivateFile, NULL, BufferSize, Buffer);\r
- }\r
- else if (CompareGuid (InformationType, &gEfiFileSystemInfoGuid)) {\r
+ } else if (CompareGuid (InformationType, &gEfiFileSystemInfoGuid)) {\r
if (*BufferSize < SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize (PrivateRoot->VolumeLabel)) {\r
*BufferSize = SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize (PrivateRoot->VolumeLabel);\r
if (*BufferSize < SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize (PrivateRoot->VolumeLabel)) {\r
*BufferSize = SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize (PrivateRoot->VolumeLabel);\r
- return EFI_BUFFER_TOO_SMALL;\r
+ Status = EFI_BUFFER_TOO_SMALL;\r
+ goto Done;\r
}\r
\r
UnixStatus = PrivateFile->UnixThunk->StatFs (PrivateFile->FileName, &buf);\r
}\r
\r
UnixStatus = PrivateFile->UnixThunk->StatFs (PrivateFile->FileName, &buf);\r
- if (UnixStatus < 0)\r
- return EFI_DEVICE_ERROR;\r
+ if (UnixStatus < 0) {\r
+ Status = EFI_DEVICE_ERROR;\r
+ goto Done;\r
+ }\r
\r
FileSystemInfoBuffer = (EFI_FILE_SYSTEM_INFO *) Buffer;\r
FileSystemInfoBuffer->Size = SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize (PrivateRoot->VolumeLabel);\r
\r
FileSystemInfoBuffer = (EFI_FILE_SYSTEM_INFO *) Buffer;\r
FileSystemInfoBuffer->Size = SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize (PrivateRoot->VolumeLabel);\r
StrCpy ((CHAR16 *) FileSystemInfoBuffer->VolumeLabel, PrivateRoot->VolumeLabel);\r
*BufferSize = SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize (PrivateRoot->VolumeLabel);\r
Status = EFI_SUCCESS;\r
StrCpy ((CHAR16 *) FileSystemInfoBuffer->VolumeLabel, PrivateRoot->VolumeLabel);\r
*BufferSize = SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize (PrivateRoot->VolumeLabel);\r
Status = EFI_SUCCESS;\r
- }\r
-\r
- else if (CompareGuid (InformationType,\r
- &gEfiFileSystemVolumeLabelInfoIdGuid)) {\r
+ } else if (CompareGuid (InformationType, &gEfiFileSystemVolumeLabelInfoIdGuid){\r
if (*BufferSize < StrSize (PrivateRoot->VolumeLabel)) {\r
*BufferSize = StrSize (PrivateRoot->VolumeLabel);\r
if (*BufferSize < StrSize (PrivateRoot->VolumeLabel)) {\r
*BufferSize = StrSize (PrivateRoot->VolumeLabel);\r
- return EFI_BUFFER_TOO_SMALL;\r
+ Status = EFI_BUFFER_TOO_SMALL;\r
+ goto Done;\r
}\r
\r
StrCpy ((CHAR16 *) Buffer, PrivateRoot->VolumeLabel);\r
}\r
\r
StrCpy ((CHAR16 *) Buffer, PrivateRoot->VolumeLabel);\r
Status = EFI_SUCCESS;\r
}\r
\r
Status = EFI_SUCCESS;\r
}\r
\r
+Done:\r
+ gBS->RestoreTPL (OldTpl);\r
EFI_FILE_INFO *NewFileInfo;\r
EFI_STATUS Status;\r
UINTN OldInfoSize;\r
EFI_FILE_INFO *NewFileInfo;\r
EFI_STATUS Status;\r
UINTN OldInfoSize;\r
mode_t NewAttr;\r
struct stat OldAttr;\r
CHAR8 *OldFileName;\r
mode_t NewAttr;\r
struct stat OldAttr;\r
CHAR8 *OldFileName;\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
+ OldTpl = gBS->RaiseTPL (EFI_TPL_CALLBACK);\r
+ \r
//\r
// Initialise locals.\r
//\r
//\r
// Initialise locals.\r
//\r
//\r
if (CompareGuid (InformationType, &gEfiFileSystemInfoGuid)) {\r
if (BufferSize < SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize (PrivateRoot->VolumeLabel)) {\r
//\r
if (CompareGuid (InformationType, &gEfiFileSystemInfoGuid)) {\r
if (BufferSize < SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize (PrivateRoot->VolumeLabel)) {\r
- return EFI_BAD_BUFFER_SIZE;\r
+ Status = EFI_BAD_BUFFER_SIZE;\r
+ goto Done;\r
}\r
\r
NewFileSystemInfo = (EFI_FILE_SYSTEM_INFO *) Buffer;\r
}\r
\r
NewFileSystemInfo = (EFI_FILE_SYSTEM_INFO *) Buffer;\r
\r
StrCpy (PrivateRoot->VolumeLabel, NewFileSystemInfo->VolumeLabel);\r
\r
\r
StrCpy (PrivateRoot->VolumeLabel, NewFileSystemInfo->VolumeLabel);\r
\r
+ Status = EFI_SUCCESS;\r
+ goto Done;\r
//\r
if (CompareGuid (InformationType, &gEfiFileSystemVolumeLabelInfoIdGuid)) {\r
if (BufferSize < StrSize (PrivateRoot->VolumeLabel)) {\r
//\r
if (CompareGuid (InformationType, &gEfiFileSystemVolumeLabelInfoIdGuid)) {\r
if (BufferSize < StrSize (PrivateRoot->VolumeLabel)) {\r
- return EFI_BAD_BUFFER_SIZE;\r
+ Status = EFI_BAD_BUFFER_SIZE;\r
+ goto Done;\r
}\r
\r
StrCpy (PrivateRoot->VolumeLabel, (CHAR16 *) Buffer);\r
\r
}\r
\r
StrCpy (PrivateRoot->VolumeLabel, (CHAR16 *) Buffer);\r
\r
+ Status = EFI_SUCCESS;\r
+ goto Done;\r
}\r
\r
if (!CompareGuid (InformationType, &gEfiFileInfoGuid)) {\r
}\r
\r
if (!CompareGuid (InformationType, &gEfiFileInfoGuid)) {\r
- return EFI_UNSUPPORTED;\r
+ Status = EFI_UNSUPPORTED;\r
+ goto Done;\r
}\r
\r
if (BufferSize < SIZE_OF_EFI_FILE_INFO) {\r
}\r
\r
if (BufferSize < SIZE_OF_EFI_FILE_INFO) {\r
- return EFI_BAD_BUFFER_SIZE;\r
+ Status = EFI_BAD_BUFFER_SIZE;\r
+ goto Done;\r
(NewFileInfo->Attribute &~(EFI_FILE_VALID_ATTR)) ||\r
(sizeof (UINTN) == 4 && NewFileInfo->Size > 0xFFFFFFFF)\r
) {\r
(NewFileInfo->Attribute &~(EFI_FILE_VALID_ATTR)) ||\r
(sizeof (UINTN) == 4 && NewFileInfo->Size > 0xFFFFFFFF)\r
) {\r
- return EFI_INVALID_PARAMETER;\r
+ Status = EFI_INVALID_PARAMETER;\r
+ goto Done;\r
gBS->FreePool (NewFileName);\r
}\r
\r
gBS->FreePool (NewFileName);\r
}\r
\r
+ gBS->RestoreTPL (OldTpl);\r
+ \r
// TODO: EFI_INVALID_PARAMETER - add return value to function comment\r
{\r
UNIX_EFI_FILE_PRIVATE *PrivateFile;\r
// TODO: EFI_INVALID_PARAMETER - add return value to function comment\r
{\r
UNIX_EFI_FILE_PRIVATE *PrivateFile;\r
+ EFI_STATUS Status;\r
+ EFI_TPL OldTpl;\r
\r
if (This == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
\r
if (This == NULL) {\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
\r
if (PrivateFile->IsDirectoryPath) {\r
PrivateFile = UNIX_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
\r
\r
if (PrivateFile->IsDirectoryPath) {\r
+ Status = EFI_SUCCESS;\r
+ goto Done;\r
}\r
\r
if (PrivateFile->IsOpenedByRead) {\r
}\r
\r
if (PrivateFile->IsOpenedByRead) {\r
- return EFI_ACCESS_DENIED;\r
+ Status = EFI_ACCESS_DENIED;\r
+ goto Done;\r
}\r
\r
if (PrivateFile->fd < 0) {\r
}\r
\r
if (PrivateFile->fd < 0) {\r
- return EFI_DEVICE_ERROR;\r
+ Status = EFI_DEVICE_ERROR;\r
+ goto Done;\r
- return PrivateFile->UnixThunk->FSync (PrivateFile->fd) == 0 ? EFI_SUCCESS : EFI_DEVICE_ERROR;\r
+ PrivateFile->UnixThunk->FSync (PrivateFile->fd) == 0 ? EFI_SUCCESS : EFI_DEVICE_ERROR;\r
+\r
+Done:\r
+ gBS->RestoreTPL (OldTpl);\r
+\r
+ return Status;\r
\r
//\r
// bugbug: - Use Unix error reporting.\r
//\r
}\r
\r
\r
//\r
// bugbug: - Use Unix error reporting.\r
//\r
}\r
\r