diff --git a/drivers/md/md.c b/drivers/md/md.c
index 6818ff4aa8d61129324abe5e554942d9714404f8..330addfe9b77efccd779bd9f0261b1f6897fe389 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -553,6 +553,9 @@ static mddev_t * mddev_find(dev_t unit)
 {
 	mddev_t *mddev, *new = NULL;
 
+	if (unit && MAJOR(unit) != MD_MAJOR)
+		unit &= ~((1<<MdpMinorShift)-1);
+
  retry:
 	spin_lock(&all_mddevs_lock);