<div dir="ltr">Merged.</div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Oct 18, 2016 at 6:22 PM, Benjamin Marzinski <span dir="ltr"><<a href="mailto:bmarzins@redhat.com" target="_blank">bmarzins@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Tue, Oct 18, 2016 at 10:51:08AM +0800, <a href="mailto:tang.junhui@zte.com.cn">tang.junhui@zte.com.cn</a> wrote:<br>
> From: "tang.junhui" <<a href="mailto:tang.junhui@zte.com.cn">tang.junhui@zte.com.cn</a>><br>
><br>
> there are vecs->mpvec memory accesses outside of locking range in<br>
> check_path(), the judgments is not necessary since the they has<br>
> existed in vector_foreach_slot(), so delete them.<br>
<br>
</span>ACK<br>
<br>
-Ben<br>
<div class="HOEnZb"><div class="h5"><br>
<br>
> Signed-off-by: tang.junhui <<a href="mailto:tang.junhui@zte.com.cn">tang.junhui@zte.com.cn</a>><br>
> ---<br>
>  multipathd/main.c | 45 ++++++++++++++++++++++--------<wbr>---------------<br>
>  1 file changed, 22 insertions(+), 23 deletions(-)<br>
><br>
> diff --git a/multipathd/main.c b/multipathd/main.c<br>
> index b6eb696..e369a79 100644<br>
> --- a/multipathd/main.c<br>
> +++ b/multipathd/main.c<br>
> @@ -1804,30 +1804,29 @@ checkerloop (void *ap)<br>
>                       condlog(4, "timeout waiting for DAEMON_IDLE");<br>
>                       continue;<br>
>               }<br>
> -             if (vecs->pathvec) {<br>
> -                     pthread_cleanup_push(cleanup_<wbr>lock, &vecs->lock);<br>
> -                     lock(&vecs->lock);<br>
> -                     pthread_testcancel();<br>
> -                     vector_foreach_slot (vecs->pathvec, pp, i) {<br>
> -                             rc = check_path(vecs, pp, ticks);<br>
> -                             if (rc < 0) {<br>
> -                                     vector_del_slot(vecs->pathvec, i);<br>
> -                                     free_path(pp);<br>
> -                                     i--;<br>
> -                             } else<br>
> -                                     num_paths += rc;<br>
> -                     }<br>
> -                     lock_cleanup_pop(vecs->lock);<br>
> -             }<br>
> -             if (vecs->mpvec) {<br>
> -                     pthread_cleanup_push(cleanup_<wbr>lock, &vecs->lock);<br>
> -                     lock(&vecs->lock);<br>
> -                     pthread_testcancel();<br>
> -                     defered_failback_tick(vecs-><wbr>mpvec);<br>
> -                     retry_count_tick(vecs->mpvec);<br>
> -                     missing_uev_wait_tick(vecs);<br>
> -                     lock_cleanup_pop(vecs->lock);<br>
> +<br>
> +             pthread_cleanup_push(cleanup_<wbr>lock, &vecs->lock);<br>
> +             lock(&vecs->lock);<br>
> +             pthread_testcancel();<br>
> +             vector_foreach_slot (vecs->pathvec, pp, i) {<br>
> +                     rc = check_path(vecs, pp, ticks);<br>
> +                     if (rc < 0) {<br>
> +                             vector_del_slot(vecs->pathvec, i);<br>
> +                             free_path(pp);<br>
> +                             i--;<br>
> +                     } else<br>
> +                             num_paths += rc;<br>
>               }<br>
> +             lock_cleanup_pop(vecs->lock);<br>
> +<br>
> +             pthread_cleanup_push(cleanup_<wbr>lock, &vecs->lock);<br>
> +             lock(&vecs->lock);<br>
> +             pthread_testcancel();<br>
> +             defered_failback_tick(vecs-><wbr>mpvec);<br>
> +             retry_count_tick(vecs->mpvec);<br>
> +             missing_uev_wait_tick(vecs);<br>
> +             lock_cleanup_pop(vecs->lock);<br>
> +<br>
>               if (count)<br>
>                       count--;<br>
>               else {<br>
> --<br>
> 2.8.1.windows.1<br>
</div></div></blockquote></div><br></div>