In function gsc_set_gscblk_fimd_wb(), local variable "gscblk_cfg" could be uninitialized of function regmap_read returns -EINVAL. However, this value will be write to the register after "or" operation. This is potentially unsafe. Signed-off-by: Yizhuo <yzhai003@xxxxxxx> --- drivers/gpu/drm/exynos/exynos_drm_gsc.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_gsc.c b/drivers/gpu/drm/exynos/exynos_drm_gsc.c index 0506b2b17ac1..b1d0f974fe80 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_gsc.c +++ b/drivers/gpu/drm/exynos/exynos_drm_gsc.c @@ -441,11 +441,16 @@ static int gsc_sw_reset(struct gsc_context *ctx) static void gsc_set_gscblk_fimd_wb(struct gsc_context *ctx, bool enable) { unsigned int gscblk_cfg; + int ret; if (!ctx->sysreg) return; - regmap_read(ctx->sysreg, SYSREG_GSCBLK_CFG1, &gscblk_cfg); + ret = regmap_read(ctx->sysreg, SYSREG_GSCBLK_CFG1, &gscblk_cfg); + if (ret) { + DRM_ERROR("gsc: Fail to read system register\n"); + return; + } if (enable) gscblk_cfg |= GSC_BLK_DISP1WB_DEST(ctx->id) | -- 2.17.1