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>