mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Marc-Jano Knopp <pub_ml_lkml@marc-jano.de>
To: linux-kernel@vger.kernel.org
Subject: [Bug] mlockall() not working properly in 2.6.x
Date: Sun, 18 Dec 2005 22:21:23 +0100	[thread overview]
Message-ID: <20051218212123.GC4029@mjk.myfqdn.de> (raw)

Hi!

A year ago, I wrote a small mlockall()-wrapper ("noswap") to make
certain programs unswappable. It used to work perfectly, until I
upgraded to kernel 2.6.x (2.6.13.1 in my case, but that shouldn't
matter), which made the mlockall() execute without error, but also
without any effect (the "L" in the STAT column of "ps axf" which
indicates locked pages is missing).


The complete program source and the strace log of

  strace -v -f -s 4096 noswap sleep 9999

is here:

  http://marc-jano.de/tmp/noswap-10935/


Here are the most important lines:

-----< snip >-----

  /* mark process as unswappable for all times */
  if (ret = mlockall (MCL_CURRENT | MCL_FUTURE))
    perror ("mlockall()");

  /* give up root privileges */
  if (ret = setuid (getuid()) ) { perror ("setuid()"); exit (ret); };
  if (ret = setgid (getgid()) ) { perror ("setgid()"); exit (ret); };

  /* execute program */
  if (ret = execvp (argv[1], exec_argv)) perror ("execvp()");

  exit (ret);

-----< snip >-----

The strace log shows that mlockall() returns with no error.


If I replace the execvp() call with a sleep(9999), then the current
process (noswap) is properly locked, as can be checked by looking
for a capital "L" in the ps STAT column.

So it seems that the mlockall() flags are not passed somehow when
using execvp().


Best regards

  Marc-Jano (not subscribed to the list, so for further questions,
  please Cc:)

             reply	other threads:[~2005-12-18 21:21 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-12-18 21:21 Marc-Jano Knopp [this message]
2005-12-19 10:21 ` Andrew Morton
2005-12-19 11:42   ` Marc-Jano Knopp
2005-12-19 17:27     ` Jan-Benedict Glaw
2005-12-19 17:47       ` Alan Cox
2005-12-19 18:38         ` Zan Lynx
2005-12-19 19:48           ` Alan Cox

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20051218212123.GC4029@mjk.myfqdn.de \
    --to=pub_ml_lkml@marc-jano.de \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome