diff --git a/sys/geom/geom_io.c b/sys/geom/geom_io.c
index 73895b30f7..1444ecd06a 100644
--- a/sys/geom/geom_io.c
+++ b/sys/geom/geom_io.c
@@ -415,6 +415,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;
