]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/amd/display: Have risk for memory exhaustion
authorLongJun Tang <tanglongjun@kylinos.cn>
Fri, 4 Nov 2022 09:29:31 +0000 (17:29 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 9 Nov 2022 22:41:42 +0000 (17:41 -0500)
In dcn*_clock_source_create when dcn*_clk_src_construct fails allocated
clk_src needs release. A local attack could use this to cause memory
exhaustion.

Signed-off-by: LongJun Tang <tanglongjun@kylinos.cn>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/dcn30/dcn30_resource.c
drivers/gpu/drm/amd/display/dc/dcn301/dcn301_resource.c
drivers/gpu/drm/amd/display/dc/dcn302/dcn302_resource.c
drivers/gpu/drm/amd/display/dc/dcn303/dcn303_resource.c
drivers/gpu/drm/amd/display/dc/dcn31/dcn31_resource.c
drivers/gpu/drm/amd/display/dc/dcn315/dcn315_resource.c
drivers/gpu/drm/amd/display/dc/dcn32/dcn32_resource.c
drivers/gpu/drm/amd/display/dc/dcn321/dcn321_resource.c

index af4fe695535ed9b35ba371d4cb73cea39fec6a36..e057f8a93377d32c301b0d386fdab9c2539666f6 100644 (file)
@@ -1328,6 +1328,7 @@ static struct clock_source *dcn30_clock_source_create(
                return &clk_src->base;
        }
 
+       kfree(clk_src);
        BREAK_TO_DEBUGGER();
        return NULL;
 }
index f04595b750abcd0b108be9518b536f9b5b0e32db..7c1225046544af4a991c0b7f4921ef91e4943dba 100644 (file)
@@ -1288,6 +1288,7 @@ static struct clock_source *dcn301_clock_source_create(
                return &clk_src->base;
        }
 
+       kfree(clk_src);
        BREAK_TO_DEBUGGER();
        return NULL;
 }
index d3945876acedadc2175b8c43798b14adf2dd7464..9ca7db0ec7b0b4025ded7a32c061655130f2b5ca 100644 (file)
@@ -464,6 +464,7 @@ static struct clock_source *dcn302_clock_source_create(struct dc_context *ctx, s
                return &clk_src->base;
        }
 
+       kfree(clk_src);
        BREAK_TO_DEBUGGER();
        return NULL;
 }
index 7e7f18bef0986fb5b8ec8fa90689a1fc75090d39..932c5d5706ecfc45bbc8d30cc1fde018b83a9eca 100644 (file)
@@ -431,6 +431,7 @@ static struct clock_source *dcn303_clock_source_create(struct dc_context *ctx, s
                return &clk_src->base;
        }
 
+       kfree(clk_src);
        BREAK_TO_DEBUGGER();
        return NULL;
 }
index 8f5e89cb9d3ec6e609bf66d0333da03c2bc21f23..15e73f4d92ab8511cdd955f93c365926cdc01930 100644 (file)
@@ -1629,6 +1629,7 @@ static struct clock_source *dcn31_clock_source_create(
                return &clk_src->base;
        }
 
+       kfree(clk_src);
        BREAK_TO_DEBUGGER();
        return NULL;
 }
index 96a3d41febffecce6333088eb41c07f8948db29f..2c68862b0d8edade93af710c410f6c6cf77a7c1b 100644 (file)
@@ -1627,6 +1627,7 @@ static struct clock_source *dcn31_clock_source_create(
                return &clk_src->base;
        }
 
+       kfree(clk_src);
        BREAK_TO_DEBUGGER();
        return NULL;
 }
index 77e40ee488bd628be2bc17b9ed7bd62f2faa9c8c..f7fea3544c31c5dbdcedd618b0f877f7c9a2409a 100644 (file)
@@ -830,6 +830,7 @@ static struct clock_source *dcn32_clock_source_create(
                return &clk_src->base;
        }
 
+       kfree(clk_src);
        BREAK_TO_DEBUGGER();
        return NULL;
 }
index e5861225f1df9afef54692370797cff04a19448a..d7d2c42bdb0f47bf0eeff1c1f9d870185e01e3f1 100644 (file)
@@ -829,6 +829,7 @@ static struct clock_source *dcn321_clock_source_create(
                return &clk_src->base;
        }
 
+       kfree(clk_src);
        BREAK_TO_DEBUGGER();
        return NULL;
 }