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: 4b4eda001704 ("Staging: media: Unmap and release region obtained by ioremap_nocache")

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
This commit is contained in:
Christophe JAILLET 2017-08-20 12:49:01 -04:00 committed by Mauro Carvalho Chehab
parent 05a7c22c2f
commit 3b6471c7be

View File

@ -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;