Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 5 Mar 1999 14:25:08 +1100
From:      Peter Jeremy <peter.jeremy@auss2.alcatel.com.au>
To:        dillon@apollo.backplane.com
Cc:        current@FreeBSD.ORG
Subject:   Re: Simple DOS against 3.x locks box solid
Message-ID:  <99Mar5.141337est.40405@border.alcanet.com.au>

next in thread | raw e-mail | index | archive | help
Matthew Dillon <dillon@apollo.backplane.com> wrote:
>    The problem is a deadlock caused by the fgrep.  The fgrep is mmap()ing
>    the file, but then it does some really weird crap when dealing with
>    larger files.
...
>    The solution is more difficult.   We could hack an exception for PRIVATE
>    mmap's... there really is no need for the vm_fault code to lock the vnode.
>    Howver, other situations can occur where this hack would not work.

Another interim solution would be to `fix' GNU grep so it doesn't
attempt to read() into mmap()'d space.  (Having not looked at the
code, I don't know how difficult this would be).

As for the general problem, is it sensible to allow a read-only file to
be mmap'd R/W (with or without MAP_PRIVATE) and then written into?  It
would be fairly easy to make mmap() return EACCES if the fd was not
open for writing (or map the memory R/O and SEGV on a write).

I would personally prefer to see a process die with an mmap failure
(or SIGSEGV), rather than cause a deadlock - ie even if we do want/
need to support R/W mmap() on R/O files [and I can see some possible
use for this], it would be worthwhile restricting mmap() in the
short-term - and removing the restriction once the underlying problem
is solved.

Peter


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?99Mar5.141337est.40405>