diff --git a/drivers/base/platform.c b/drivers/base/platform.c
index 65cb4c3976030d9ca50485c11a2d0fcff0118bf3..58ad8e8ad7a360c5d8bd17a62fe17579ca943878 100644
--- a/drivers/base/platform.c
+++ b/drivers/base/platform.c
@@ -228,6 +228,7 @@ int platform_device_add_data(struct platform_device *pdev, const void *data,
 			return -ENOMEM;
 	}
 
+	kfree(pdev->dev.platform_data);
 	pdev->dev.platform_data = d;
 	return 0;
 }