mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 19:29:37 +00:00
drm/amd/display: Fix potential mem leak in DC construct
Found by smatch: drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc.c:506 construct() warn: possible memory leak of 'dc_ctx' drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc.c:506 construct() warn: possible memory leak of 'dc_vbios' drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc.c:506 construct() warn: possible memory leak of 'dcn_ip' drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc.c:506 construct() warn: possible memory leak of 'dcn_soc' Signed-off-by: Harry Wentland <harry.wentland@amd.com> Reviewed-by: Tony Cheng <Tony.Cheng@amd.com> Acked-by: Harry Wentland <harry.wentland@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
34996173c8
commit
52924dc3d0
1 changed files with 20 additions and 18 deletions
|
@ -283,19 +283,17 @@ static bool construct(struct dc *dc,
|
|||
const struct dc_init_data *init_params)
|
||||
{
|
||||
struct dal_logger *logger;
|
||||
struct dc_context *dc_ctx = kzalloc(sizeof(*dc_ctx), GFP_KERNEL);
|
||||
struct bw_calcs_dceip *dc_dceip = kzalloc(sizeof(*dc_dceip),
|
||||
GFP_KERNEL);
|
||||
struct bw_calcs_vbios *dc_vbios = kzalloc(sizeof(*dc_vbios),
|
||||
GFP_KERNEL);
|
||||
struct dc_context *dc_ctx;
|
||||
struct bw_calcs_dceip *dc_dceip;
|
||||
struct bw_calcs_vbios *dc_vbios;
|
||||
#ifdef CONFIG_DRM_AMD_DC_DCN1_0
|
||||
struct dcn_soc_bounding_box *dcn_soc = kzalloc(sizeof(*dcn_soc),
|
||||
GFP_KERNEL);
|
||||
struct dcn_ip_params *dcn_ip = kzalloc(sizeof(*dcn_ip), GFP_KERNEL);
|
||||
struct dcn_soc_bounding_box *dcn_soc;
|
||||
struct dcn_ip_params *dcn_ip;
|
||||
#endif
|
||||
|
||||
enum dce_version dc_version = DCE_VERSION_UNKNOWN;
|
||||
|
||||
dc_dceip = kzalloc(sizeof(*dc_dceip), GFP_KERNEL);
|
||||
if (!dc_dceip) {
|
||||
dm_error("%s: failed to create dceip\n", __func__);
|
||||
goto fail;
|
||||
|
@ -303,6 +301,7 @@ static bool construct(struct dc *dc,
|
|||
|
||||
dc->bw_dceip = dc_dceip;
|
||||
|
||||
dc_vbios = kzalloc(sizeof(*dc_vbios), GFP_KERNEL);
|
||||
if (!dc_vbios) {
|
||||
dm_error("%s: failed to create vbios\n", __func__);
|
||||
goto fail;
|
||||
|
@ -310,6 +309,7 @@ static bool construct(struct dc *dc,
|
|||
|
||||
dc->bw_vbios = dc_vbios;
|
||||
#ifdef CONFIG_DRM_AMD_DC_DCN1_0
|
||||
dcn_soc = kzalloc(sizeof(*dcn_soc), GFP_KERNEL);
|
||||
if (!dcn_soc) {
|
||||
dm_error("%s: failed to create dcn_soc\n", __func__);
|
||||
goto fail;
|
||||
|
@ -317,6 +317,7 @@ static bool construct(struct dc *dc,
|
|||
|
||||
dc->dcn_soc = dcn_soc;
|
||||
|
||||
dcn_ip = kzalloc(sizeof(*dcn_ip), GFP_KERNEL);
|
||||
if (!dcn_ip) {
|
||||
dm_error("%s: failed to create dcn_ip\n", __func__);
|
||||
goto fail;
|
||||
|
@ -325,22 +326,24 @@ static bool construct(struct dc *dc,
|
|||
dc->dcn_ip = dcn_ip;
|
||||
#endif
|
||||
|
||||
dc_ctx = kzalloc(sizeof(*dc_ctx), GFP_KERNEL);
|
||||
if (!dc_ctx) {
|
||||
dm_error("%s: failed to create ctx\n", __func__);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
dc->current_state = dc_create_state();
|
||||
|
||||
if (!dc->current_state) {
|
||||
dm_error("%s: failed to create validate ctx\n", __func__);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
dc_ctx->cgs_device = init_params->cgs_device;
|
||||
dc_ctx->driver_context = init_params->driver;
|
||||
dc_ctx->dc = dc;
|
||||
dc_ctx->asic_id = init_params->asic_id;
|
||||
dc->ctx = dc_ctx;
|
||||
|
||||
dc->current_state = dc_create_state();
|
||||
|
||||
if (!dc->current_state) {
|
||||
dm_error("%s: failed to create validate ctx\n", __func__);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
/* Create logger */
|
||||
logger = dal_logger_create(dc_ctx, init_params->log_mask);
|
||||
|
@ -351,11 +354,10 @@ static bool construct(struct dc *dc,
|
|||
goto fail;
|
||||
}
|
||||
dc_ctx->logger = logger;
|
||||
dc->ctx = dc_ctx;
|
||||
dc->ctx->dce_environment = init_params->dce_environment;
|
||||
dc_ctx->dce_environment = init_params->dce_environment;
|
||||
|
||||
dc_version = resource_parse_asic_id(init_params->asic_id);
|
||||
dc->ctx->dce_version = dc_version;
|
||||
dc_ctx->dce_version = dc_version;
|
||||
|
||||
#if defined(CONFIG_DRM_AMD_DC_FBC)
|
||||
dc->ctx->fbc_gpu_addr = init_params->fbc_gpu_addr;
|
||||
|
|
Loading…
Reference in a new issue