From 7339699e74920509c95fcb61a4c8370cf47415ac Mon Sep 17 00:00:00 2001 From: yxj Date: Fri, 27 Sep 2013 17:46:22 +0800 Subject: [PATCH] rk3066 lcdc:check parameter for in winx_set_par --- drivers/video/rockchip/lcdc/rk30_lcdc.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/drivers/video/rockchip/lcdc/rk30_lcdc.c b/drivers/video/rockchip/lcdc/rk30_lcdc.c index 3823861ddc00..cf8c1939f626 100755 --- a/drivers/video/rockchip/lcdc/rk30_lcdc.c +++ b/drivers/video/rockchip/lcdc/rk30_lcdc.c @@ -534,7 +534,13 @@ static int win0_set_par(struct rk30_lcdc_device *lcdc_dev,rk_screen *screen, DBG(1,"%s for lcdc%d>>format:%s>>>xact:%d>>yact:%d>>xsize:%d>>ysize:%d>>xvir:%d>>yvir:%d>>xpos:%d>>ypos:%d>>\n", __func__,lcdc_dev->id,get_format_string(par->format,fmt),xact,yact,par->xsize,par->ysize,xvir,yvir,xpos,ypos); - + + if((!xact) || (!yact) || (!par->xsize) || (!par->ysize)) + { + dev_err(lcdc_dev->driver.dev,"invalid parameter for win0-->xact:%d yact:%d xsize:%d ysize:%d\n", + xact,yact,par->xsize,par->ysize); + return -EINVAL; + } ScaleYrgbX = CalScale(xact, par->xsize); //both RGB and yuv need this two factor ScaleYrgbY = CalScale(yact, par->ysize); switch (par->format) @@ -643,7 +649,12 @@ static int win1_set_par(struct rk30_lcdc_device *lcdc_dev,rk_screen *screen, DBG(1,"%s for lcdc%d>>format:%s>>>xact:%d>>yact:%d>>xsize:%d>>ysize:%d>>xvir:%d>>yvir:%d>>xpos:%d>>ypos:%d>>\n", __func__,lcdc_dev->id,get_format_string(par->format,fmt),xact,yact,par->xsize,par->ysize,xvir,yvir,xpos,ypos); - + if((!xact) || (!yact) || (!par->xsize) || (!par->ysize)) + { + dev_err(lcdc_dev->driver.dev,"invalid parameter for win1-->xact:%d yact:%d xsize:%d ysize:%d\n", + xact,yact,par->xsize,par->ysize); + return -EINVAL; + } spin_lock(&lcdc_dev->reg_lock); if(likely(lcdc_dev->clk_on)) { @@ -740,7 +751,12 @@ static int win2_set_par(struct rk30_lcdc_device *lcdc_dev,rk_screen *screen, DBG(1,"%s for lcdc%d>>format:%s>>>xact:%d>>yact:%d>>xsize:%d>>ysize:%d>>xvir:%d>>yvir:%d>>xpos:%d>>ypos:%d>>\n", __func__,lcdc_dev->id,get_format_string(par->format,fmt),xact,yact,par->xsize,par->ysize,xvir,yvir,xpos,ypos); - + if((!xact) || (!yact) || (!par->xsize) || (!par->ysize)) + { + dev_err(lcdc_dev->driver.dev,"invalid parameter for win2-->xact:%d yact:%d xsize:%d ysize:%d\n", + xact,yact,par->xsize,par->ysize); + return -EINVAL; + } spin_lock(&lcdc_dev->reg_lock); if(likely(lcdc_dev->clk_on)) { -- 2.34.1