Date: Mon, 10 Jun 2019 09:19:55 -0500 From: Doug Moore <unkadoug@gmail.com> To: Shawn Webb <shawn.webb@hardenedbsd.org> Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org, pho@freebsd.org Subject: Re: svn commit: r348843 - head/sys/vm Message-ID: <c084ec12-5f44-c3e1-bad0-2c702a3032f9@freebsd.org> In-Reply-To: <20190610130034.k2nzitvaxvpj5lzx@mutt-hbsd> References: <201906100307.x5A37BFt099669@repo.freebsd.org> <20190610130034.k2nzitvaxvpj5lzx@mutt-hbsd>
next in thread | previous in thread | raw e-mail | index | archive | help
This comment appears in vm_mmap.c: * Mapping of length 0 is only allowed for old binaries. and my intent was to say, to whoever wrote that comment, that I was not disallowing the mapping of length zero with this change. I was only intending to affect a case in which the length was transformed to zero, and which was the problem that Peter Holm reported. Doug Moore On 6/10/19 8:00 AM, Shawn Webb wrote: > On Mon, Jun 10, 2019 at 03:07:11AM +0000, Doug Moore wrote: >> Author: dougm >> Date: Mon Jun 10 03:07:10 2019 >> New Revision: 348843 >> URL: https://svnweb.freebsd.org/changeset/base/348843 >> >> Log: >> There are times when a len==0 parameter to mmap is okay. But on a >> 32-bit machine, a len parameter just a few bytes short of 4G, rounded >> up to a page boundary and hitting zero then, is not okay. Return >> failure in that case. >> >> Reported by: pho >> Reviewed by: alc, kib (mentor) >> Tested by: pho >> Differential Revision: https://reviews.freebsd.org/D20580 >> >> Modified: >> head/sys/vm/vm_mmap.c >> >> Modified: head/sys/vm/vm_mmap.c >> ============================================================================== >> --- head/sys/vm/vm_mmap.c Sun Jun 9 22:55:21 2019 (r348842) >> +++ head/sys/vm/vm_mmap.c Mon Jun 10 03:07:10 2019 (r348843) >> @@ -257,7 +257,10 @@ kern_mmap(struct thread *td, uintptr_t addr0, size_t s >> >> /* Adjust size for rounding (on both ends). */ >> size += pageoff; /* low end... */ >> - size = (vm_size_t) round_page(size); /* hi end */ >> + /* Check for rounding up to zero. */ >> + if (round_page(size) < size) >> + return (EINVAL); > The mmap(2) manpage says that len==0 results in EINVAL, so the manpage > needs updating. > > I'm curious what "there are times" refers to. Can you or the original > reporter elaborate those cases? > > Thanks a lot! >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?c084ec12-5f44-c3e1-bad0-2c702a3032f9>