From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ed1-f53.google.com (mail-ed1-f53.google.com [209.85.208.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BEDB33254BD for ; Tue, 23 Jun 2026 13:19:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.53 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782220799; cv=none; b=mUbDskVMpKHfNG5/BDB8i9beYKAajteN5asbYUuc4WJv0ipz0FBDxragzx3lDZ7ohFLYvLqqLrHx+LijkklR8eHje3fvRdwAzId2vyhaPKBbsshLv2rCQh38FRU2sNJewAq4JWXf4Tx0MMzmvW/BnHq5M8PQhEhEvdffAemi7JA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782220799; c=relaxed/simple; bh=y11WvUR+l4q0fuMYjxYX/9FqI2O4pIXTvZjpNPprJOo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZcD5RWR9JtzZsWgf/Qldvmcu/Vq8BGfDh6CRag7Vftv8ekwcebqWzL8KH3dxPY7oPdxPUPnvRVUWFwH1jARYva+fE+vTYVb0bgCzN8a/fCx8fU8cS/IeHPRdmsfcqXZp14jx/K+qfxbE45jP5jGif/xZ7rR3YGq8Sej5Gmz07gk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ZInyN8ab; arc=none smtp.client-ip=209.85.208.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ZInyN8ab" Received: by mail-ed1-f53.google.com with SMTP id 4fb4d7f45d1cf-697cd68d7adso2756975a12.1 for ; Tue, 23 Jun 2026 06:19:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782220796; x=1782825596; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=/Y6PphOb9ZABROa1QGn6/qy2YxlaF9xxkPzHynumORE=; b=ZInyN8ab7fPFqOKy4WvV54ntZcTeAJb7SeGGaQI7k2MnMQqYxI5YVxtuXrxoLimQDQ 9uShhCbVUupoY0CqQHNjOFc9pT3plUpliNpvfg6AVnyEibd4BAZO4J+76AZTGBHfVNlA Oug2zltQSAGV32++lAIsMIfd3pQmmbjVTKSVcaRJTm+SlAOZSj5T+CCRQEes6BUOGbP1 F3irqyI6Q/GwOhJdLFRxMQCZBJsZS3vdiQc3FOczYjUx9UMVdZhtqB10RFRgusuUJTK3 q7wOIrr4xHMPualZUuR/DCRKqjxIXO1EoEUbxz6136XMrxU52twGXmYgdk0u4NsQhBqZ wHTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782220796; x=1782825596; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=/Y6PphOb9ZABROa1QGn6/qy2YxlaF9xxkPzHynumORE=; b=OFjXASeORbZxG6+ccO8axcig9Kdypsol0nGd2tkxVCUKQN8eOWlXBoEsoa4NZ9OHs0 3a6M5tWxvfqLCgXc1/cDWSjfDqomk6ynammHDwuICMjYVXL/vFal5Jfui0lIwnqcG526 ap7pxXUC44LiCemMNKZz2UkdvATLG2Pa93rDrKCOCqPxiMHI7ODwpybpRGV54msimwb5 QN+vx9uyznrESAHGsXkd4pb+bFeVPifuIcmnWqa8GsWPge753tln3SOfIcc6qpXCPw0E sYLoJZaq+wl+ZY9VoEuwse7ZYvVarDx4B4Jr3R5AjnwMVFlc6/v2ht8KapR1wtn8VQv/ hA2A== X-Forwarded-Encrypted: i=1; AFNElJ9x5iqme+HWPSw40nBEbYoAi6Mu31b2zM5ggbHtlnL0mPbTY6YI0FJqyxM2IShnJXhBPIHJbhKinuMKjW0=@vger.kernel.org X-Gm-Message-State: AOJu0Yw+kGcLCFbE4WAiViOCQNukJ9cYL7IX6liNRaoF/zFn0WqP0aZm Xa2DxzpxTfRzik8XFW75m7cwTiSBJVImnbccdWsMtxSF3XQZrRuNMcRJ X-Gm-Gg: AfdE7ckq+UNEbeZe8zpJKJswlq/GBgPZvaMYrwsiu6uRLMHRwk6YQP80m2ZiWMdYa+2 20aL5H2eU+T0JEjXdhNHWMk/l45V6I+YPNzpNT9UnZL0WFbwTvDRQCoPFeG0XpNp8pfPIGQwq8n Pf0FXcsIgFhMwxEIjGAzxJOsVWOHyf9owqP195Mr+EEj/uR8McEt+XpY06XDO6LyECN5SfoyuEL JZP2IqZYn30RH7xYnunLTSzA2UdVbzPTLeyMuGbcwJTM6Lb7VlkisHqvFJMEhwGMh/JDCPtCfLW u3PJxBkNHa+StPBe5Qt8Ek1Usuxyvt//KsQ+nKk333af99JzP/1HcuKgLJ4pbMahkqlKYriev3m VQLWn2i/PIVx9mSLBb9QY+abbjBei+Y/0BTJ6X3reYhlPc/NDTdt+JOeYC0ArJ5zwh5qWDHHo49 DyOKyEL2V/ZeOC7EJJ4IKd X-Received: by 2002:a05:6402:2345:b0:697:d4ec:15ed with SMTP id 4fb4d7f45d1cf-697dbad10c0mr1435510a12.14.1782220796124; Tue, 23 Jun 2026 06:19:56 -0700 (PDT) Received: from [127.0.0.2] ([194.35.121.133]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6977b82f95dsm5060107a12.3.2026.06.23.06.19.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Jun 2026 06:19:55 -0700 (PDT) From: Diogo Silva Date: Tue, 23 Jun 2026 15:19:31 +0200 Subject: [PATCH v2 2/2] drm/exynos: Add error handling to drm_encoder_init() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260623-exynos-drm-simple-v2-2-a8d59678b7d2@gmail.com> References: <20260623-exynos-drm-simple-v2-0-a8d59678b7d2@gmail.com> In-Reply-To: <20260623-exynos-drm-simple-v2-0-a8d59678b7d2@gmail.com> To: Jingoo Han , Inki Dae , Seung-Woo Kim , Kyungmin Park , David Airlie , Simona Vetter , Krzysztof Kozlowski , Alim Akhtar Cc: dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Diogo Silva X-Mailer: b4 0.14.3 Not handling the return code on drm_encoder_init can lead to silent failure and/or a drm_encoder_cleanup on a non-initialized encoder. This patch adds error handling to the drm_encoder_init calls to prevent that from happening. Signed-off-by: Diogo Silva --- drivers/gpu/drm/exynos/exynos_dp.c | 8 ++++++-- drivers/gpu/drm/exynos/exynos_drm_dpi.c | 9 +++++++-- drivers/gpu/drm/exynos/exynos_drm_dsi.c | 6 ++++-- drivers/gpu/drm/exynos/exynos_drm_vidi.c | 9 +++++++-- drivers/gpu/drm/exynos/exynos_hdmi.c | 9 +++++++-- 5 files changed, 31 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_dp.c b/drivers/gpu/drm/exynos/exynos_dp.c index a2095fb43483..1598892c602b 100644 --- a/drivers/gpu/drm/exynos/exynos_dp.c +++ b/drivers/gpu/drm/exynos/exynos_dp.c @@ -99,8 +99,12 @@ static int exynos_dp_bind(struct device *dev, struct device *master, void *data) dp->drm_dev = drm_dev; - drm_encoder_init(drm_dev, encoder, &exynos_dp_encoder_funcs, - DRM_MODE_ENCODER_TMDS, NULL); + ret = drm_encoder_init(drm_dev, encoder, &exynos_dp_encoder_funcs, + DRM_MODE_ENCODER_TMDS, NULL); + if (ret) { + dev_err(dp->dev, "Failed to initialize encoder\n"); + return ret; + } drm_encoder_helper_add(encoder, &exynos_dp_encoder_helper_funcs); diff --git a/drivers/gpu/drm/exynos/exynos_drm_dpi.c b/drivers/gpu/drm/exynos/exynos_drm_dpi.c index 4a3d443a15e6..4e42a1da81d1 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dpi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dpi.c @@ -198,8 +198,13 @@ int exynos_dpi_bind(struct drm_device *dev, struct drm_encoder *encoder) { int ret; - drm_encoder_init(dev, encoder, &exynos_dpi_encoder_funcs, - DRM_MODE_ENCODER_TMDS, NULL); + ret = drm_encoder_init(dev, encoder, &exynos_dpi_encoder_funcs, + DRM_MODE_ENCODER_TMDS, NULL); + if (ret) { + DRM_DEV_ERROR(encoder_to_dpi(encoder)->dev, + "failed to create encoder ret = %d\n", ret); + return ret; + } drm_encoder_helper_add(encoder, &exynos_dpi_encoder_helper_funcs); diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c index 25c438cdc744..6b7561ac9bb0 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c @@ -83,8 +83,10 @@ static int exynos_dsi_bind(struct device *dev, struct device *master, void *data struct drm_device *drm_dev = data; int ret; - drm_encoder_init(drm_dev, encoder, &exynos_drm_dsi_encoder_funcs, - DRM_MODE_ENCODER_TMDS, NULL); + ret = drm_encoder_init(drm_dev, encoder, &exynos_drm_dsi_encoder_funcs, + DRM_MODE_ENCODER_TMDS, NULL); + if (ret) + return ret; ret = exynos_drm_set_possible_crtcs(encoder, EXYNOS_DISPLAY_TYPE_LCD); if (ret < 0) diff --git a/drivers/gpu/drm/exynos/exynos_drm_vidi.c b/drivers/gpu/drm/exynos/exynos_drm_vidi.c index d905dc703c06..59dea853d364 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_vidi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_vidi.c @@ -449,8 +449,13 @@ static int vidi_bind(struct device *dev, struct device *master, void *data) return PTR_ERR(ctx->crtc); } - drm_encoder_init(drm_dev, encoder, &exynos_vidi_encoder_funcs, - DRM_MODE_ENCODER_TMDS, NULL); + ret = drm_encoder_init(drm_dev, encoder, &exynos_vidi_encoder_funcs, + DRM_MODE_ENCODER_TMDS, NULL); + if (ret) { + DRM_DEV_ERROR(dev, "failed to initialize encoder ret = %d\n", + ret); + return ret; + } drm_encoder_helper_add(encoder, &exynos_vidi_encoder_helper_funcs); diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c index 26baf5357997..f44586ce0fdf 100644 --- a/drivers/gpu/drm/exynos/exynos_hdmi.c +++ b/drivers/gpu/drm/exynos/exynos_hdmi.c @@ -1867,8 +1867,13 @@ static int hdmi_bind(struct device *dev, struct device *master, void *data) hdata->phy_clk.enable = hdmiphy_clk_enable; - drm_encoder_init(drm_dev, encoder, &exynos_hdmi_encoder_funcs, - DRM_MODE_ENCODER_TMDS, NULL); + ret = drm_encoder_init(drm_dev, encoder, &exynos_hdmi_encoder_funcs, + DRM_MODE_ENCODER_TMDS, NULL); + if (ret) { + DRM_DEV_ERROR(dev, "failed to initialize encoder ret = %d\n", + ret); + return ret; + } drm_encoder_helper_add(encoder, &exynos_hdmi_encoder_helper_funcs); -- 2.51.2