From 4deca9a4c0f45fdb313d1637b8ff350283a8fcb6 Mon Sep 17 00:00:00 2001 From: Michael Zillgith Date: Tue, 24 Nov 2020 12:22:26 +0100 Subject: [PATCH] - IED server: fixed potential deadlock in report module when service tracking is enabled --- src/iec61850/server/mms_mapping/reporting.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/iec61850/server/mms_mapping/reporting.c b/src/iec61850/server/mms_mapping/reporting.c index 22c58420..74398794 100644 --- a/src/iec61850/server/mms_mapping/reporting.c +++ b/src/iec61850/server/mms_mapping/reporting.c @@ -1627,8 +1627,6 @@ Reporting_RCBWriteAccessHandler(MmsMapping* self, ReportControl* rc, char* eleme { MmsDataAccessError retVal = DATA_ACCESS_ERROR_SUCCESS; - ReportControl_lockNotify(rc); - bool resvTmsAccess = false; /* check reservation timeout for buffered RCBs */ @@ -1676,6 +1674,8 @@ Reporting_RCBWriteAccessHandler(MmsMapping* self, ReportControl* rc, char* eleme } } + ReportControl_lockNotify(rc); + if ((rc->reserved) && (rc->clientConnection != connection)) { retVal = DATA_ACCESS_ERROR_TEMPORARILY_UNAVAILABLE; goto exit_function;