summaryrefslogtreecommitdiffstats
path: root/cpukit/score/src/corespinlockrelease.c
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/score/src/corespinlockrelease.c')
-rw-r--r--cpukit/score/src/corespinlockrelease.c13
1 files changed, 4 insertions, 9 deletions
diff --git a/cpukit/score/src/corespinlockrelease.c b/cpukit/score/src/corespinlockrelease.c
index c10337a123..c0abcc109f 100644
--- a/cpukit/score/src/corespinlockrelease.c
+++ b/cpukit/score/src/corespinlockrelease.c
@@ -32,17 +32,12 @@ CORE_spinlock_Status _CORE_spinlock_Release(
_ISR_Disable( level );
/*
- * It must locked before it can be unlocked.
- */
- if ( the_spinlock->lock == CORE_SPINLOCK_UNLOCKED ) {
- _ISR_Enable( level );
- return CORE_SPINLOCK_NOT_LOCKED;
- }
-
- /*
* It must locked by the current thread before it can be unlocked.
*/
- if ( the_spinlock->holder != _Thread_Executing->Object.id ) {
+ if (
+ the_spinlock->lock != CORE_SPINLOCK_LOCKED
+ || the_spinlock->holder != _Thread_Executing
+ ) {
_ISR_Enable( level );
return CORE_SPINLOCK_NOT_HOLDER;
}