summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTerence Hampson <thampson@codeaurora.org>2013-11-05 11:08:48 -0500
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:23:10 -0700
commit7a04aa1f0c9daabc95fd9724d08a4bafcfff56da (patch)
tree5fe5017ceaabfacecbfe4b26d6b298925d2481a7
parent2b5862e2bd595a354a05cb5d1f8f47333b94f74e (diff)
msm: mdp3: move mdp_overlay variable from stack to heap
We are moving struct mdp_overlay variable from stack to heap since mdp_overlay size increase significantly recently. There was a warning from compiler saying that frame size is larger than 1024 bytes, which is resolved with this patch. Similar change is present in mdss code. Change-Id: Ib19fb63596f095a5a6b2be9b10b5eeb04542449f Signed-off-by: Terence Hampson <thampson@codeaurora.org>
-rw-r--r--drivers/video/fbdev/msm/mdp3_ctrl.c16
-rw-r--r--drivers/video/fbdev/msm/mdp3_ctrl.h1
2 files changed, 10 insertions, 7 deletions
diff --git a/drivers/video/fbdev/msm/mdp3_ctrl.c b/drivers/video/fbdev/msm/mdp3_ctrl.c
index d31038689bd8..fc181ee738ac 100644
--- a/drivers/video/fbdev/msm/mdp3_ctrl.c
+++ b/drivers/video/fbdev/msm/mdp3_ctrl.c
@@ -1385,7 +1385,7 @@ static int mdp3_ctrl_ioctl_handler(struct msm_fb_data_type *mfd,
int rc = -EINVAL;
struct mdp3_session_data *mdp3_session;
struct msmfb_metadata metadata;
- struct mdp_overlay req;
+ struct mdp_overlay *req = NULL;
struct msmfb_overlay_data ov_data;
int val;
@@ -1393,6 +1393,8 @@ static int mdp3_ctrl_ioctl_handler(struct msm_fb_data_type *mfd,
if (!mdp3_session)
return -ENODEV;
+ req = &mdp3_session->req_overlay;
+
if (!mdp3_session->status && cmd != MSMFB_METADATA_GET) {
pr_err("mdp3_ctrl_ioctl_handler, display off!\n");
return -EPERM;
@@ -1432,23 +1434,23 @@ static int mdp3_ctrl_ioctl_handler(struct msm_fb_data_type *mfd,
rc = copy_to_user(argp, &metadata, sizeof(metadata));
break;
case MSMFB_OVERLAY_GET:
- rc = copy_from_user(&req, argp, sizeof(req));
+ rc = copy_from_user(req, argp, sizeof(*req));
if (!rc) {
- rc = mdp3_overlay_get(mfd, &req);
+ rc = mdp3_overlay_get(mfd, req);
if (!IS_ERR_VALUE(rc))
- rc = copy_to_user(argp, &req, sizeof(req));
+ rc = copy_to_user(argp, req, sizeof(*req));
}
if (rc)
pr_err("OVERLAY_GET failed (%d)\n", rc);
break;
case MSMFB_OVERLAY_SET:
- rc = copy_from_user(&req, argp, sizeof(req));
+ rc = copy_from_user(req, argp, sizeof(*req));
if (!rc) {
- rc = mdp3_overlay_set(mfd, &req);
+ rc = mdp3_overlay_set(mfd, req);
if (!IS_ERR_VALUE(rc))
- rc = copy_to_user(argp, &req, sizeof(req));
+ rc = copy_to_user(argp, req, sizeof(*req));
}
if (rc)
pr_err("OVERLAY_SET failed (%d)\n", rc);
diff --git a/drivers/video/fbdev/msm/mdp3_ctrl.h b/drivers/video/fbdev/msm/mdp3_ctrl.h
index 7c4f6ac7eb44..66ed3d578a18 100644
--- a/drivers/video/fbdev/msm/mdp3_ctrl.h
+++ b/drivers/video/fbdev/msm/mdp3_ctrl.h
@@ -45,6 +45,7 @@ struct mdp3_session_data {
int vsync_period;
struct sysfs_dirent *vsync_event_sd;
struct mdp_overlay overlay;
+ struct mdp_overlay req_overlay;
struct mdp3_buffer_queue bufq_in;
struct mdp3_buffer_queue bufq_out;
int histo_status;