From: Andi Kleen <ak@muc.de>
To: Linus Torvalds <torvalds@osdl.org>
Cc: Andi Kleen <ak@colin2.muc.de>, Andi Kleen <ak@muc.de>,
akpm@osdl.org, linux-kernel@vger.kernel.org, bos@serpentine.com
Subject: Re: [PATCH] Fix mlockall for PROT_NONE mappings
Date: Thu, 9 Oct 2003 17:33:17 +0200 [thread overview]
Message-ID: <20031009153317.GA3096@averell> (raw)
In-Reply-To: <Pine.LNX.4.44.0310090816360.1694-100000@home.osdl.org>
On Thu, Oct 09, 2003 at 08:17:48AM -0700, Linus Torvalds wrote:
>
> On 9 Oct 2003, Andi Kleen wrote:
> >
> > Ok. But what is with mappings that have MAY_READ not set ?
> > [not 100% this cannot happen]
>
> Well, PROT_NONE will not have MAY_READ set, and no, they won't get locked
> into memory.
>
> But neither did they get locked in before either, so it's not like it's a
> new issue. Now we'd just ignore them nicely rather than abort the
> lockall(). Hmm?
Ok, here's a new version.
-------------------------------------------------------------------------
Fix mlockall when there are unreadable mappings in the address space
(happens frequently on x86-64 where ld.so creates an unreadable mapping
for libc). Ignores mappings that don't have MAY_READ set in the high level
mlockall function.
As an improvement it continues mlockall now for all mappings even when an
error occurs. The error is still reported, but only the first one.
This should do the right thing for applications that do mlockall(MCL_CURRENT)
but don't want to worry about some weird mappings e.g. from DRI in their
address space.
diff -u linux-test7-work/mm/mlock.c-o linux-test7-work/mm/mlock.c
--- linux-test7-work/mm/mlock.c-o 2003-09-28 10:53:25.000000000 +0200
+++ linux-test7-work/mm/mlock.c 2003-12-04 16:33:58.000000000 +0100
@@ -135,7 +135,7 @@
static int do_mlockall(int flags)
{
- int error;
+ int error, nerr;
unsigned int def_flags;
struct vm_area_struct * vma;
@@ -154,9 +154,15 @@
newflags = vma->vm_flags | VM_LOCKED;
if (!(flags & MCL_CURRENT))
newflags &= ~VM_LOCKED;
- error = mlock_fixup(vma, vma->vm_start, vma->vm_end, newflags);
- if (error)
- break;
+
+ if (!(newflags & VM_READ))
+ continue;
+
+ nerr = mlock_fixup(vma, vma->vm_start, vma->vm_end, newflags);
+ /* When an error occurs continue with the next mapping,
+ but report only the first one */
+ if (nerr && !error)
+ error = nerr;
}
return error;
}
next prev parent reply other threads:[~2003-10-09 15:33 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-10-09 10:42 [PATCH] Fix mlockall for PROT_NONE mappings Andi Kleen
2003-10-09 10:49 ` Muli Ben-Yehuda
2003-10-09 11:22 ` Andi Kleen
2003-10-09 11:24 ` Muli Ben-Yehuda
2003-10-09 11:31 ` Andi Kleen
2003-10-09 14:44 ` Linus Torvalds
2003-10-09 14:52 ` Andi Kleen
2003-10-09 14:56 ` Linus Torvalds
2003-10-09 15:12 ` Andi Kleen
2003-10-09 15:17 ` Linus Torvalds
2003-10-09 15:33 ` Andi Kleen [this message]
2003-10-09 15:40 ` Linus Torvalds
2003-10-09 16:34 ` Andi Kleen
2003-10-09 17:28 ` Linus Torvalds
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=20031009153317.GA3096@averell \
--to=ak@muc.de \
--cc=ak@colin2.muc.de \
--cc=akpm@osdl.org \
--cc=bos@serpentine.com \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@osdl.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