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
This commit is contained in:
Maxim Sobolev 2018-11-06 15:55:41 +00:00
parent bf81eb3ca9
commit 8948179aba
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=340187

View File

@ -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);
/* Truncate requests to the end of providers media. */
excess = bp->bio_offset + bp->bio_length;