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

Commit 3d21bde9 authored by Krishna Chaitanya Devarakonda's avatar Krishna Chaitanya Devarakonda
Browse files

msm: mdss: Fix potential NULL pointer dereferences



Fixing potential NULL pointer dereferences in MDSS driver.

Change-Id: Idbb3b2524b3c2165e9922d934047b7ba46141a6c
Signed-off-by: default avatarKrishna Chaitanya Devarakonda <kdevarak@codeaurora.org>
parent 55cb63cb
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -1379,6 +1379,9 @@ void mdss_misr_disable(struct mdss_data_type *mdata,
	map = mdss_misr_get_map(req->block_id, ctl, mdata,
		ctl->is_video_mode);

	if (!map)
		return;

	/* clear the map data */
	memset(map->crc_ping, 0, sizeof(map->crc_ping));
	memset(map->crc_pong, 0, sizeof(map->crc_pong));
+1 −1
Original line number Diff line number Diff line
@@ -352,7 +352,7 @@ int mdss_dsi_panel_reset(struct mdss_panel_data *pdata, int enable)
		}

		if (gpio_is_valid(ctrl_pdata->mode_gpio)) {
			bool out;
			bool out = false;

			if (pinfo->mode_gpio_state == MODE_GPIO_HIGH)
				out = true;
+6 −6
Original line number Diff line number Diff line
@@ -1161,7 +1161,7 @@ int mdss_mdp_perf_calc_pipe(struct mdss_mdp_pipe *pipe,
	prefill_params.is_hflip = pipe->flags & MDP_FLIP_LR;
	prefill_params.is_cmd = !mixer->ctl->is_video_mode;
	prefill_params.pnum = pipe->num;
	prefill_params.is_bwc = mdss_mdp_is_ubwc_format(pipe->src_fmt);
	prefill_params.is_ubwc = mdss_mdp_is_ubwc_format(pipe->src_fmt);
	prefill_params.is_nv12 = mdss_mdp_is_nv12_format(pipe->src_fmt);

	mdss_mdp_get_bw_vote_mode(mixer, mdata->mdp_rev, perf,
@@ -4276,16 +4276,16 @@ void mdss_mdp_set_roi(struct mdss_mdp_ctl *ctl,
	}

	previous_frame_pu_type = mdss_mdp_get_pu_type(ctl);
	if (ctl->mixer_left) {
		mdss_mdp_set_mixer_roi(ctl->mixer_left, l_roi);
	if (ctl->mixer_left)
		ctl->roi = ctl->mixer_left->roi;
	}

	if (ctl->mfd->split_mode == MDP_DUAL_LM_DUAL_DISPLAY) {
		struct mdss_mdp_ctl *sctl = mdss_mdp_get_split_ctl(ctl);

		if (sctl) {
		if (sctl && sctl->mixer_left) {
				mdss_mdp_set_mixer_roi(sctl->mixer_left, r_roi);
			if (sctl->mixer_left)
				sctl->roi = sctl->mixer_left->roi;
		}
	} else if (is_dual_lm_single_display(ctl->mfd) && ctl->mixer_right) {
+4 −2
Original line number Diff line number Diff line
@@ -3365,18 +3365,20 @@ static ssize_t mdss_mdp_misr_store(struct device *dev,
		req.frame_count = 1;
	} else {
		pr_err("misr not supported fo this fb:%d\n", mfd->index);
		rc = -ENODEV;
		return rc;
	}

	if (enable_misr) {
		mdss_misr_set(mdata, &req , ctl);

		if (is_panel_split(mfd))
		if ((ctl->intf_type == MDSS_INTF_DSI) && is_panel_split(mfd))
			mdss_misr_set(mdata, &sreq , ctl);

	} else {
		mdss_misr_disable(mdata, &req, ctl);

		if (is_panel_split(mfd))
		if ((ctl->intf_type == MDSS_INTF_DSI) && is_panel_split(mfd))
			mdss_misr_disable(mdata, &sreq , ctl);
	}

+3 −3
Original line number Diff line number Diff line
@@ -880,8 +880,8 @@ static void adv7533_handle_cec_intr(struct adv7533 *pdata, u8 cec_status)
{
	u8 cec_int_clear = 0x08;
	bool cec_rx_intr = false;
	u8 cec_rx_ready;
	u8 cec_rx_timestamp;
	u8 cec_rx_ready = 0;
	u8 cec_rx_timestamp = 0;

	if (!pdata) {
		pr_err("%s: Invalid input\n", __func__);
@@ -983,7 +983,7 @@ end:

static void *adv7533_handle_hpd_intr(struct adv7533 *pdata)
{
	int ret;
	int ret = 0;
	u8 hpd_state;
	u8 connected = 0, disconnected = 0;