Commit 3b6471c7 authored by Christophe JAILLET's avatar Christophe JAILLET Committed by Mauro Carvalho Chehab
Browse files

media: Staging: media: Release the correct resource in an error handling path



'res' is reassigned several times in the function and if we 'goto
error_unmap', its value is not the returned value of 'request_mem_region()'
anymore.

Introduce a new 'struct resource *' variable (i.e. res2) to keep a pointer
to the right resource, if needed in the error handling path.

Fixes: 4b4eda00 ("Staging: media: Unmap and release region obtained by ioremap_nocache")

Signed-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
parent 05a7c22c
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -1772,7 +1772,7 @@ vpfe_ipipe_init(struct vpfe_ipipe_device *ipipe, struct platform_device *pdev)
	struct media_pad *pads = &ipipe->pads[0];
	struct v4l2_subdev *sd = &ipipe->subdev;
	struct media_entity *me = &sd->entity;
	struct resource *res, *memres;
	struct resource *res, *res2, *memres;

	res = platform_get_resource(pdev, IORESOURCE_MEM, 4);
	if (!res)
@@ -1786,11 +1786,11 @@ vpfe_ipipe_init(struct vpfe_ipipe_device *ipipe, struct platform_device *pdev)
	if (!ipipe->base_addr)
		goto error_release;

	res = platform_get_resource(pdev, IORESOURCE_MEM, 6);
	if (!res)
	res2 = platform_get_resource(pdev, IORESOURCE_MEM, 6);
	if (!res2)
		goto error_unmap;
	ipipe->isp5_base_addr = ioremap_nocache(res->start,
						resource_size(res));
	ipipe->isp5_base_addr = ioremap_nocache(res2->start,
						resource_size(res2));
	if (!ipipe->isp5_base_addr)
		goto error_unmap;