<div dir="ltr"><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_extra"><div class="gmail_quote">Richard Palethorpe <span dir="ltr"><<a href="mailto:rpalethorpe@suse.com" target="_blank">rpalethorpe@suse.com</a>></span> wrote:<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_default" style="font-size:small;display:inline">...</div><br>
@@ -99,6 +102,15 @@ struct tst_fzsync_pair {<br>
        .info_gap = 0x7FFFF     \<br>
 }<br>
<br>
+<div class="gmail_default" style="font-size:small;display:inline"></div>static void tst_fzsync_pair_reset(struct tst_fzsync_pair *pair)<br>
+{<br>
+       pair->timer.clock_id = CLOCK_MONOTONIC_RAW;<br>
+       pair->timer.limit.tv_sec = 60 * tst_timeout_mul();<br>
+       pair->timer.limit.tv_nsec = 0;<br>
+<br>
+       tst_timer_start_st(&pair-><wbr>timer);<br>
+}<br>
+<br></blockquote><div><br></div><div><div class="gmail_default" style="font-size:small">There is a loop defect in this method as I commented in patch V2.</div></div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">If we don't reset the pair->exit to 0 after one loop, it will be never run into the second</div><div class="gmail_default" style="font-size:small">fzsync function because the pair->exit has been set to 1 at the first expired time.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">something result like:</div><div class="gmail_default" style="font-size:small">----------------------------</div><div class="gmail_default"><div class="gmail_default"># ./cve-2016-7117 -i 3</div><div class="gmail_default">tst_test.c:1022: INFO: Timeout per run is 0h 05m 00s</div><div class="gmail_default">../../include/tst_fuzzy_sync.h:121: INFO: avg_diff = -216ns, avg_dev = 565ns, delay = 02474 loops</div><div class="gmail_default">../../include/tst_fuzzy_sync.h:121: INFO: avg_diff = 12ns, avg_dev = 430ns, delay = 02604 loops</div><div class="gmail_default">../../include/tst_fuzzy_sync.h:330: INFO: Exceeded fuzzy sync time limit, requesting exit</div><div class="gmail_default">cve-2016-7117.c:161: PASS: Nothing happened after 1564741 attempts</div><div class="gmail_default">cve-2016-7117.c:161: PASS: Nothing happened after 1 attempts</div><div class="gmail_default">cve-2016-7117.c:161: PASS: Nothing happened after 1 attempts</div><div class="gmail_default"><br></div><div class="gmail_default">Summary:</div><div class="gmail_default">passed   3</div><div class="gmail_default">failed   0</div><div class="gmail_default">skipped  0</div><div class="gmail_default">warnings 0</div><div style="font-size:small"><br></div><div style="font-size:small">But, if we just reset the pair->exit to 0 in the new function <div class="gmail_default" style="background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;display:inline"></div><span style="background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">tst_fzsync_pair_reset(),</span></div><div style="font-size:small"><span style="background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">there still NOT fix the problem totally, because in the last test expired time, all threads</span></div><div style="font-size:small"><span style="background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">created by setup() </span>function have exited, and here we'll only loop in tst_fzsync_wait_a()</div><div style="font-size:small">and wait there forever. :(</div></div></div><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div>Regards,<br></div><div>Li Wang<br></div></div></div>
</div></div>