diff --git a/drivers/base/dd.c b/drivers/base/dd.c index 8d7f94ef0cfe..85bb8742f090 100644 --- a/drivers/base/dd.c +++ b/drivers/base/dd.c @@ -617,8 +617,6 @@ static int really_probe(struct device *dev, struct device_driver *drv) else if (drv->remove) drv->remove(dev); probe_failed: - kfree(dev->dma_range_map); - dev->dma_range_map = NULL; if (dev->bus) blocking_notifier_call_chain(&dev->bus->p->bus_notifier, BUS_NOTIFY_DRIVER_NOT_BOUND, dev); @@ -626,6 +624,8 @@ static int really_probe(struct device *dev, struct device_driver *drv) device_links_no_driver(dev); devres_release_all(dev); arch_teardown_dma_ops(dev); + kfree(dev->dma_range_map); + dev->dma_range_map = NULL; driver_sysfs_remove(dev); dev->driver = NULL; dev_set_drvdata(dev, NULL);