summaryrefslogtreecommitdiff
path: root/drivers/video
diff options
context:
space:
mode:
authorJayant Shekhar <jshekhar@codeaurora.org>2015-01-06 10:36:51 +0530
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:46:33 -0700
commite9bc670954414d439020abfa706a066dc042c257 (patch)
treedbf80f8411e5d871c62bdfa3fcf5ad8a2a53eca3 /drivers/video
parenta4738a73fdc254f27574b0860e7419dc7c1a64f8 (diff)
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: Jayant Shekhar <jshekhar@codeaurora.org>
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/fbdev/msm/mdss_fb.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/drivers/video/fbdev/msm/mdss_fb.c b/drivers/video/fbdev/msm/mdss_fb.c
index 567baf9c6c93..d3f3d22d89c8 100644
--- a/drivers/video/fbdev/msm/mdss_fb.c
+++ b/drivers/video/fbdev/msm/mdss_fb.c
@@ -3490,16 +3490,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;