Minor number allocations: (1 << MINORBITS) is not a valid minor.

--- diff/drivers/md/dm.c	2004-08-16 10:33:57.671460168 -0500
+++ source/drivers/md/dm.c	2004-08-16 10:34:54.153873536 -0500
@@ -632,7 +632,7 @@
 {
 	int r, m;
 
-	if (minor > (1 << MINORBITS))
+	if (minor >= (1 << MINORBITS))
 		return -EINVAL;
 
 	down(&_minor_lock);
@@ -682,7 +682,7 @@
 		goto out;
 	}
 
-	if (m > (1 << MINORBITS)) {
+	if (m >= (1 << MINORBITS)) {
 		idr_remove(&_minor_idr, m);
 		r = -ENOSPC;
 		goto out;
