Re: [PATCH 2/6] Fix possible exit on error without releasing mutex

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



* John Kacur | 2015-07-10 14:25:27 [+0200]:

>diff --git a/src/pi_tests/pi_stress.c b/src/pi_tests/pi_stress.c
>index aaa36c362445..1d1cc58fae54 100644
>--- a/src/pi_tests/pi_stress.c
>+++ b/src/pi_tests/pi_stress.c
>@@ -727,17 +727,24 @@ void *low_priority(void *arg)
> 		status = pthread_barrier_wait(&p->locked_barrier);
> 		if (status && status != PTHREAD_BARRIER_SERIAL_THREAD) {
> 			pi_error
>-			    ("low_priority[%d]: pthread_barrier_wait(locked): %x\n",
>-			     p->id, status);
>+				("low_priority[%d]: pthread_barrier_wait(locked): %x\n",
>+				 p->id, status);
>+			/* release the mutex */
>+			pi_debug("low_priority[%d]: unlocking mutex\n", p->id);
>+			pthread_mutex_unlock(&p->mutex);
> 			return NULL;
> 		}
>+
> 		/* wait for priority boost */
> 		pi_debug("low_priority[%d]: entering elevated wait\n", p->id);
> 		status = pthread_barrier_wait(&p->elevate_barrier);
> 		if (status && status != PTHREAD_BARRIER_SERIAL_THREAD) {
> 			pi_error
>-			    ("low_priority[%d]: pthread_barrier_wait(elevate): %x\n",
>-			     p->id, status);
>+				("low_priority[%d]: pthread_barrier_wait(elevate): %x\n",
>+				 p->id, status);
>+			/* release the mutex */
>+			pi_debug("low_priority[%d]: unlocking mutex\n", p->id);
>+			pthread_mutex_unlock(&p->mutex);
> 			return NULL;
> 		}
> 

What about having an out: label which does all the clean up at one spot
instead of doing copy/paste here and there?

Sebastian
--
To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux