Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 Jan 2012 14:42:21 -0500
From:      David Schultz <das@FreeBSD.ORG>
To:        Kostik Belousov <kostikbel@gmail.com>
Cc:        svn-src-head@FreeBSD.ORG, svn-src-all@FreeBSD.ORG, Gleb Smirnoff <glebius@FreeBSD.ORG>, src-committers@FreeBSD.ORG, Bruce Evans <brde@optusnet.com.au>
Subject:   Re: svn commit: r230583 - head/sys/kern
Message-ID:  <20120127194221.GA25723@zim.MIT.EDU>
In-Reply-To: <20120127091244.GZ2726@deviant.kiev.zoral.com.ua>
References:  <201201261159.q0QBxma2086162@svn.freebsd.org> <20120126233110.C960@besplex.bde.org> <20120126153641.GA68112@FreeBSD.org> <20120127194612.H1547@besplex.bde.org> <20120127091244.GZ2726@deviant.kiev.zoral.com.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Jan 27, 2012, Kostik Belousov wrote:
> On Fri, Jan 27, 2012 at 07:50:30PM +1100, Bruce Evans wrote:
> > On Thu, 26 Jan 2012, Gleb Smirnoff wrote:
> > 
> > >On Thu, Jan 26, 2012 at 11:53:57PM +1100, Bruce Evans wrote:
> > >B> > @@ -1552,6 +1552,12 @@ aio_aqueue(struct thread *td, struct aio
> > >B> > 		return (error);
> > >B> > 	}
> > >B> >
> > >B> > +	/* XXX: aio_nbytes is later casted to signed types. */
> > >B> > +	if ((int)aiocbe->uaiocb.aio_nbytes < 0) {
> > >B>
> > >B> This should avoid implementation-defined behaviour by checking if
> > >B>
> > >B>  	(uncast)aiocbe->uaiocb.aio_nbytes > INT_MAX.
> > 
> > >Is the attached patch okay?
> > 
> > Yes.  It now matches the style used for read^Wsys_read() and friends.
> > This used to have to fit the count in "int uio_resid".  uio_resid now
> > has type ssize_t, but for some reason the old INT_MAX limits remain.
> 
> Well, I can revive the patch. I still think it is good to get rid of
> the limit.

The correct limit on the maximum size of a single read/write is
SSIZE_MAX, but FreeBSD uses INT_MAX.  It's not safe to raise the
limit yet, though, because of bugs in several filesystems.  For
example, FFS copies uio_resid into a local variable of type int.
I have some old patches that fix some of these issues for FFS and
cd9660, but surely there are more places I didn't notice.

By the way, PR 147226 is about this.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120127194221.GA25723>