Revision: 19449
          http://sourceforge.net/p/edk2/code/19449
Author:   hwu1225
Date:     2015-12-22 13:56:30 +0000 (Tue, 22 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.

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

Modified Paths:
--------------
    trunk/edk2/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c

Modified: trunk/edk2/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c
===================================================================
--- trunk/edk2/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c     2015-12-22 
13:55:59 UTC (rev 19448)
+++ trunk/edk2/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c     2015-12-22 
13:56:30 UTC (rev 19449)
@@ -3700,6 +3700,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;
@@ -3755,6 +3757,10 @@
   return EFI_SUCCESS;
 
 ErrorExit:
+  if (AsyncIoEvent != NULL) {
+    gBS->CloseEvent (AsyncIoEvent);
+  }
+
   if (Request != NULL) {
     if (Request->SenseData != NULL) {
       FreePool (Request->SenseData);
@@ -3803,6 +3809,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;
@@ -3858,6 +3866,10 @@
   return EFI_SUCCESS;
 
 ErrorExit:
+  if (AsyncIoEvent != NULL) {
+    gBS->CloseEvent (AsyncIoEvent);
+  }
+
   if (Request != NULL) {
     if (Request->SenseData != NULL) {
       FreePool (Request->SenseData);
@@ -3906,6 +3918,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;
@@ -3961,6 +3975,10 @@
   return EFI_SUCCESS;
 
 ErrorExit:
+  if (AsyncIoEvent != NULL) {
+    gBS->CloseEvent (AsyncIoEvent);
+  }
+
   if (Request != NULL) {
     if (Request->SenseData != NULL) {
       FreePool (Request->SenseData);
@@ -4009,6 +4027,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;
@@ -4064,6 +4084,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