summaryrefslogtreecommitdiffstats
path: root/sys/dev/md/md.c
diff options
context:
space:
mode:
authorjh <jh@FreeBSD.org>2012-11-21 16:56:47 +0000
committerjh <jh@FreeBSD.org>2012-11-21 16:56:47 +0000
commite82a3d82c2e6323735987f75e75353ea73e49142 (patch)
tree227473eb3fd1d660b3c693f005447db9296b6c5b /sys/dev/md/md.c
parent4172690a5e017697ecc8c9e8b2348b4648692c7d (diff)
downloadFreeBSD-src-e82a3d82c2e6323735987f75e75353ea73e49142.zip
FreeBSD-src-e82a3d82c2e6323735987f75e75353ea73e49142.tar.gz
Disallow attaching preloaded memory disks via ioctl.
- The feature is dangerous because the kernel code didn't check validity of the memory address provided from user space. - It seems that mdconfig(8) never really supported attaching preloaded memory disks. - Preloaded memory disks are automatically attached during md(4) initialization. Thus there shouldn't be much use for the feature. PR: kern/169683 Discussed on: freebsd-hackers
Diffstat (limited to 'sys/dev/md/md.c')
-rw-r--r--sys/dev/md/md.c29
1 files changed, 6 insertions, 23 deletions
diff --git a/sys/dev/md/md.c b/sys/dev/md/md.c
index 443c127..00ef7e5 100644
--- a/sys/dev/md/md.c
+++ b/sys/dev/md/md.c
@@ -854,27 +854,6 @@ mdinit(struct md_s *sc)
DEVSTAT_ALL_SUPPORTED, DEVSTAT_TYPE_DIRECT, DEVSTAT_PRIORITY_MAX);
}
-/*
- * XXX: we should check that the range they feed us is mapped.
- * XXX: we should implement read-only.
- */
-
-static int
-mdcreate_preload(struct md_s *sc, struct md_ioctl *mdio)
-{
-
- if (mdio->md_options & ~(MD_AUTOUNIT | MD_FORCE))
- return (EINVAL);
- if (mdio->md_base == 0)
- return (EINVAL);
- sc->flags = mdio->md_options & MD_FORCE;
- /* Cast to pointer size, then to pointer to avoid warning */
- sc->pl_ptr = (u_char *)(uintptr_t)mdio->md_base;
- sc->pl_len = (size_t)sc->mediasize;
- return (0);
-}
-
-
static int
mdcreate_malloc(struct md_s *sc, struct md_ioctl *mdio)
{
@@ -1238,8 +1217,12 @@ xmdctlioctl(struct cdev *dev, u_long cmd, caddr_t addr, int flags, struct thread
error = mdcreate_malloc(sc, mdio);
break;
case MD_PRELOAD:
- sc->start = mdstart_preload;
- error = mdcreate_preload(sc, mdio);
+ /*
+ * We disallow attaching preloaded memory disks via
+ * ioctl. Preloaded memory disks are automatically
+ * attached in g_md_init().
+ */
+ error = EOPNOTSUPP;
break;
case MD_VNODE:
sc->start = mdstart_vnode;
OpenPOWER on IntegriCloud