return create_aux(minor, 1, result);
 }
 
-void *dm_get_mdptr(dev_t dev)
+static struct mapped_device *dm_find_md(dev_t dev)
 {
        struct mapped_device *md;
-       void *mdptr = NULL;
        unsigned minor = MINOR(dev);
 
        if (MAJOR(dev) != _major || minor >= (1 << MINORBITS))
        down(&_minor_lock);
 
        md = idr_find(&_minor_idr, minor);
-
-       if (md && (dm_disk(md)->first_minor == minor))
-               mdptr = md->interface_ptr;
+       if (!md || (dm_disk(md)->first_minor != minor))
+               md = NULL;
 
        up(&_minor_lock);
 
+       return md;
+}
+
+void *dm_get_mdptr(dev_t dev)
+{
+       struct mapped_device *md;
+       void *mdptr = NULL;
+
+       md = dm_find_md(dev);
+       if (md)
+               mdptr = md->interface_ptr;
        return mdptr;
 }