drm/amd/display: Release clck_src memory if clk_src_construct fails
authorHersen Wu <hersenxs.wu@amd.com>
Thu, 25 Apr 2024 00:18:30 +0000 (20:18 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 2 May 2024 20:18:18 +0000 (16:18 -0400)
[Why]
Coverity reports RESOURCE_LEAK for some implemenations
of clock_source_create. Do not release memory of clk_src
if contructor fails.

[How]
Free clk_src if contructor fails.

Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Acked-by: Tom Chung <chiahsuan.chung@amd.com>
Signed-off-by: Hersen Wu <hersenxs.wu@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/resource/dce80/dce80_resource.c
drivers/gpu/drm/amd/display/dc/resource/dcn31/dcn31_resource.c
drivers/gpu/drm/amd/display/dc/resource/dcn314/dcn314_resource.c
drivers/gpu/drm/amd/display/dc/resource/dcn35/dcn35_resource.c
drivers/gpu/drm/amd/display/dc/resource/dcn351/dcn351_resource.c

index 56ee45e12b461cedaf4d892849cd904d6df0e9c4..a73d3c6ef425856b7cd8748b7cb01aeeea4ef4e1 100644 (file)
@@ -1538,6 +1538,7 @@ struct resource_pool *dce83_create_resource_pool(
        if (dce83_construct(num_virtual_links, dc, pool))
                return &pool->base;
 
+       kfree(pool);
        BREAK_TO_DEBUGGER();
        return NULL;
 }
index d4c3e2754f51671d6db1cd3e85517fef1d646b84..5d1801dce2730eb52b220bf76685d989e51d615c 100644 (file)
@@ -1864,6 +1864,7 @@ static struct clock_source *dcn30_clock_source_create(
                return &clk_src->base;
        }
 
+       kfree(clk_src);
        BREAK_TO_DEBUGGER();
        return NULL;
 }
index ff50f43e4c000595f427d53a3f8d59f6f55483f6..da73e842c55c8ca569b4388fdf2efb10af815058 100644 (file)
@@ -1660,8 +1660,8 @@ static struct clock_source *dcn31_clock_source_create(
                return &clk_src->base;
        }
 
-       BREAK_TO_DEBUGGER();
        kfree(clk_src);
+       BREAK_TO_DEBUGGER();
        return NULL;
 }
 
@@ -1821,8 +1821,8 @@ static struct clock_source *dcn30_clock_source_create(
                return &clk_src->base;
        }
 
-       BREAK_TO_DEBUGGER();
        kfree(clk_src);
+       BREAK_TO_DEBUGGER();
        return NULL;
 }
 
index 2df8a742516c87d68e4e60bc8296fe29b55352c8..28c4599076989a4b09d8f2b5faa948b01323c29f 100644 (file)
@@ -1716,6 +1716,7 @@ static struct clock_source *dcn35_clock_source_create(
                return &clk_src->base;
        }
 
+       kfree(clk_src);
        BREAK_TO_DEBUGGER();
        return NULL;
 }
index 982526c41d55aa931ecb3603d48a15554dc60eb9..203fd4aaf9f9dc0aa892079c31c2451d543362b5 100644 (file)
@@ -1696,6 +1696,7 @@ static struct clock_source *dcn35_clock_source_create(
                return &clk_src->base;
        }
 
+       kfree(clk_src);
        BREAK_TO_DEBUGGER();
        return NULL;
 }