mirror of https://github.com/acidanthera/audk.git
MdePkg UefiScsiLib: Close event when SCSI command fails
The ScsiExecuteSCSICommand() function in ScsiBusDxe driver will not signal the event passed from UefiScsiLib when error occurs. In this case, UefiScsiLib should close the event passing to ScsiExecuteSCSICommand(). Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19448 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
9f840a9ea3
commit
fbbb3ff3e0
|
@ -1494,7 +1494,17 @@ ScsiRead10CommandEx (
|
||||||
goto ErrorExit;
|
goto ErrorExit;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ScsiIo->ExecuteScsiCommand (ScsiIo, CommandPacket, SelfEvent);
|
Status = ScsiIo->ExecuteScsiCommand (ScsiIo, CommandPacket, SelfEvent);
|
||||||
|
if (EFI_ERROR(Status)) {
|
||||||
|
//
|
||||||
|
// Since ScsiLibNotify() will not be signaled if ExecuteScsiCommand()
|
||||||
|
// returns with error, close the event here.
|
||||||
|
//
|
||||||
|
gBS->CloseEvent (SelfEvent);
|
||||||
|
goto ErrorExit;
|
||||||
|
} else {
|
||||||
|
return EFI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
ErrorExit:
|
ErrorExit:
|
||||||
if (Context != NULL) {
|
if (Context != NULL) {
|
||||||
|
@ -1668,7 +1678,17 @@ ScsiWrite10CommandEx (
|
||||||
goto ErrorExit;
|
goto ErrorExit;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ScsiIo->ExecuteScsiCommand (ScsiIo, CommandPacket, Event);
|
Status = ScsiIo->ExecuteScsiCommand (ScsiIo, CommandPacket, SelfEvent);
|
||||||
|
if (EFI_ERROR(Status)) {
|
||||||
|
//
|
||||||
|
// Since ScsiLibNotify() will not be signaled if ExecuteScsiCommand()
|
||||||
|
// returns with error, close the event here.
|
||||||
|
//
|
||||||
|
gBS->CloseEvent (SelfEvent);
|
||||||
|
goto ErrorExit;
|
||||||
|
} else {
|
||||||
|
return EFI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
ErrorExit:
|
ErrorExit:
|
||||||
if (Context != NULL) {
|
if (Context != NULL) {
|
||||||
|
@ -1842,7 +1862,17 @@ ScsiRead16CommandEx (
|
||||||
goto ErrorExit;
|
goto ErrorExit;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ScsiIo->ExecuteScsiCommand (ScsiIo, CommandPacket, Event);
|
Status = ScsiIo->ExecuteScsiCommand (ScsiIo, CommandPacket, SelfEvent);
|
||||||
|
if (EFI_ERROR(Status)) {
|
||||||
|
//
|
||||||
|
// Since ScsiLibNotify() will not be signaled if ExecuteScsiCommand()
|
||||||
|
// returns with error, close the event here.
|
||||||
|
//
|
||||||
|
gBS->CloseEvent (SelfEvent);
|
||||||
|
goto ErrorExit;
|
||||||
|
} else {
|
||||||
|
return EFI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
ErrorExit:
|
ErrorExit:
|
||||||
if (Context != NULL) {
|
if (Context != NULL) {
|
||||||
|
@ -2016,7 +2046,17 @@ ScsiWrite16CommandEx (
|
||||||
goto ErrorExit;
|
goto ErrorExit;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ScsiIo->ExecuteScsiCommand (ScsiIo, CommandPacket, Event);
|
Status = ScsiIo->ExecuteScsiCommand (ScsiIo, CommandPacket, SelfEvent);
|
||||||
|
if (EFI_ERROR(Status)) {
|
||||||
|
//
|
||||||
|
// Since ScsiLibNotify() will not be signaled if ExecuteScsiCommand()
|
||||||
|
// returns with error, close the event here.
|
||||||
|
//
|
||||||
|
gBS->CloseEvent (SelfEvent);
|
||||||
|
goto ErrorExit;
|
||||||
|
} else {
|
||||||
|
return EFI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
ErrorExit:
|
ErrorExit:
|
||||||
if (Context != NULL) {
|
if (Context != NULL) {
|
||||||
|
|
Loading…
Reference in New Issue