<div dir="ltr">Hi,<br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Sep 16, 2015 at 5:31 PM, Jan Stancek <span dir="ltr"><<a href="mailto:jstancek@redhat.com" target="_blank">jstancek@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=""><br>
<br>
<br>
<br>
----- Original Message -----<br>
> From: "Li Wang" <<a href="mailto:liwang@redhat.com">liwang@redhat.com</a>><br>
</span><span class="">> To: "Jan Stancek" <<a href="mailto:jstancek@redhat.com">jstancek@redhat.com</a>><br>
> Cc: <a href="mailto:ltp@lists.linux.it">ltp@lists.linux.it</a><br>
</span><span class="">> Sent: Wednesday, 16 September, 2015 10:02:42 AM<br>
> Subject: Re: [PATCH] lib/mem.c: handle the case oom0{3,5} exit with EAGAIN situation<br>
> > Isn't this going to introduce infinite loop? Shouldn't we limit<br>
> > the number of retries by some finite number before we let it<br>
> > touch the pages (and hit OOM)?<br>
> ><br>
><br>
> Hmm, at first I'm trying to use finite loop for the mlock(), but think<br>
> over, I feel it is not a big matter since  mlock() desen't need so much<br>
> memory to do the lock. and I did that.<br>
><br>
> Anyway, for security consideration, finite loop is also has itself<br>
> advantages.<br>
><br>
> If so, How about this:<br>
<br>
</span>I think that's fine, I'd suggest we add some small usleep in the loop<br>
too (e.g. 250ms-500ms) to give it a moment before we give up on mlock().<br></blockquote><br>Good. I will post v2.   Thank you for reviewing.<br></div><div class="gmail_quote"><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Regards,<br>
Jan<br>
<div class="HOEnZb"><div class="h5"><br>
><br>
> diff --git a/testcases/kernel/mem/lib/mem.c b/testcases/kernel/mem/lib/mem.c<br>
> index 8fe4bf0..99eeb04 100644<br>
> --- a/testcases/kernel/mem/lib/mem.c<br>
> +++ b/testcases/kernel/mem/lib/mem.c<br>
> @@ -30,6 +30,7 @@ static int alloc_mem(long int length, int testcase)<br>
>  {<br>
>         char *s;<br>
>         long i, pagesz = getpagesize();<br>
> +       int ln = 10;<br>
><br>
>         tst_resm(TINFO, "thread (%lx), allocating %ld bytes.",<br>
>                 (unsigned long) pthread_self(), length);<br>
> @@ -39,8 +40,14 @@ static int alloc_mem(long int length, int testcase)<br>
>         if (s == MAP_FAILED)<br>
>                 return errno;<br>
><br>
> -       if (testcase == MLOCK && mlock(s, length) == -1)<br>
> -               return errno;<br>
> +       if (testcase == MLOCK) {<br>
> +               while (mlock(s, length) == -1 && ln > 0) {<br>
> +                       if (EAGAIN != errno)<br>
> +                               return errno;<br>
> +                       ln--;<br>
> +               }<br>
> +       }<br>
><br>
><br>
><br>
><br>
> ><br>
> > Regards,<br>
> > Jan<br>
> ><br>
> > >  #ifdef HAVE_MADV_MERGEABLE<br>
> > >       if (testcase == KSM && madvise(s, length, MADV_MERGEABLE) == -1)<br>
> > >               return errno;<br>
> > > --<br>
> > > 1.8.3.1<br>
> > ><br>
> > ><br>
> ><br>
><br>
><br>
><br>
> --<br>
> Regards,<br>
> Li Wang<br>
> Email: <a href="mailto:liwang@redhat.com">liwang@redhat.com</a><br>
><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div>Regards,<br></div>Li Wang<br></div><div>Email: <a href="mailto:liwang@redhat.com" target="_blank">liwang@redhat.com</a><br></div></div></div></div></div></div>
</div></div>