Message ID | 20201031105355.2303794-1-yukuai3@huawei.com |
---|---|
State | Changes Requested |
Headers | show |
Series | memory: tegra: add missing put_devcie() call in tegra_emc_probe() | expand |
On Sat, Oct 31, 2020 at 06:53:55PM +0800, Yu Kuai wrote: > if of_find_device_by_node() succeed, tegra_emc_probe() doesn't have a > corresponding put_device(). Thus add jump target to fix the exception > handling for this function implementation. Please fix the title in subject and reword, it's not possible to understand it. You are fixing here error paths, so for example: "The reference to device obtained with of_find_device_by_node() should be dropped. Add missing put_device() calls in probe error paths. > > Fixes: 73a7f0a90641("memory: tegra: Add EMC (external memory controller) driver") > Signed-off-by: Yu Kuai <yukuai3@huawei.com> > --- > drivers/memory/tegra/tegra124-emc.c | 19 +++++++++++++------ > 1 file changed, 13 insertions(+), 6 deletions(-) > > diff --git a/drivers/memory/tegra/tegra124-emc.c b/drivers/memory/tegra/tegra124-emc.c > index 76ace42a688a..831dfca0804c 100644 > --- a/drivers/memory/tegra/tegra124-emc.c > +++ b/drivers/memory/tegra/tegra124-emc.c > @@ -1207,8 +1207,10 @@ static int tegra_emc_probe(struct platform_device *pdev) > return -ENOENT; > > emc->mc = platform_get_drvdata(mc); > - if (!emc->mc) > - return -EPROBE_DEFER; > + if (!emc->mc) { > + err = -EPROBE_DEFER; > + goto put_device; > + } > > ram_code = tegra_read_ram_code(); > > @@ -1217,25 +1219,27 @@ static int tegra_emc_probe(struct platform_device *pdev) > dev_err(&pdev->dev, > "no memory timings for RAM code %u found in DT\n", > ram_code); > - return -ENOENT; > + err = -ENOENT; > + goto put_device; > } > > err = tegra_emc_load_timings_from_dt(emc, np); > of_node_put(np); > if (err) > - return err; > + goto put_device; > > if (emc->num_timings == 0) { > dev_err(&pdev->dev, > "no memory timings for RAM code %u registered\n", > ram_code); > - return -ENOENT; > + err = -ENOENT; > + goto put_device; > } > > err = emc_init(emc); > if (err) { > dev_err(&pdev->dev, "EMC initialization failed: %d\n", err); > - return err; > + goto put_device; > } > > platform_set_drvdata(pdev, emc); > @@ -1244,6 +1248,9 @@ static int tegra_emc_probe(struct platform_device *pdev) > emc_debugfs_init(&pdev->dev, emc); > > return 0; Line break > +put_device: > + put_device(&mc->dev); Line break Best regards, Krzysztof
diff --git a/drivers/memory/tegra/tegra124-emc.c b/drivers/memory/tegra/tegra124-emc.c index 76ace42a688a..831dfca0804c 100644 --- a/drivers/memory/tegra/tegra124-emc.c +++ b/drivers/memory/tegra/tegra124-emc.c @@ -1207,8 +1207,10 @@ static int tegra_emc_probe(struct platform_device *pdev) return -ENOENT; emc->mc = platform_get_drvdata(mc); - if (!emc->mc) - return -EPROBE_DEFER; + if (!emc->mc) { + err = -EPROBE_DEFER; + goto put_device; + } ram_code = tegra_read_ram_code(); @@ -1217,25 +1219,27 @@ static int tegra_emc_probe(struct platform_device *pdev) dev_err(&pdev->dev, "no memory timings for RAM code %u found in DT\n", ram_code); - return -ENOENT; + err = -ENOENT; + goto put_device; } err = tegra_emc_load_timings_from_dt(emc, np); of_node_put(np); if (err) - return err; + goto put_device; if (emc->num_timings == 0) { dev_err(&pdev->dev, "no memory timings for RAM code %u registered\n", ram_code); - return -ENOENT; + err = -ENOENT; + goto put_device; } err = emc_init(emc); if (err) { dev_err(&pdev->dev, "EMC initialization failed: %d\n", err); - return err; + goto put_device; } platform_set_drvdata(pdev, emc); @@ -1244,6 +1248,9 @@ static int tegra_emc_probe(struct platform_device *pdev) emc_debugfs_init(&pdev->dev, emc); return 0; +put_device: + put_device(&mc->dev); + return err; }; static struct platform_driver tegra_emc_driver = {
if of_find_device_by_node() succeed, tegra_emc_probe() doesn't have a corresponding put_device(). Thus add jump target to fix the exception handling for this function implementation. Fixes: 73a7f0a90641("memory: tegra: Add EMC (external memory controller) driver") Signed-off-by: Yu Kuai <yukuai3@huawei.com> --- drivers/memory/tegra/tegra124-emc.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-)