lkml.org 
[lkml]   [2020]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 402/639] media: Staging: media: Release the correct resource in an error handling path
    Date
    From: Christophe JAILLET <christophe.jaillet@wanadoo.fr>

    [ Upstream commit 3b6471c7becd06325eb5e701cc2602b2edbbc7b6 ]

    '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>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/staging/media/davinci_vpfe/dm365_ipipe.c | 10 +++++-----
    1 file changed, 5 insertions(+), 5 deletions(-)

    diff --git a/drivers/staging/media/davinci_vpfe/dm365_ipipe.c b/drivers/staging/media/davinci_vpfe/dm365_ipipe.c
    index 95942768639cd..7bf2648affc0c 100644
    --- a/drivers/staging/media/davinci_vpfe/dm365_ipipe.c
    +++ b/drivers/staging/media/davinci_vpfe/dm365_ipipe.c
    @@ -1777,7 +1777,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)
    @@ -1791,11 +1791,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;

    --
    2.20.1


    \
     
     \ /
      Last update: 2020-01-24 12:41    [W:2.077 / U:1.236 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site