diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/rtmutex.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c index 12879f6c1ec3..a273183c37a0 100644 --- a/kernel/rtmutex.c +++ b/kernel/rtmutex.c | |||
@@ -636,9 +636,16 @@ rt_mutex_slowlock(struct rt_mutex *lock, int state, | |||
636 | * all over without going into schedule to try | 636 | * all over without going into schedule to try |
637 | * to get the lock now: | 637 | * to get the lock now: |
638 | */ | 638 | */ |
639 | if (unlikely(!waiter.task)) | 639 | if (unlikely(!waiter.task)) { |
640 | /* | ||
641 | * Reset the return value. We might | ||
642 | * have returned with -EDEADLK and the | ||
643 | * owner released the lock while we | ||
644 | * were walking the pi chain. | ||
645 | */ | ||
646 | ret = 0; | ||
640 | continue; | 647 | continue; |
641 | 648 | } | |
642 | if (unlikely(ret)) | 649 | if (unlikely(ret)) |
643 | break; | 650 | break; |
644 | } | 651 | } |