Re: [PATCH] FIx 'noexec' behavior

From: Alex Riesen
Date: Sun Dec 07 2003 - 11:21:45 EST


On 2003-12-07 13:42:00, wli wrote:
> > I had to put a check for 'file' (as Ulrich suggested).
> > Otherwise it deadlocks again.
> > Is it possible for ->f_vfsmnt to be NULL at all? Should it be tested?
> > diff -Nru a/mm/mmap.c b/mm/mmap.c
> > --- a/mm/mmap.c Sun Dec 7 14:37:33 2003
> > +++ b/mm/mmap.c Sun Dec 7 14:37:33 2003
> > @@ -478,7 +478,7 @@
> > if (file && (!file->f_op || !file->f_op->mmap))
> > return -ENODEV;
> >
> > - if ((prot & PROT_EXEC) && (file->f_vfsmnt->mnt_flags & MNT_NOEXEC))
> > + if ((prot & PROT_EXEC) && file && (file->f_vfsmnt->mnt_flags & MNT_NOEXEC))
> > return -EPERM;
> >
> > if (!len)
>
> This does not resemble the code I was looking at from current bk.
>

probably you were looking at the already fixed code:

ChangeSet@xxxxxx, 2003-12-06 14:34:40-08:00, torvalds@xxxxxxxxxxxxx +1 -0
Fix the PROT_EXEC breakage on anonymous mmap.

Clean up the tests while at it.

if (file) {
if (!file->f_op || !file->f_op->mmap)
return -ENODEV;

if ((prot & PROT_EXEC) && (file->f_vfsmnt->mnt_flags & MNT_NOEXEC))
return -EPERM;
}


The code I was looking at was the one from Ulrich:

ChangeSet 1.1507 2003/12/04 22:26:06 drepper@xxxxxxxxxx
[PATCH] Fix 'noexec' behaviour

We should not allow mmap() with PROT_EXEC on mounts marked "noexec",
since otherwise there is no way for user-supplied executable loaders
(like ld.so and emulator environments) to properly honour the
"noexec"ness of the target.

if ((prot & PROT_EXEC) && (file->f_vfsmnt->mnt_flags & MNT_NOEXEC))
return -EPERM;


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/