diff --git a/drivers/misc/enclosure.c b/drivers/misc/enclosure.c
index 48c84a58163e460b36ac68c7951b55e01f06bc09..00e5fcac8fdf8872e9ea8af6cf830e990e32837d 100644
--- a/drivers/misc/enclosure.c
+++ b/drivers/misc/enclosure.c
@@ -285,8 +285,11 @@ enclosure_component_register(struct enclosure_device *edev,
 	cdev->groups = enclosure_groups;
 
 	err = device_register(cdev);
-	if (err)
-		ERR_PTR(err);
+	if (err) {
+		ecomp->number = -1;
+		put_device(cdev);
+		return ERR_PTR(err);
+	}
 
 	return ecomp;
 }