diff mbox

[1/1] alsabat: add terminate status check for capture thread

Message ID 1460856405-28390-1-git-send-email-han.lu@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

han.lu@intel.com April 17, 2016, 1:26 a.m. UTC
From: "Lu, Han" <han.lu@intel.com>

In loopback test, alsabat use pthread_join(pthread_t thread, **retval)
to wait for the capture thread to terminate. If the capture thread was
canceled, PTHREAD_CANCELED is placed in *retval, and the access to the
**retval will fail. Add status check to prevent illegal access to the
**retval.

Signed-off-by: Lu, Han <han.lu@intel.com>

Comments

Takashi Iwai April 18, 2016, 2:35 p.m. UTC | #1
On Sun, 17 Apr 2016 03:26:45 +0200,
han.lu@intel.com wrote:
> 
> From: "Lu, Han" <han.lu@intel.com>
> 
> In loopback test, alsabat use pthread_join(pthread_t thread, **retval)
> to wait for the capture thread to terminate. If the capture thread was
> canceled, PTHREAD_CANCELED is placed in *retval, and the access to the
> **retval will fail. Add status check to prevent illegal access to the
> **retval.
> 
> Signed-off-by: Lu, Han <han.lu@intel.com>

Applied, thanks.


Takashi

> diff --git a/bat/bat.c b/bat/bat.c
> index e824065..1afdcb4 100644
> --- a/bat/bat.c
> +++ b/bat/bat.c
> @@ -192,6 +192,12 @@ static void test_loopback(struct bat *bat)
>  		exit(EXIT_FAILURE);
>  	}
>  
> +	/* check if capture thread is canceled or not */
> +	if (thread_result_capture == PTHREAD_CANCELED) {
> +		fprintf(bat->log, _("Capture canceled.\n"));
> +		return;
> +	}
> +
>  	/* check capture status */
>  	if (*thread_result_capture != 0) {
>  		fprintf(bat->err, _("Exit capture thread fail: %d\n"),
> -- 
> 2.5.0
>
diff mbox

Patch

diff --git a/bat/bat.c b/bat/bat.c
index e824065..1afdcb4 100644
--- a/bat/bat.c
+++ b/bat/bat.c
@@ -192,6 +192,12 @@  static void test_loopback(struct bat *bat)
 		exit(EXIT_FAILURE);
 	}
 
+	/* check if capture thread is canceled or not */
+	if (thread_result_capture == PTHREAD_CANCELED) {
+		fprintf(bat->log, _("Capture canceled.\n"));
+		return;
+	}
+
 	/* check capture status */
 	if (*thread_result_capture != 0) {
 		fprintf(bat->err, _("Exit capture thread fail: %d\n"),