From nobody Sat Feb 7 18:00:51 2026 Received: from mail-ej1-f65.google.com (mail-ej1-f65.google.com [209.85.218.65]) (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 756D9241CB2 for ; Fri, 2 Jan 2026 15:56:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.65 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767369363; cv=none; b=D+ze1QenloaORPwUQMtQNFVxfJFiXRQ5xEdLlRY2zq1YP1E+yfWdnanvI4jhTviiJzO52aCHbd5900ymroh3S7VBeJroEeLp3KbykErQZ4U/Tt4SU5HclfZaAhiJFkriID7GaFhrWqSqjpeta3L1n09WGsYrIcFmlSVyL7NS/LQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767369363; c=relaxed/simple; bh=5HQ+qZEOvKLSM3M1aXgu2zDptwhry+oiv8fhyVpjSLk=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=skiGFCOwdBUOUXOT7ryovds99SBlw2F9naeXiPU7j5PZJ7Ca7FT68BVrUPUfNx+UUhwsYEf9PNoWJp3uRxgqOQadjjq9qONQnoiFKEatUaL7YJdKmIfmVsBaerEJ2BHNkIJRJaBIm5p+WX2oK4f5ipYuExlBoob8WGvCrPTTsQg= 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=C5McFdDz; arc=none smtp.client-ip=209.85.218.65 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="C5McFdDz" Received: by mail-ej1-f65.google.com with SMTP id a640c23a62f3a-b79ea617f55so2339577766b.3 for ; Fri, 02 Jan 2026 07:56:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767369360; x=1767974160; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=U/E4Pkle8R/umjjml+ar6gI8frpDcsvylCBgQE9LDis=; b=C5McFdDzH1QRc9net2dJDd2GnGdwp5kNatArENygxajziGnTXx/1z8H1MH1xXQGDep YetuVJb48+yVxlk5zne34ThOWcSZ7TFD0j9p1scm6QvoSaIiLGOMOaLsicb8xZNm+Y/C 7JkU9hVPVqcJXE8MOdxjHJ6V8sbR2SUqMzCf8/VGUYxyMfpDVQPe+cMFW2TnfLBoU/E5 zh7ChJWDJGRNO/Mf+OH6SazUijiHkBXTE64XkbMDG+rrnWn/yHOvDpQRMRFem1b8W6Pq thC2E/uNt4tFjlFuyRu8rolwQZ0t61t/1iWGdkoLInDxnqSAzu1/MEfEc3qCYunCzui1 PCBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767369360; x=1767974160; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=U/E4Pkle8R/umjjml+ar6gI8frpDcsvylCBgQE9LDis=; b=TIjNgCto21EBtu6o0OLu4G50Zgd0U9S+FIJWvcpaTS2cNK0PVcWZEpps9lkpl36bX8 0CvZHgd0vSoj/DrZb/1Dd+A1xQXDtku9sFwfzwqOvBMK+B/6siFitO6zCucqHwCP4czu /FDizn+Xe0zUb+s/pfqr66b9R7bulRIHpqof7TOgyUOUUbo1DpQJVMWDguXfqpwvJlpZ DklXAmzHtxmfETJp+M+FhTbtK49u1UdjyFuldkeWCRBbolKAeFwA6UYE5uM2duNXO/2K fwkvYG1yFYKAI7JeOE50X0kHbZx+dUxUJtgHxpp6CAbF09E195voJsOAzVkE19o9Kro/ 15dg== X-Forwarded-Encrypted: i=1; AJvYcCXj+zahgYzCudNfLCYnkCAioR4F/T0ePOIyaj3NHSDHiPagET7PbPj4k780JhKSZnVcOWdfFfzvBZ7NjG0=@vger.kernel.org X-Gm-Message-State: AOJu0YwmOj5iNzTPLxnh5Sz1QKiVPpVDv+aH78nFBvmMEaspDBXUTynv /QnJ2n5uv26KSKFUAGwlBNPC6t7w4/eDNfn+l2zSL3DmvsZ7/gJ+hu6M X-Gm-Gg: AY/fxX6tHRFR1yBD2pseapmJzP8jRWBclrp76/bA7hOtua4kSN/GRjQ1ZHLWBPRcULA l7q5LVzF7Eo7d0Sqskx5N2JVRaEt2MHdV17CnbScxdAM1R8tSiXkNg+QkUaX77PCav7zelUoIp0 MzPgf8OTeZYdYVxieDSngqj26VR6uEC0XjcHM5djNTHvhwuPxExG44cbgU3+0RALRcQuJ9tgnYL UUxGzQ7eZxId5SqejkH6yIpgqTb1mnh3gip2EZonV1Sz7lFwSW+DZgWh9gjjMqNi+nEClQv0LJv kuXIckF2xVvb3we6Znn8kepMR9tNzptqhKwLN/aOs1EQMvBkXeqFWBao4RpRPlPQo0loIIRtwbY 5kTndEy/4s3t6RXAUkoh5/U58B3vtUR8fRiBYokdy5qJfWuIHNoAN1l/7hXZIvImrOcEn9YPUTb HbLmZxxvhHmbp1J064UytGIXoynA== X-Google-Smtp-Source: AGHT+IEPvWgGFyPCVd7ePOa1jj1CQs953xedwLMhJbDS9KL168vNCZqWkuywUIt3CMvJc+d0CdFOTg== X-Received: by 2002:a17:907:9303:b0:b83:1340:1a2c with SMTP id a640c23a62f3a-b8313401b75mr2268205166b.64.1767369359470; Fri, 02 Jan 2026 07:55:59 -0800 (PST) Received: from osama.. ([2a02:908:1b4:dac0:ac54:a680:a017:734f]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b8037f089fesm4611961066b.46.2026.01.02.07.55.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Jan 2026 07:55:58 -0800 (PST) From: Osama Abdelkader To: luca.ceresoli@bootlin.com, Andy Yan Cc: Osama Abdelkader , stable@vger.kernel.org, Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dmitry Baryshkov , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH v3] drm/bridge: synopsys: dw-dp: fix error paths of dw_dp_bind Date: Fri, 2 Jan 2026 16:55:52 +0100 Message-ID: <20260102155553.13243-1-osama.abdelkader@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Fix several issues in dw_dp_bind() error handling: 1. Missing return after drm_bridge_attach() failure - the function continued execution instead of returning an error. 2. Resource leak: drm_dp_aux_register() is not a devm function, so drm_dp_aux_unregister() must be called on all error paths after aux registration succeeds. This affects errors from: - drm_bridge_attach() - phy_init() - devm_add_action_or_reset() - platform_get_irq() - devm_request_threaded_irq() 3. Bug fix: platform_get_irq() returns the IRQ number or a negative error code, but the error path was returning ERR_PTR(ret) instead of ERR_PTR(dp->irq). Use a goto label for cleanup to ensure consistent error handling. Fixes: 86eecc3a9c2e ("drm/bridge: synopsys: Add DW DPTX Controller support = library") Cc: stable@vger.kernel.org Signed-off-by: Osama Abdelkader Reviewed-by: Louis Chauvet Reviewed-by: Luca Ceresoli --- v3: - Add resource leak fixes for all error paths after drm_dp_aux_register() - Fix platform_get_irq() error handling bug - Use goto pattern for cleanup as suggested by reviewer v2: - use concise error message - add Fixes and Cc tags --- drivers/gpu/drm/bridge/synopsys/dw-dp.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-dp.c b/drivers/gpu/drm/brid= ge/synopsys/dw-dp.c index 82aaf74e1bc0..432342452484 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-dp.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-dp.c @@ -2062,33 +2062,41 @@ struct dw_dp *dw_dp_bind(struct device *dev, struct= drm_encoder *encoder, } =20 ret =3D drm_bridge_attach(encoder, bridge, NULL, DRM_BRIDGE_ATTACH_NO_CON= NECTOR); - if (ret) + if (ret) { dev_err_probe(dev, ret, "Failed to attach bridge\n"); + goto unregister_aux; + } =20 dw_dp_init_hw(dp); =20 ret =3D phy_init(dp->phy); if (ret) { dev_err_probe(dev, ret, "phy init failed\n"); - return ERR_PTR(ret); + goto unregister_aux; } =20 ret =3D devm_add_action_or_reset(dev, dw_dp_phy_exit, dp); if (ret) - return ERR_PTR(ret); + goto unregister_aux; =20 dp->irq =3D platform_get_irq(pdev, 0); - if (dp->irq < 0) - return ERR_PTR(ret); + if (dp->irq < 0) { + ret =3D dp->irq; + goto unregister_aux; + } =20 ret =3D devm_request_threaded_irq(dev, dp->irq, NULL, dw_dp_irq, IRQF_ONESHOT, dev_name(dev), dp); if (ret) { dev_err_probe(dev, ret, "failed to request irq\n"); - return ERR_PTR(ret); + goto unregister_aux; } =20 return dp; + +unregister_aux: + drm_dp_aux_unregister(&dp->aux); + return ERR_PTR(ret); } EXPORT_SYMBOL_GPL(dw_dp_bind); =20 --=20 2.43.0