summaryrefslogtreecommitdiffstats
path: root/src/kernel
diff options
context:
space:
mode:
authorPatrick Williams <iawillia@us.ibm.com>2013-11-14 14:52:44 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-11-14 15:33:45 -0600
commit7c353ef9c158531352888b47264ace19675b95f8 (patch)
tree1e07f07f11b0368f0dd896d566b6c648ae4ac2d4 /src/kernel
parent33ee54a0935377444df64cc15402948f5b1029a7 (diff)
downloadtalos-hostboot-7c353ef9c158531352888b47264ace19675b95f8.tar.gz
talos-hostboot-7c353ef9c158531352888b47264ace19675b95f8.zip
Fix deadlock in vmm write operations.
If multiple tasks issued write operations to the same memory space at the same time it resulted in a deadlock. I see no reason for the extra parts of this if-condition so I'm removing them. Change-Id: I694757d7cc4d541f030d7c375640e8631e77e65a Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/7254 Reviewed-by: Brian H. Horton <brianh@linux.ibm.com> Reviewed-by: ADAM R. MUHLE <armuhle@us.ibm.com> Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/kernel')
-rw-r--r--src/kernel/blockmsghdlr.C49
1 files changed, 24 insertions, 25 deletions
diff --git a/src/kernel/blockmsghdlr.C b/src/kernel/blockmsghdlr.C
index e52c21361..d86ed8276 100644
--- a/src/kernel/blockmsghdlr.C
+++ b/src/kernel/blockmsghdlr.C
@@ -1,25 +1,25 @@
-// IBM_PROLOG_BEGIN_TAG
-// This is an automatically generated prolog.
-//
-// $Source: src/kernel/blockmsghdlr.C $
-//
-// IBM CONFIDENTIAL
-//
-// COPYRIGHT International Business Machines Corp. 2011
-//
-// p1
-//
-// Object Code Only (OCO) source materials
-// Licensed Internal Code Source Materials
-// IBM HostBoot Licensed Internal Code
-//
-// The source code for this program is not published or other-
-// wise divested of its trade secrets, irrespective of what has
-// been deposited with the U.S. Copyright Office.
-//
-// Origin: 30
-//
-// IBM_PROLOG_END
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/kernel/blockmsghdlr.C $ */
+/* */
+/* IBM CONFIDENTIAL */
+/* */
+/* COPYRIGHT International Business Machines Corp. 2011,2013 */
+/* */
+/* p1 */
+/* */
+/* Object Code Only (OCO) source materials */
+/* Licensed Internal Code Source Materials */
+/* IBM HostBoot Licensed Internal Code */
+/* */
+/* The source code for this program is not published or otherwise */
+/* divested of its trade secrets, irrespective of what has been */
+/* deposited with the U.S. Copyright Office. */
+/* */
+/* Origin: 30 */
+/* */
+/* IBM_PROLOG_END_TAG */
#include <kernel/blockmsghdlr.H>
#include <kernel/block.H>
#include <kernel/pagemgr.H>
@@ -38,7 +38,7 @@ MessageHandler::HandleResult BlockReadMsgHdlr::handleResponse(
// Call the function that attaches PTE and sets the
// sPTE entry to present while updating permissions
// on the sPTE entry of the physical addr.
- iv_block->attachSPTE(i_key);
+ iv_block->attachSPTE(i_key);
return SUCCESS;
}
@@ -74,8 +74,7 @@ MessageHandler::HandleResult BlockWriteMsgHdlr::handleResponse(
if (l_tmNode)
{
//Last message for the given task
- if (l_tmNode->msgCount == 1 &&
- (l_tmNode->next == NULL && l_tmNode->prev == NULL))
+ if (l_tmNode->msgCount == 1)
{
l_result = SUCCESS;
iv_msgGrpList.erase(l_tmNode);
OpenPOWER on IntegriCloud