Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dedb8df7 authored by Benet Clark's avatar Benet Clark
Browse files

msm: mdss: Free allocated layer pp_info when scalar copy fails



During atomic commit ioctl, the pp_info and scale data structures
are deep-copied in to kernel structures. If the scale data is failing
to copy, the kernel pp_info structure needs to be freed before exiting
with error.

Change-Id: Ia51f27c288dd88bb36311eae073294208259b71f
Signed-off-by: default avatarBenet Clark <benetc@codeaurora.org>
parent 38069d6f
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -4097,6 +4097,7 @@ static int mdss_fb_atomic_commit_ioctl(struct fb_info *info,
				GFP_KERNEL);
			if (!scale) {
				pr_err("unable to allocate memory for overlays\n");
				mdss_mdp_free_layer_pp_info(layer);
				ret = -ENOMEM;
				goto err;
			}
@@ -4108,6 +4109,7 @@ static int mdss_fb_atomic_commit_ioctl(struct fb_info *info,
						layer->scale);
				kfree(scale);
				scale = NULL;
				mdss_mdp_free_layer_pp_info(layer);
				ret = -EFAULT;
				goto err;
			}
+3 −2
Original line number Diff line number Diff line
@@ -6489,8 +6489,8 @@ exit_pp_info:

void mdss_mdp_free_layer_pp_info(struct mdp_input_layer *layer)
{
	struct mdp_overlay_pp_params *pp_info =
		(struct mdp_overlay_pp_params *) layer->pp_info;
	struct mdp_overlay_pp_params *pp_info = (layer) ?
		(struct mdp_overlay_pp_params *) layer->pp_info : NULL;

	if (!pp_info)
		return;
@@ -6500,6 +6500,7 @@ void mdss_mdp_free_layer_pp_info(struct mdp_input_layer *layer)
	kfree(pp_info->pa_v2_cfg_data.cfg_payload);
	kfree(pp_info->pcc_cfg_data.cfg_payload);
	kfree(pp_info);
	layer->pp_info = NULL;
}

int mdss_mdp_mfd_valid_dspp(struct msm_fb_data_type *mfd)