rk3188 lcdc: fix kernel panic when rk3188 lcdc probe failed
[firefly-linux-kernel-4.4.55.git] / drivers / video / rockchip / lcdc / rk3188_lcdc.c
index 041ffe7964687900027f485f20822ed634e91f29..56b31297c3b7b5f4f54686249f372b79fdf810fe 100644 (file)
@@ -1334,8 +1334,8 @@ static int __devinit rk3188_lcdc_probe(struct platform_device *pdev)
        else
        {
                printk(KERN_WARNING "no display device on lcdc%d!?\n",lcdc_dev->id);
-               ret =  -ENODEV;
-               goto err4;
+               ret = -ENODEV;
+               goto err3;
        }
 
        init_waitqueue_head(&lcdc_dev->vsync_info.wait);
@@ -1359,12 +1359,13 @@ static int __devinit rk3188_lcdc_probe(struct platform_device *pdev)
                dev_err(dev,"register fb for lcdc%d failed!\n",lcdc_dev->id);
                goto err4;
        }
+       
        printk("rk3188 lcdc%d probe ok!\n",lcdc_dev->id);
        
        return 0;
 
 err4:
-       free_irq(lcdc_dev->irq,lcdc_dev);
+       device_remove_file(&pdev->dev, &dev_attr_vsync);
 err3:
        iounmap(lcdc_dev->regs);
 err2:
@@ -1373,8 +1374,7 @@ err1:
        kfree(screen);
 err0:
        platform_set_drvdata(pdev, NULL);
-       kfree(lcdc_dev);
-       
+
        return ret;
 }