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

Commit 601424af authored by Jayant Shekhar's avatar Jayant Shekhar Committed by Anusha Koduru
Browse files

msm: mdss: Use heap instead of stack for panel_info in check var



If add new elements to the structure mdss_panel_info, there
are possibilities to run into build errors as local variable
of mdss_panel_info in function mdss_fb_check_var has huge
size which crossing the 2048 limit. Hence use heap instead
of stack for mdss_panel_info.

Change-Id: I1f07c2f00f5bf6cb494859a85108e3dab8775293
Signed-off-by: default avatarJayant Shekhar <jshekhar@codeaurora.org>
parent 09deb55f
Loading
Loading
Loading
Loading
+13 −5
Original line number Diff line number Diff line
@@ -3489,16 +3489,24 @@ static int mdss_fb_check_var(struct fb_var_screeninfo *var,
		if (mode == NULL)
			return -EINVAL;
	} else if (mfd->panel_info && !(var->activate & FB_ACTIVATE_TEST)) {
		struct mdss_panel_info *panel_info;
		int rc;
		panel_info = kzalloc(sizeof(struct mdss_panel_info),
				GFP_KERNEL);
		if (!panel_info)
			return -ENOMEM;

		memcpy(&mfd->reconfig_panel_info, mfd->panel_info,
				sizeof(mfd->reconfig_panel_info));
		mdss_fb_var_to_panelinfo(var, &mfd->reconfig_panel_info);
		memcpy(panel_info, mfd->panel_info,
				sizeof(struct mdss_panel_info));
		mdss_fb_var_to_panelinfo(var, panel_info);
		rc = mdss_fb_send_panel_event(mfd, MDSS_EVENT_CHECK_PARAMS,
			&mfd->reconfig_panel_info);
		if (IS_ERR_VALUE(rc))
			panel_info);
		if (IS_ERR_VALUE(rc)) {
			kfree(panel_info);
			return rc;
		}
		mfd->panel_reconfig = rc;
		kfree(panel_info);
	}

	return 0;