Skip to content

Commit 2c18107

Browse files
tititiou36superna9999
authored andcommitted
drm/meson: Fix some error handling paths in 'meson_drv_bind_master()'
If one of these functions fail, we whould free 'drm', as alreadry done in the other error handling paths, below and above. Fixes: bbbe775 ("drm: Add support for Amlogic Meson Graphic Controller") Signed-off-by: Christophe JAILLET <[email protected]> Acked-by: Neil Armstrong <[email protected]> Signed-off-by: Neil Armstrong <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/df47e03d36c2cf7bc37ec3105fc47c16555bd946.1520885192.git.christophe.jaillet@wanadoo.fr
1 parent dcacf65 commit 2c18107

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

drivers/gpu/drm/meson/meson_drv.c

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -189,35 +189,43 @@ static int meson_drv_bind_master(struct device *dev, bool has_components)
189189

190190
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "vpu");
191191
regs = devm_ioremap_resource(dev, res);
192-
if (IS_ERR(regs))
193-
return PTR_ERR(regs);
192+
if (IS_ERR(regs)) {
193+
ret = PTR_ERR(regs);
194+
goto free_drm;
195+
}
194196

195197
priv->io_base = regs;
196198

197199
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "hhi");
198200
/* Simply ioremap since it may be a shared register zone */
199201
regs = devm_ioremap(dev, res->start, resource_size(res));
200-
if (!regs)
201-
return -EADDRNOTAVAIL;
202+
if (!regs) {
203+
ret = -EADDRNOTAVAIL;
204+
goto free_drm;
205+
}
202206

203207
priv->hhi = devm_regmap_init_mmio(dev, regs,
204208
&meson_regmap_config);
205209
if (IS_ERR(priv->hhi)) {
206210
dev_err(&pdev->dev, "Couldn't create the HHI regmap\n");
207-
return PTR_ERR(priv->hhi);
211+
ret = PTR_ERR(priv->hhi);
212+
goto free_drm;
208213
}
209214

210215
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "dmc");
211216
/* Simply ioremap since it may be a shared register zone */
212217
regs = devm_ioremap(dev, res->start, resource_size(res));
213-
if (!regs)
214-
return -EADDRNOTAVAIL;
218+
if (!regs) {
219+
ret = -EADDRNOTAVAIL;
220+
goto free_drm;
221+
}
215222

216223
priv->dmc = devm_regmap_init_mmio(dev, regs,
217224
&meson_regmap_config);
218225
if (IS_ERR(priv->dmc)) {
219226
dev_err(&pdev->dev, "Couldn't create the DMC regmap\n");
220-
return PTR_ERR(priv->dmc);
227+
ret = PTR_ERR(priv->dmc);
228+
goto free_drm;
221229
}
222230

223231
priv->vsync_irq = platform_get_irq(pdev, 0);

0 commit comments

Comments
 (0)