diff --git a/drivers/regulator/tps6586x-regulator.c b/drivers/regulator/tps6586x-regulator.c
index 3c2eee8e7563b099870d6b9cffc5fa40a21da8e2..122193b5e2692b5e7086a6db5438001edfbe3c8e 100644
--- a/drivers/regulator/tps6586x-regulator.c
+++ b/drivers/regulator/tps6586x-regulator.c
@@ -357,13 +357,16 @@ static int __devinit tps6586x_regulator_probe(struct platform_device *pdev)
 		return PTR_ERR(rdev);
 	}
 
-	platform_set_drvdata(pdev, ri);
+	platform_set_drvdata(pdev, rdev);
 
 	return 0;
 }
 
 static int __devexit tps6586x_regulator_remove(struct platform_device *pdev)
 {
+	struct regulator_dev *rdev = platform_get_drvdata(pdev);
+
+	regulator_unregister(rdev);
 	return 0;
 }