diff options
author | pjd <pjd@FreeBSD.org> | 2006-10-10 15:01:47 +0000 |
---|---|---|
committer | pjd <pjd@FreeBSD.org> | 2006-10-10 15:01:47 +0000 |
commit | e4e060fa9e549de7822c3931c1919f5b2ac44b6e (patch) | |
tree | deb3777e08d43029a288ac11a5c8d20668e6ee65 /sys/geom/raid3 | |
parent | 0c8c135ad5c67d351ddd0d30f8c03255cade078f (diff) | |
download | FreeBSD-src-e4e060fa9e549de7822c3931c1919f5b2ac44b6e.zip FreeBSD-src-e4e060fa9e549de7822c3931c1919f5b2ac44b6e.tar.gz |
Guard against invalid metadata.
MFC after: 1 week
Diffstat (limited to 'sys/geom/raid3')
-rw-r--r-- | sys/geom/raid3/g_raid3.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/geom/raid3/g_raid3.c b/sys/geom/raid3/g_raid3.c index ba8b886..66383bc 100644 --- a/sys/geom/raid3/g_raid3.c +++ b/sys/geom/raid3/g_raid3.c @@ -2859,6 +2859,12 @@ g_raid3_check_metadata(struct g_raid3_softc *sc, struct g_provider *pp, "md_all", pp->name, sc->sc_name); return (EINVAL); } + if ((md->md_mediasize % md->md_sectorsize) != 0) { + G_RAID3_DEBUG(1, "Invalid metadata (mediasize %% sectorsize != " + "0) on disk %s (device %s), skipping.", pp->name, + sc->sc_name); + return (EINVAL); + } if (md->md_mediasize != sc->sc_mediasize) { G_RAID3_DEBUG(1, "Invalid '%s' field on disk %s (device %s), skipping.", |