summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeung-Woo Kim <sw0312.kim@samsung.com>2019-10-22 10:52:24 +0900
committerSeung-Woo Kim <sw0312.kim@samsung.com>2019-10-22 10:53:12 +0900
commitdefa77f39f76ec487a1cca3002b7d317de1c7c9a (patch)
treeaa5488bcc8ab518e681660341c4b21ad32058f54
parentdcf999faef29bcb4ad700c1dc5b86d88c7c406a9 (diff)
downloadlinux-4.9-exynos9110-defa77f39f76ec487a1cca3002b7d317de1c7c9a.tar.gz
linux-4.9-exynos9110-defa77f39f76ec487a1cca3002b7d317de1c7c9a.tar.bz2
linux-4.9-exynos9110-defa77f39f76ec487a1cca3002b7d317de1c7c9a.zip
video: fbdev: exynos: dpu9110: fix null pointer deference for recovery_cnt
There is no drvdata for specific instance of dpp when it is not assigned from dt, and accessing it without null check causes null pointer deference. Fix the null pointer defercens when accessing recovery_cnt. Change-Id: Ie57024101d461b1135f341bd1f76b55d0d77ec73 Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
-rw-r--r--drivers/video/fbdev/exynos/dpu_9110/dpp_drv.c8
-rwxr-xr-xdrivers/video/fbdev/exynos/dpu_9110/event_log.c6
2 files changed, 10 insertions, 4 deletions
diff --git a/drivers/video/fbdev/exynos/dpu_9110/dpp_drv.c b/drivers/video/fbdev/exynos/dpu_9110/dpp_drv.c
index 19c6bfdf7fc2..939b0624c29d 100644
--- a/drivers/video/fbdev/exynos/dpu_9110/dpp_drv.c
+++ b/drivers/video/fbdev/exynos/dpu_9110/dpp_drv.c
@@ -825,8 +825,12 @@ static irqreturn_t dma_irq_handler(int irq, void *priv)
dpp_info("dma%d recovery start(0x%x).. [src=%s], cnt[%d %d]\n",
dpp->id, irqs,
val == DPP_COMP_SRC_G2D ? "G2D" : "GPU",
- get_dpp_drvdata(IDMA_VGF0)->d.recovery_cnt,
- get_dpp_drvdata(IDMA_VGF1)->d.recovery_cnt);
+ (get_dpp_drvdata(IDMA_VGF0) ?
+ get_dpp_drvdata(IDMA_VGF0)->d.recovery_cnt :
+ 0),
+ (get_dpp_drvdata(IDMA_VGF1) ?
+ get_dpp_drvdata(IDMA_VGF1)->d.recovery_cnt :
+ 0));
goto irq_end;
}
diff --git a/drivers/video/fbdev/exynos/dpu_9110/event_log.c b/drivers/video/fbdev/exynos/dpu_9110/event_log.c
index ea516a60a170..f65e284bc7c0 100755
--- a/drivers/video/fbdev/exynos/dpu_9110/event_log.c
+++ b/drivers/video/fbdev/exynos/dpu_9110/event_log.c
@@ -903,8 +903,10 @@ static const struct file_operations decon_cmd_lp_ref_fops = {
static int decon_debug_rec_show(struct seq_file *s, void *unused)
{
seq_printf(s, "VGF0[%u] VGF1[%u]\n",
- get_dpp_drvdata(IDMA_VGF0)->d.recovery_cnt,
- get_dpp_drvdata(IDMA_VGF1)->d.recovery_cnt);
+ (get_dpp_drvdata(IDMA_VGF0) ?
+ get_dpp_drvdata(IDMA_VGF0)->d.recovery_cnt : 0),
+ (get_dpp_drvdata(IDMA_VGF1) ?
+ get_dpp_drvdata(IDMA_VGF1)->d.recovery_cnt : 0));
return 0;
}