From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pg1-f170.google.com (mail-pg1-f170.google.com [209.85.215.170]) (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 4265C43DA4F for ; Tue, 28 Apr 2026 13:18:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.170 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777382311; cv=none; b=TysHgVsuIvXGBM+auKZRWmn2f3YzFBY8uFS0e571S/5iSeCxjxlbvIw3uAHA+i/BzaiVvlfx7sMQn3kEi8Fe6mYuOItVtdzhbINfvzVQCRK6nqbut256PyQ7Mv8SFlpzF4alfZnvJdvTQ4X/0RgfrCE+Ix+qnRW7DGzXAnluuRs= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777382311; c=relaxed/simple; bh=LeBUvx6Pk4t0VrcyfehygjN6ttef5Wj0cz9EoiHhwhM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=ucRG3VgMr69jZupDzLKmpzRwqicC/NZ38ItBtdnmd7UxfWEz/bOOiu1ZpUp1W+Bu+1lJXsPNgNWVQ2jdeOfFQvUYcLjBPpBlawrG0ErlCCqo9CZmzV175InEVr6gK/Z3rHnnvbjM6YNZWnDaNwBLu/JW2W6D7VzBe33XjzDX63U= 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=n9Q8pzLe; arc=none smtp.client-ip=209.85.215.170 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="n9Q8pzLe" Received: by mail-pg1-f170.google.com with SMTP id 41be03b00d2f7-c79662bbd2eso7811317a12.3 for ; Tue, 28 Apr 2026 06:18:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777382310; x=1777987110; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=sB0vJ2DhSZYXfYX7V4bF9gYiGIMZ7ekNua2Hrw8Y3V8=; b=n9Q8pzLeRVTofIn5V25m0J90fTq1aQTOdKUJqMZOjrJ+nxzdw+r62LP1cHPN6IzQI2 8rZWNuSSmzdLmAoU9qKSBR3ALw7swWgxQKnbHrtDq+4ka9GlyTAt9pRUqH1EMwyr3Vjc TMKAf3lsqGqn0zH9IhB0ZLzUW4zwQxVAEdvntHQtJ/ZwtTpZnmlPMlCNEmxAhvjPeJnK GKkNlVp1el3LmIaSqO/lz5vvEEAFG3pRXjMkuHTtGPg8/BzIGt6wd+0lMFpeDaoHng+U qHxgY9QVEEAyuCbomjFtPMh30cDniTxvcYrdxXIS8/G3mf0CvBaB+zR3qQkpVe5Bzv5x 3Thw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777382310; x=1777987110; h=cc:to: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=sB0vJ2DhSZYXfYX7V4bF9gYiGIMZ7ekNua2Hrw8Y3V8=; b=LV1YI4vRQNQJhaLWqjFX+LPCaDii+QUbayIgg8Caj6VXTtQuEiYQK51j/dyJfhnmWr Be24pivf7iMQzv5pU9hopwO0pByAWf9WbiGv5q7hMNHpzvWb4nA2U8qs8PpZByoPaNDt Yq110EJQ39vowYj44ep+O+rYiD5AtWehRw2oJab3Woi+vHwLsX2l/2IaRNDSnJjZrLER WzmMUZ9DAbeER5VcIE651MX/aY8g5DGZAp9SonLrdRQF9A0ERk7ptQ0RWfBpHbtxbCIu l9OCjkJtsGYOv5/QFVimyd9pn/gKGFwjGP59MovacLTlEk/sy8HqqNn1gap0TO0GSqkq tgcg== X-Forwarded-Encrypted: i=1; AFNElJ+Oz/vIzz5lN62ociNdQOhbJzhGvBMOEfvqo0d8iDQOBjeCq3PyzbRaQhmfZKZAYgeEZ4Qgpbm+r/akhBo=@vger.kernel.org X-Gm-Message-State: AOJu0YyNvvZjWkqirs2MoCP2imHS1dmJnyJGJrx80XV1MleuYzDSXHV6 rnnLV1kHGA3YurJPJ3v89+NXp/7rUJ/LFxqMZosBZfQ8ymJQJLpfm5d9 X-Gm-Gg: AeBDietbGqwr+AiKVpgOD3supop1ZT+zVOwSi7Cus8SZonSf70/+0Q0Y0cvabEVLJgn 46OkRylr0fcwncBQ6NQNFw99cdJ+NFtEEFbtY3MdGe8bp86xcvWz3PqL/kAK25zN54ABaJNOajB ic91izU+0/zw7rQGA2/bAYt699QmYP+cd+TzAyXsRvGgGjZzOrrhr5gW96b6ytnMrImoYH1sXyZ eMVi+zPNdpB8M77M8gVgW24QX3QKhHzDI3Q7F2wVn0gChT2A5m8Jm22vMqVdX3teymscPQNKJZ/ f2gMaFstOca/MeX4NpM1XOC2pKanzs59iXp3uMlvb0+3m5hTB8ma6eO3hPMwMTvl7wJLMVgkicu MBJdREgz471ilbAFC/GIimuQC/8OWc+LZbzWNa3ymHhb1N8CkCMWcdOtAsZMyrOchVHzZvuuDAH wkMlvc57n5N+0o5WfKslhRB+cEWeYgKxI6xyc7QlAby/9t5RjirTtgoQau7W7LJZmXtm1MSTLOS cfxiBaE7IN2KgvlSE+99E+9X4UOtm8= X-Received: by 2002:a05:6a20:e292:b0:39f:24ad:ad00 with SMTP id adf61e73a8af0-3a39bfc3032mr3445348637.7.1777382309385; Tue, 28 Apr 2026 06:18:29 -0700 (PDT) Received: from junjungu-PC.localdomain ([223.167.147.125]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c7fc29b1fd5sm3116360a12.9.2026.04.28.06.18.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 06:18:28 -0700 (PDT) From: Felix Gu Date: Tue, 28 Apr 2026 21:18:21 +0800 Subject: [PATCH v2] usb: typec: fusb302: Fix resource leak when devm_drm_dp_hpd_bridge_add() fails 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: <20260428-fusb-v2-1-aa3b5942cabb@gmail.com> X-B4-Tracking: v=1; b=H4sIAJyz8GkC/13Myw7CIBCF4VdpZi2GQXrRle9huqAwbSexxYAST cO7i126/E9Ovg0iBaYIl2qDQIkj+7WEOlRgZ7NOJNiVBiVVI7VCMb7iICS1sqst6RMaKNdHoJH fO3PrS88cnz58djXhb/0DEgoU0pydazS1XT1cp8Xw/Wj9An3O+QtrQL6mmAAAAA== X-Change-ID: 20260421-fusb-0e7085ce431a To: Heikki Krogerus , Greg Kroah-Hartman , Sebastian Reichel Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Felix Gu X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1777382304; l=2496; i=ustc.gu@gmail.com; h=from:subject:message-id; bh=LeBUvx6Pk4t0VrcyfehygjN6ttef5Wj0cz9EoiHhwhM=; b=19C0Y8GzytK5wgnDOpKqwuDbdWWlmQ/nppLY5KtneqOSiRLPpmDGMUEzIO+DzJldcNM8Ut96c 0ThkzsFNa+4AKpGdt7rrWST591pGiphGYLcHBDD7NeGNTvx91OlsnRJ X-Developer-Key: i=ustc.gu@gmail.com; a=ed25519; pk=fjUXwmjchVN7Ja6KGP55IXOzFeCl9edaHoQIEUA+/hw= If devm_drm_dp_hpd_bridge_add() fails during fusb302_probe(), the original code returned directly without cleaning up the resources. Move bridge registration before the IRQ is requested and route bridge registration failures through the existing TCPM unregister and fwnode cleanup path. Fixes: 5d79c525405d ("usb: typec: fusb302: add DRM DP HPD bridge support") Signed-off-by: Felix Gu --- Changes in v2: - Fix Heikki's comment. - Link to v1: https://lore.kernel.org/r/20260421-fusb-v1-1-0a9dd64e785b@gmail.com --- drivers/usb/typec/tcpm/fusb302.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/usb/typec/tcpm/fusb302.c b/drivers/usb/typec/tcpm/fusb302.c index 889c4c29c1b8..9ab1277b7ed1 100644 --- a/drivers/usb/typec/tcpm/fusb302.c +++ b/drivers/usb/typec/tcpm/fusb302.c @@ -1751,19 +1751,22 @@ static int fusb302_probe(struct i2c_client *client) bridge_dev = devm_drm_dp_hpd_bridge_alloc(chip->dev, to_of_node(chip->tcpc_dev.fwnode)); if (IS_ERR(bridge_dev)) { - ret = PTR_ERR(bridge_dev); - dev_err_probe(chip->dev, ret, "failed to alloc bridge\n"); - goto destroy_workqueue; + ret = dev_err_probe(chip->dev, PTR_ERR(bridge_dev), + "failed to alloc bridge\n"); + goto fwnode_put; } chip->tcpm_port = tcpm_register_port(&client->dev, &chip->tcpc_dev); if (IS_ERR(chip->tcpm_port)) { - fwnode_handle_put(chip->tcpc_dev.fwnode); ret = dev_err_probe(dev, PTR_ERR(chip->tcpm_port), "cannot register tcpm port\n"); - goto destroy_workqueue; + goto fwnode_put; } + ret = devm_drm_dp_hpd_bridge_add(chip->dev, bridge_dev); + if (ret) + goto tcpm_unregister_port; + ret = request_threaded_irq(chip->gpio_int_n_irq, NULL, fusb302_irq_intn, IRQF_ONESHOT | IRQF_TRIGGER_LOW, "fsc_interrupt_int_n", chip); @@ -1774,14 +1777,11 @@ static int fusb302_probe(struct i2c_client *client) enable_irq_wake(chip->gpio_int_n_irq); i2c_set_clientdata(client, chip); - ret = devm_drm_dp_hpd_bridge_add(chip->dev, bridge_dev); - if (ret) - return ret; - - return ret; + return 0; tcpm_unregister_port: tcpm_unregister_port(chip->tcpm_port); +fwnode_put: fwnode_handle_put(chip->tcpc_dev.fwnode); destroy_workqueue: fusb302_debugfs_exit(chip); --- base-commit: 97e797263a5e963da3d1e66e743fd518567dfe37 change-id: 20260421-fusb-0e7085ce431a Best regards, -- Felix Gu