diff options
| author | Terence Hampson <thampson@codeaurora.org> | 2013-11-05 11:08:48 -0500 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:23:10 -0700 |
| commit | 7a04aa1f0c9daabc95fd9724d08a4bafcfff56da (patch) | |
| tree | 5fe5017ceaabfacecbfe4b26d6b298925d2481a7 | |
| parent | 2b5862e2bd595a354a05cb5d1f8f47333b94f74e (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.c | 16 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdp3_ctrl.h | 1 |
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; |
