svn commit: r340187 - head/sys/geom
Rodney W. Grimes
freebsd at pdx.rh.CN85.dnsmgr.net
Tue Nov 6 16:31:00 UTC 2018
> Author: sobomax
> Date: Tue Nov 6 15:55:41 2018
> New Revision: 340187
> URL: https://svnweb.freebsd.org/changeset/base/340187
>
> Log:
> Don't allow BIO_READ, BIO_WRITE or BIO_DELETE requests that are
> fully beyond the end of providers media. The only exception is made
> for the zero length transfers which are allowed to be just on the
> boundary. Previously, any requests starting on the boundary (i.e. next
> byte after the last one) have been allowed to go through.
>
> No response from: freebsd-geom@, phk
> MFC after: 1 month
>
> Modified:
> head/sys/geom/geom_io.c
>
> Modified: head/sys/geom/geom_io.c
> ==============================================================================
> --- head/sys/geom/geom_io.c Tue Nov 6 15:52:49 2018 (r340186)
> +++ head/sys/geom/geom_io.c Tue Nov 6 15:55:41 2018 (r340187)
> @@ -420,6 +420,8 @@ g_io_check(struct bio *bp)
> return (EIO);
> if (bp->bio_offset > pp->mediasize)
> return (EIO);
> + if (bp->bio_offset == pp->mediasize && bp->bio_length > 0)
> + return (EIO);
Isnt mediasize 0 based, such that any operation at pp->mediasize is
technically past the end of the media and should get an EIO no
matter how big it is?
Who is doing 0 byte operations at pp->mediasize?
That code should probably be fixed rather than allowing
this special case here.
> /* Truncate requests to the end of providers media. */
> excess = bp->bio_offset + bp->bio_length;
>
>
--
Rod Grimes rgrimes at freebsd.org
More information about the svn-src-all
mailing list