diff --git a/src/rm_services.c b/src/rm_services.c
index 97c828d728043c76dde2c2505f29c3f9987b5e40..46ac94bf84714f065a412b5b2b07e0c0d42b105f 100644 (file)
--- a/src/rm_services.c
+++ b/src/rm_services.c
*
* \par
* ============================================================================
- * @n (C) Copyright 2012-2015, Texas Instruments, Inc.
+ * @n (C) Copyright 2012-2016, Texas Instruments, Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -96,35 +96,36 @@ void Rm_serviceHandler (void *rmHandle, const Rm_ServiceReqInfo *serviceRequest,
void *key;
void *mtKey;
- RM_SS_INST_INV_ENTER_CS(rmInst, key);
- RM_SC_INST_INV_ENTER_CS(rmInst, key);
- if (rmInst->mtSemObj) {
- mtKey = Rm_osalMtCsEnter(rmInst->mtSemObj);
- }
-
- if (rmInst->isLocked) {
- serviceResponse->serviceState = RM_SERVICE_DENIED_RM_INSTANCE_LOCKED;
- goto errorExit;
- }
-
if (serviceRequest->type >= Rm_service_LAST) {
serviceResponse->serviceState = RM_ERROR_INVALID_SERVICE_TYPE;
- goto errorExit;
+ return;
}
if (serviceRequest->resourceName) {
if ((strlen(serviceRequest->resourceName) + 1) > RM_NAME_MAX_CHARS) {
serviceResponse->serviceState = RM_ERROR_RESOURCE_NAME_TOO_LONG;
- goto errorExit;
+ return;
}
}
if (serviceRequest->resourceNsName) {
if ((strlen(serviceRequest->resourceNsName) + 1) > RM_NAME_MAX_CHARS) {
serviceResponse->serviceState = RM_ERROR_NAMESERVER_NAME_TOO_LONG;
- goto errorExit;
+ return;
}
}
+
+ if (rmInst->isLocked) {
+ serviceResponse->serviceState = RM_SERVICE_DENIED_RM_INSTANCE_LOCKED;
+ return;
+ }
+
+ RM_SS_INST_INV_ENTER_CS(rmInst, key);
+ RM_SC_INST_INV_ENTER_CS(rmInst, key);
+
+ if (rmInst->mtSemObj) {
+ mtKey = Rm_osalMtCsEnter(rmInst->mtSemObj);
+ }
/* Copy location of instance name to local variable in case Shared Client
* needs to transfer control to a shared server */
@@ -213,7 +214,6 @@ void Rm_serviceHandler (void *rmHandle, const Rm_ServiceReqInfo *serviceRequest,
serviceResponse->serviceState = RM_ERROR_SERVICE_TRANS_NOT_CREATED;
}
-errorExit:
/* Free sem object using originating instance in case the Shared Client to
* Shared Server instance switch took place */
if (((Rm_Inst *)rmHandle)->mtSemObj) {