mirror of
https://github.com/freebsd/freebsd-src
synced 2024-07-21 18:27:22 +00:00
md: Clamp to a multiple of the sector size when resizing
We do this when creating md(4) devices, in kern_mdattach_locked(), but not when resizing the provider. Apply the same policy when resizing, as many GEOM classes do not expect to deal with providers for which pp->mediasize % pp->sectorsize != 0. Reported by: syzkaller MFC after: 1 week Sponsored by: The FreeBSD Foundation
This commit is contained in:
parent
e3bdf3da76
commit
47619b6044
|
@ -1580,6 +1580,7 @@ mdresize(struct md_s *sc, struct md_req *mdr)
|
|||
}
|
||||
|
||||
sc->mediasize = mdr->md_mediasize;
|
||||
|
||||
g_topology_lock();
|
||||
g_resize_provider(sc->pp, sc->mediasize);
|
||||
g_topology_unlock();
|
||||
|
@ -1787,6 +1788,7 @@ kern_mdresize_locked(struct md_req *mdr)
|
|||
return (ENOENT);
|
||||
if (mdr->md_mediasize < sc->sectorsize)
|
||||
return (EINVAL);
|
||||
mdr->md_mediasize -= mdr->md_mediasize % sc->sectorsize;
|
||||
if (mdr->md_mediasize < sc->mediasize &&
|
||||
!(sc->flags & MD_FORCE) &&
|
||||
!(mdr->md_options & MD_FORCE))
|
||||
|
|
Loading…
Reference in a new issue