<div dir="ltr">Merged.<div>Thanks.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Oct 11, 2016 at 1:12 AM, Bart Van Assche <span dir="ltr"><<a href="mailto:bart.vanassche@sandisk.com" target="_blank">bart.vanassche@sandisk.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Avoid that the tur_devt() call from libcheck_check() hangs.<br>
<br>
Fixes: commit 873be9fef222 ("libmultipath/checkers/tur: Serialize tur_checker_context.devt accesses")<br>
Signed-off-by: Bart Van Assche <<a href="mailto:bart.vanassche@sandisk.com">bart.vanassche@sandisk.com</a>><br>
---<br>
 libmultipath/checkers/tur.c | 6 +++++-<br>
 1 file changed, 5 insertions(+), 1 deletion(-)<br>
<br>
diff --git a/libmultipath/checkers/tur.c b/libmultipath/checkers/tur.c<br>
index a7a70f6..81206e4 100644<br>
--- a/libmultipath/checkers/tur.c<br>
+++ b/libmultipath/checkers/tur.c<br>
@@ -64,6 +64,7 @@ static const char *tur_devt(char *devt_buf, int size,<br>
 int libcheck_init (struct checker * c)<br>
 {<br>
        struct tur_checker_context *ct;<br>
+       pthread_mutexattr_t attr;<br>
<br>
        ct = malloc(sizeof(struct tur_checker_context));<br>
        if (!ct)<br>
@@ -74,7 +75,10 @@ int libcheck_init (struct checker * c)<br>
        ct->fd = -1;<br>
        ct->holders = 1;<br>
        pthread_cond_init_mono(&ct-><wbr>active);<br>
-       pthread_mutex_init(&ct->lock, NULL);<br>
+       pthread_mutexattr_init(&attr);<br>
+       pthread_mutexattr_settype(&<wbr>attr, PTHREAD_MUTEX_RECURSIVE);<br>
+       pthread_mutex_init(&ct->lock, &attr);<br>
+       pthread_mutexattr_destroy(&<wbr>attr);<br>
        pthread_spin_init(&ct->hldr_<wbr>lock, PTHREAD_PROCESS_PRIVATE);<br>
        c->context = ct;<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
2.10.0<br>
<br>
</font></span></blockquote></div><br></div>