aboutsummaryrefslogtreecommitdiff
path: root/drivers/misc
diff options
context:
space:
mode:
authoryang-cy.chen <yang-cy.chen@mediatek.com>2016-05-20 18:38:34 +0800
committerMoyster <oysterized@gmail.com>2016-11-07 13:46:49 +0100
commit7eb9f26b811bf92d852fe83bbcd8fe8befb9b5b6 (patch)
tree463bb4f2b8731a16d5417e2429a1782ef7f5be1a /drivers/misc
parent50215402c2b90b3af0fdbe72409401d86ec8be1c (diff)
Fix "Security Vulnerability - arbitrary address write ddp_drv.c" issue
Problem: user input parameter without validation Solution: Remove legacy code to prevent buffer overflow Bug num:28402341 Signed-off-by: yang-cy.chen <yang-cy.chen@mediatek.com> (cherry picked from commit 76884c3948a5896c7d724a6852e9f8d1403fa9d0) Change-Id: I77467ae0c0652c7f44238b0320a1a6fef71c0d97 Ticket: PORRIDGE-398
Diffstat (limited to 'drivers/misc')
-rw-r--r--drivers/misc/mediatek/dispsys/mt6735/ddp_color.c47
-rw-r--r--drivers/misc/mediatek/dispsys/mt6735/ddp_drv.h1
-rw-r--r--drivers/misc/mediatek/dispsys/mt6735/ddp_manager.c1
-rw-r--r--drivers/misc/mediatek/videox/mt6735/mtk_disp_mgr.c3
4 files changed, 0 insertions, 52 deletions
diff --git a/drivers/misc/mediatek/dispsys/mt6735/ddp_color.c b/drivers/misc/mediatek/dispsys/mt6735/ddp_color.c
index 19021856e..6724d6f1c 100644
--- a/drivers/misc/mediatek/dispsys/mt6735/ddp_color.c
+++ b/drivers/misc/mediatek/dispsys/mt6735/ddp_color.c
@@ -1607,53 +1607,6 @@ static int _color_io(DISP_MODULE_ENUM module, int msg, unsigned long arg, void *
break;
}
- case DISP_IOCTL_WRITE_REG:
- {
- DISP_WRITE_REG wParams;
- unsigned int ret;
- unsigned long va;
- unsigned int pa;
-
- if(copy_from_user(&wParams, (void *)arg, sizeof(DISP_WRITE_REG)))
- {
- COLOR_ERR("DISP_IOCTL_WRITE_REG, copy_from_user failed\n");
- return -EFAULT;
- }
-
- pa = (unsigned int)wParams.reg;
- va = color_pa2va(pa);
-
- ret = color_is_reg_addr_valid(va);
- if(ret == 0)
- {
- COLOR_ERR("reg write, addr invalid, pa:0x%x(va:0x%lx) \n", pa, va);
- return -EFAULT;
- }
-
- // if TDSHP, write PA directly
- if (ret == 2)
- {
- if(cmdq == NULL)
- {
- mt_reg_sync_writel((unsigned int)(INREG32(va)&~(wParams.mask))|(wParams.val),(volatile unsigned long*)(va) );\
- }
- else
- {
- //cmdqRecWrite(cmdq, TDSHP_PA_BASE + (wParams.reg - g_tdshp_va), wParams.val, wParams.mask);
- cmdqRecWrite(cmdq, pa, wParams.val, wParams.mask);
- }
- }
- else
- {
- _color_reg_mask(cmdq, va, wParams.val, wParams.mask);
- }
-
- COLOR_NLOG("write pa:0x%x(va:0x%lx) = 0x%x (0x%x)\n", pa, va, wParams.val, wParams.mask);
-
- break;
-
- }
-
case DISP_IOCTL_READ_SW_REG:
{
DISP_READ_REG rParams;
diff --git a/drivers/misc/mediatek/dispsys/mt6735/ddp_drv.h b/drivers/misc/mediatek/dispsys/mt6735/ddp_drv.h
index c444e300b..3fd80d8f0 100644
--- a/drivers/misc/mediatek/dispsys/mt6735/ddp_drv.h
+++ b/drivers/misc/mediatek/dispsys/mt6735/ddp_drv.h
@@ -185,7 +185,6 @@ typedef enum
#define DISP_IOCTL_MAGIC 'x'
-#define DISP_IOCTL_WRITE_REG _IOW (DISP_IOCTL_MAGIC, 1, DISP_WRITE_REG) // also defined in atci_pq_cmd.h
#define DISP_IOCTL_READ_REG _IOWR (DISP_IOCTL_MAGIC, 2, DISP_READ_REG) // also defined in atci_pq_cmd.h
//#define DISP_IOCTL_WAIT_IRQ _IOR (DISP_IOCTL_MAGIC, 3, disp_wait_irq_struct)
#define DISP_IOCTL_DUMP_REG _IOR (DISP_IOCTL_MAGIC, 4, int)
diff --git a/drivers/misc/mediatek/dispsys/mt6735/ddp_manager.c b/drivers/misc/mediatek/dispsys/mt6735/ddp_manager.c
index 2b697f6d5..8dc084ad4 100644
--- a/drivers/misc/mediatek/dispsys/mt6735/ddp_manager.c
+++ b/drivers/misc/mediatek/dispsys/mt6735/ddp_manager.c
@@ -1662,7 +1662,6 @@ int dpmgr_path_user_cmd(disp_path_handle dp_handle, int msg, unsigned long arg,
case DISP_IOCTL_GET_PQ_GAL_PARAM:
case DISP_IOCTL_PQ_SET_BYPASS_COLOR:
case DISP_IOCTL_PQ_SET_WINDOW:
- case DISP_IOCTL_WRITE_REG:
case DISP_IOCTL_READ_REG:
case DISP_IOCTL_MUTEX_CONTROL:
case DISP_IOCTL_PQ_GET_TDSHP_FLAG:
diff --git a/drivers/misc/mediatek/videox/mt6735/mtk_disp_mgr.c b/drivers/misc/mediatek/videox/mt6735/mtk_disp_mgr.c
index 563f419f5..3632bd2f5 100644
--- a/drivers/misc/mediatek/videox/mt6735/mtk_disp_mgr.c
+++ b/drivers/misc/mediatek/videox/mt6735/mtk_disp_mgr.c
@@ -2667,8 +2667,6 @@ const char* _session_ioctl_spy(unsigned int cmd)
return "DISP_IOCTL_PQ_SET_BYPASS_COLOR";
case DISP_IOCTL_PQ_SET_WINDOW:
return "DISP_IOCTL_PQ_SET_WINDOW";
- case DISP_IOCTL_WRITE_REG:
- return "DISP_IOCTL_WRITE_REG";
case DISP_IOCTL_READ_REG:
return "DISP_IOCTL_READ_REG";
case DISP_IOCTL_MUTEX_CONTROL:
@@ -2785,7 +2783,6 @@ long mtk_disp_mgr_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
case DISP_IOCTL_PQ_SET_BYPASS_COLOR:
case DISP_IOCTL_PQ_SET_WINDOW:
case DISP_IOCTL_OD_CTL:
- case DISP_IOCTL_WRITE_REG:
case DISP_IOCTL_READ_REG:
case DISP_IOCTL_MUTEX_CONTROL:
case DISP_IOCTL_PQ_GET_TDSHP_FLAG: