]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/IScsiDxe/IScsiProto.c
add error handler to pass K8 check
[mirror_edk2.git] / MdeModulePkg / Universal / Network / IScsiDxe / IScsiProto.c
index 7c350d0d9ffad3baf29e5ebcea41baac56d2bace..4a703a9afbc040f12853946faf76fa54d81b1ba6 100644 (file)
@@ -224,7 +224,7 @@ IScsiCreateConnection (
   //\r
   // set the default connection-only parameters\r
   //\r
-  Conn->MaxRecvDataSegmentLength  = MAX_RECV_DATA_SEG_LEN_IN_FFP;\r
+  Conn->MaxRecvDataSegmentLength  = DEFAULT_MAX_RECV_DATA_SEG_LEN;\r
   Conn->HeaderDigest              = ISCSI_DIGEST_NONE;\r
   Conn->DataDigest                = ISCSI_DIGEST_NONE;\r
 \r
@@ -492,6 +492,7 @@ IScsiPrepareLoginReq (
   }\r
 \r
   LoginReq = (ISCSI_LOGIN_REQUEST *) NetbufAllocSpace (Nbuf, sizeof (ISCSI_LOGIN_REQUEST), NET_BUF_TAIL);\r
+  ASSERT (LoginReq != NULL);\r
   ZeroMem (LoginReq, sizeof (ISCSI_LOGIN_REQUEST));\r
 \r
   //\r
@@ -930,7 +931,7 @@ IScsiReceivePdu (
   NET_BUF         *DataSeg;\r
   UINT32          PadAndCRC32[2];\r
 \r
-  NbufList = AllocatePool (sizeof (LIST_ENTRY    ));\r
+  NbufList = AllocatePool (sizeof (LIST_ENTRY));\r
   if (NbufList == NULL) {\r
     return EFI_OUT_OF_RESOURCES;\r
   }\r
@@ -943,11 +944,12 @@ IScsiReceivePdu (
   Len     = sizeof (ISCSI_BASIC_HEADER) + (HeaderDigest ? sizeof (UINT32) : 0);\r
   PduHdr  = NetbufAlloc (Len);\r
   if (PduHdr == NULL) {\r
-    Status = EFI_OUT_OF_RESOURCES;\r
-    goto ON_EXIT;\r
+    gBS->FreePool (NbufList);\r
+    return EFI_OUT_OF_RESOURCES;\r
   }\r
 \r
   Header = NetbufAllocSpace (PduHdr, Len, NET_BUF_TAIL);\r
+  ASSERT (Header != NULL);\r
   InsertTailList (NbufList, &PduHdr->List);\r
 \r
   //\r
@@ -1006,8 +1008,7 @@ IScsiReceivePdu (
       // The first to receive the useful data. The second to receive the padding.\r
       //\r
       Fragment[1].Len   = PadLen + (DataDigest ? sizeof (UINT32) : 0);\r
-      Fragment[1].Bulk  = (UINT8 *) ((UINTN) &PadAndCRC32[1] - PadLen);\r
-\r
+      Fragment[1].Bulk  = (UINT8 *)((UINTN) &PadAndCRC32[0] + (4 - PadLen));\r
       FragmentCount     = 2;\r
     } else {\r
       FragmentCount = 1;\r
@@ -1206,16 +1207,11 @@ IScsiCheckOpParams (
   Session->ImmediateData = (BOOLEAN) (Session->ImmediateData && (AsciiStrCmp (Value, "Yes") == 0));\r
 \r
   //\r
-  // MaxRecvDataSegmentLength, result function is Mininum.\r
+  // MaxRecvDataSegmentLength is declarative.\r
   //\r
   Value = IScsiGetValueByKeyFromList (KeyValueList, ISCSI_KEY_MAX_RECV_DATA_SEGMENT_LENGTH);\r
   if (Value != NULL) {\r
-    //\r
-    // MaxRecvDataSegmentLength is declarative.\r
-    //\r
-    NumericValue                    = AsciiStrDecimalToUintn (Value);\r
-\r
-    Conn->MaxRecvDataSegmentLength  = (UINT32) MIN (Conn->MaxRecvDataSegmentLength, NumericValue);\r
+    Conn->MaxRecvDataSegmentLength = (UINT32) AsciiStrDecimalToUintn (Value);\r
   }\r
   //\r
   // MaxBurstLength, result funtion is Mininum.\r
@@ -1231,9 +1227,10 @@ IScsiCheckOpParams (
   //\r
   // FirstBurstLength, result function is Minimum. Irrelevant when InitialR2T=Yes and\r
   // ImmediateData=No.\r
+  // This Key/Value is negotiation type.\r
   //\r
   Value = IScsiGetValueByKeyFromList (KeyValueList, ISCSI_KEY_FIRST_BURST_LENGTH);\r
-  if ((Value == NULL) && !(Session->InitialR2T && !Session->ImmediateData)) {\r
+  if (Value == NULL) {\r
     goto ON_ERROR;\r
   }\r
 \r
@@ -1379,7 +1376,7 @@ IScsiFillOpParams (
   AsciiSPrint (Value, sizeof (Value), "%a", Session->ImmediateData ? "Yes" : "No");\r
   IScsiAddKeyValuePair (Pdu, ISCSI_KEY_IMMEDIATE_DATA, Value);\r
 \r
-  AsciiSPrint (Value, sizeof (Value), "%d", Conn->MaxRecvDataSegmentLength);\r
+  AsciiSPrint (Value, sizeof (Value), "%d", MAX_RECV_DATA_SEG_LEN_IN_FFP);\r
   IScsiAddKeyValuePair (Pdu, ISCSI_KEY_MAX_RECV_DATA_SEGMENT_LENGTH, Value);\r
 \r
   AsciiSPrint (Value, sizeof (Value), "%d", Session->MaxBurstLength);\r
@@ -1460,7 +1457,7 @@ IScsiBuildKeyValueList (
   LIST_ENTRY            *ListHead;\r
   ISCSI_KEY_VALUE_PAIR  *KeyValuePair;\r
 \r
-  ListHead = AllocatePool (sizeof (LIST_ENTRY    ));\r
+  ListHead = AllocatePool (sizeof (LIST_ENTRY));\r
   if (ListHead == NULL) {\r
     return NULL;\r
   }\r
@@ -1809,6 +1806,10 @@ IScsiNewScsiCmdPdu (
   }\r
 \r
   ScsiCmd = (SCSI_COMMAND *) NetbufAllocSpace (PduHeader, Length, NET_BUF_TAIL);\r
+  if (ScsiCmd == NULL) {\r
+    NetbufFree (PduHeader);\r
+    return NULL;\r
+  }    \r
   Header  = (ISCSI_ADDITIONAL_HEADER *) (ScsiCmd + 1);\r
 \r
   ZeroMem (ScsiCmd, Length);\r
@@ -1890,7 +1891,7 @@ IScsiNewScsiCmdPdu (
       goto ON_EXIT;\r
     }\r
 \r
-    NbufList = AllocatePool (sizeof (LIST_ENTRY    ));\r
+    NbufList = AllocatePool (sizeof (LIST_ENTRY));\r
     if (NbufList == NULL) {\r
       NetbufFree (PduHeader);\r
       NetbufFree (DataSeg);\r
@@ -1915,7 +1916,7 @@ IScsiNewScsiCmdPdu (
       ) {\r
     //\r
     // Unsolicited data out sequence is not allowed,\r
-    // or FirstBustLength data is already sent out by immediate data\r
+    // or FirstBurstLength data is already sent out by immediate data\r
     // or all the OUT data accompany this SCSI packet is sent as\r
     // immediate data, the final flag should be set on this SCSI Command\r
     // PDU.\r
@@ -1956,7 +1957,7 @@ IScsiNewDataOutPdu (
   ISCSI_SCSI_DATA_OUT *DataOutHdr;\r
   ISCSI_XFER_CONTEXT  *XferContext;\r
 \r
-  NbufList = AllocatePool (sizeof (LIST_ENTRY    ));\r
+  NbufList = AllocatePool (sizeof (LIST_ENTRY));\r
   if (NbufList == NULL) {\r
     return NULL;\r
   }\r
@@ -1977,6 +1978,7 @@ IScsiNewDataOutPdu (
   InsertTailList (NbufList, &PduHdr->List);\r
 \r
   DataOutHdr  = (ISCSI_SCSI_DATA_OUT *) NetbufAllocSpace (PduHdr, sizeof (ISCSI_SCSI_DATA_OUT), NET_BUF_TAIL);\r
+  ASSERT (DataOutHdr != NULL);\r
   XferContext = &Tcb->XferContext;\r
 \r
   ZeroMem (DataOutHdr, sizeof (ISCSI_SCSI_DATA_OUT));\r
@@ -2041,7 +2043,7 @@ IScsiGenerateDataOutPduSequence (
   ISCSI_CONNECTION    *Conn;\r
   ISCSI_XFER_CONTEXT  *XferContext;\r
 \r
-  PduList = AllocatePool (sizeof (LIST_ENTRY    ));\r
+  PduList = AllocatePool (sizeof (LIST_ENTRY));\r
   if (PduList == NULL) {\r
     return NULL;\r
   }\r