diff --git a/drivers/base/dd.c b/drivers/base/dd.c
index 9179825ff646f4e3aeb2fe87455caaec8db233de..e2cf3b29123e8eb36639cf990867f321a804e9d7 100644
--- a/drivers/base/dd.c
+++ b/drivers/base/dd.c
@@ -97,6 +97,9 @@ static void deferred_probe_work_func(struct work_struct *work)
 
 		get_device(dev);
 
+		kfree(dev->p->deferred_probe_reason);
+		dev->p->deferred_probe_reason = NULL;
+
 		/*
 		 * Drop the mutex while probing each device; the probe path may
 		 * manipulate the deferred list