rk3066 lcdc:check parameter for in winx_set_par
authoryxj <yxj@rock-chips.com>
Fri, 27 Sep 2013 09:46:22 +0000 (17:46 +0800)
committeryxj <yxj@rock-chips.com>
Fri, 27 Sep 2013 09:47:09 +0000 (17:47 +0800)
drivers/video/rockchip/lcdc/rk30_lcdc.c

index 3823861ddc00ceda1434ac760b126fabb150ec8d..cf8c1939f6262f8c7547470870aab1229447df8c 100755 (executable)
@@ -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))
        {