Revision: 19470
          http://sourceforge.net/p/edk2/code/19470
Author:   hwu1225
Date:     2015-12-23 01:36:31 +0000 (Wed, 23 Dec 2015)
Log Message:
-----------
MdeModulePkg ScsiDiskDxe: Close event when SCSI command fails

The functions ScsiRead10CommandEx(), ScsiWrite10CommandEx(),
ScsiRead16CommandEx() and ScsiWrite16CommandEx() in UefiScsiLib will not
signal the event passed from ScsiDiskDxe when error occurs.

In this case, ScsiDiskDxe should close the event passing to these APIs in
UefiScsiLib.

(Sync patch r19449 from main trunk.)

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <[email protected]>
Reviewed-by: Feng Tian <[email protected]>

Revision Links:
--------------
    http://sourceforge.net/p/edk2/code/19449

Modified Paths:
--------------
    branches/UDK2015/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c

Modified: branches/UDK2015/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c
===================================================================
--- branches/UDK2015/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c       
2015-12-23 01:36:07 UTC (rev 19469)
+++ branches/UDK2015/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c       
2015-12-23 01:36:31 UTC (rev 19470)
@@ -3659,6 +3659,8 @@
   SCSI_ASYNC_RW_REQUEST        *Request;
   EFI_EVENT                    AsyncIoEvent;
 
+  AsyncIoEvent = NULL;
+
   Request = AllocateZeroPool (sizeof (SCSI_ASYNC_RW_REQUEST));
   if (Request == NULL) {
     return EFI_OUT_OF_RESOURCES;
@@ -3714,6 +3716,10 @@
   return EFI_SUCCESS;
 
 ErrorExit:
+  if (AsyncIoEvent != NULL) {
+    gBS->CloseEvent (AsyncIoEvent);
+  }
+
   if (Request != NULL) {
     if (Request->SenseData != NULL) {
       FreePool (Request->SenseData);
@@ -3762,6 +3768,8 @@
   SCSI_ASYNC_RW_REQUEST        *Request;
   EFI_EVENT                    AsyncIoEvent;
 
+  AsyncIoEvent = NULL;
+
   Request = AllocateZeroPool (sizeof (SCSI_ASYNC_RW_REQUEST));
   if (Request == NULL) {
     return EFI_OUT_OF_RESOURCES;
@@ -3817,6 +3825,10 @@
   return EFI_SUCCESS;
 
 ErrorExit:
+  if (AsyncIoEvent != NULL) {
+    gBS->CloseEvent (AsyncIoEvent);
+  }
+
   if (Request != NULL) {
     if (Request->SenseData != NULL) {
       FreePool (Request->SenseData);
@@ -3865,6 +3877,8 @@
   SCSI_ASYNC_RW_REQUEST        *Request;
   EFI_EVENT                    AsyncIoEvent;
 
+  AsyncIoEvent = NULL;
+
   Request = AllocateZeroPool (sizeof (SCSI_ASYNC_RW_REQUEST));
   if (Request == NULL) {
     return EFI_OUT_OF_RESOURCES;
@@ -3920,6 +3934,10 @@
   return EFI_SUCCESS;
 
 ErrorExit:
+  if (AsyncIoEvent != NULL) {
+    gBS->CloseEvent (AsyncIoEvent);
+  }
+
   if (Request != NULL) {
     if (Request->SenseData != NULL) {
       FreePool (Request->SenseData);
@@ -3968,6 +3986,8 @@
   SCSI_ASYNC_RW_REQUEST        *Request;
   EFI_EVENT                    AsyncIoEvent;
 
+  AsyncIoEvent = NULL;
+
   Request = AllocateZeroPool (sizeof (SCSI_ASYNC_RW_REQUEST));
   if (Request == NULL) {
     return EFI_OUT_OF_RESOURCES;
@@ -4023,6 +4043,10 @@
   return EFI_SUCCESS;
 
 ErrorExit:
+  if (AsyncIoEvent != NULL) {
+    gBS->CloseEvent (AsyncIoEvent);
+  }
+
   if (Request != NULL) {
     if (Request->SenseData != NULL) {
       FreePool (Request->SenseData);


------------------------------------------------------------------------------
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to