From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-lf1-f42.google.com (mail-lf1-f42.google.com [209.85.167.42]) (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 CB44A392C24 for ; Mon, 4 May 2026 10:08:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.42 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777889340; cv=none; b=FhpARyJEsuK0ENk8qCJXvZCUY3BIjFMU0Qoio9WJuKpIDI89sccewIpKcl8uvggRTiGnKORfmqlz7JEdSiEqSNvHD7T7Hjaa8io8xdWlrT6af4u5p95UsqjiUWbPkwNiBMH0xE3cS7epqnb8jC4n3f487LjSjpobnSsyiuwkPRU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777889340; c=relaxed/simple; bh=Cy4wsn1PZK5S/bvm2NwxmGupgmnGnk0WNR3lAlPVFs0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Z3nMO6qCWuJlNneEelVNR7Q2l6yYFodI1OzU15KWleftJiG2wvrBbiegYDSNSjmHnc0UIf8OL+SizxwXXSQUuwakmVN//E48DEh5MJn7d7zhiQnzgIEi+CK0jenKM46fUjW30KV7BpDKTi08REzKfsZzTe1ojeE4HLj6fL1t6hE= 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=W/S4OwK/; arc=none smtp.client-ip=209.85.167.42 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="W/S4OwK/" Received: by mail-lf1-f42.google.com with SMTP id 2adb3069b0e04-5a40502e63bso3904173e87.0 for ; Mon, 04 May 2026 03:08:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777889333; x=1778494133; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=/NFXtpfnoiIuj26mCFxMjJStgQUFP3eBujw2rICs2aY=; b=W/S4OwK/mDH9qgFdaX9V/LIcw77jeLCazGPcXBh/NeubLWIl8cTu/IMSRTOj4OvgZo UlvzsdbJm4aiRFbTGD/pW3W0VEXYN3393v5Y7gLDAmH/VKNU0uRh4JpdapTX7kTiJ8eX qg22rnknZavXlVaZKu06G4BT6b9uRwLG7MjkqCWtPpbhyRaE01A/WLBAGceq33qWFs2K UN/huOPySHgLg3bZ7n51fWSWwdYkCfLTb808fl5v8Xfh9F5t+/uGArZ0S0QZsj6h6idH psGdctEpG7IeF87SuO7yKdqrh/94GXNBBBVYa7M/IuUWIoXHWkVC3zWtpgL0nDeMAue7 PNnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777889333; x=1778494133; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=/NFXtpfnoiIuj26mCFxMjJStgQUFP3eBujw2rICs2aY=; b=VTjcvTYsgsY83vZHyZkOJZcCZ2MU20DCxAwaAlhwAaz7mwMS009zrwQqKy7mLhFQdX /tC7mZbDxgVhgzlHiKIEvrUpn80GvJSKx6W7CWpUnimV4EBADtH0svSY1T04PnGSXKHL p+yDi4QbK+KzPEeVLR1Zia4vMqkWf9KQnyX0RiRVFhjKo2uNDaOYEnEkUHpTkVNkf1AM p224xnpeWVnSxkGVoeBKyAnElItMlOArD0DGaBNaJSHmjZZP3Mg3XvHv1Ro+WWUMqG/6 KwzTD0GX+/rudR6mFu5o7WSENd1CJMVJU4QpbU0f/cSzCUMQvktTtBHlupJidsPa0hC3 R2XA== X-Gm-Message-State: AOJu0Yy0zVSBJxVMtNKq7i86JyomRIunottdahIHbP3dqFDPUuCy8jcA rTidEf567t2gdtSESLmlJ6XSSH8CFazhok1r+GEmJSk6iUDoV6coDbOzTrfTsP3QbeBtwk0ZJq0 = X-Gm-Gg: AeBDieu7VKnx3/Sm4oNNcTYTHVRzFGiLY69yFkJ/rvthRY9ZChIJ/ZsFMSjkgV77K05 wZ0uwP/zVi/kPd5EDDwf4B0M0eEGYDW1sZDqkAOy6qWey9enV0r4P9qUD5K4hZnH3bFsFnDZLSQ qOMc4/1Hsl70p6TC/q1F3t1IHx3lL30X1JyI+uOH5bFWbibDF8UZGXtksR2cfm3SZdvf9BtX3sh NIPSCqaHF9HnM6soYdGlHvMVnsKYrPBKfQFax1IukuC/gM0KsDyQmUGPS1a/v3XYqDjDQ2Eyn+4 Uu96dOb1lvhM9lOynTl3qWmnmkIgjbd5A4HYP3HDKP8FzAtQlw6vgNzixdOuTOrpHBh9Zy1ahrL 7fvNIdVp39YU4Ve9kbLhf/9Si5+DWLT9Zk5cFreR+XoXfdgvH6EFb2aaKrbakUIkWTDbe9eXZ/N psgDwpd5F/nivMa+CjYLEmFgOLOWHiGVeNN8JI01ZZWdGQt0lZ0yvBb1GjBAYO940f6XIT0EZkR dR4pxV7mw== X-Received: by 2002:a05:6512:31cf:b0:5a2:bf50:763d with SMTP id 2adb3069b0e04-5a8631c8222mr3274301e87.38.1777889332874; Mon, 04 May 2026 03:08:52 -0700 (PDT) Received: from va-HP-Pavilion-Desktop-595-p0xxx.mshome.net ([193.0.150.248]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5a86645ae7csm1979099e87.79.2026.05.04.03.08.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 May 2026 03:08:52 -0700 (PDT) From: Vastargazing To: linux-kernel@vger.kernel.org Cc: Vastargazing , stable@vger.kernel.org, Benson Leung , Tzung-Bi Shih , Guenter Roeck , Gwendal Grignou , Thierry Escande , Enric Balletbo i Serra , chrome-platform@lists.linux.dev Subject: [PATCH 2/5] platform/chrome: cros_ec_lpc: fix reference leak on failed device registration Date: Mon, 4 May 2026 13:08:44 +0300 Message-ID: <990a6407ff9b143bde6ea2bd8b32e9346ab756c1.1777889235.git.vebohr@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit When platform_device_register() fails in cros_ec_lpc_init(), the embedded struct device has already been initialized by device_initialize() inside platform_device_register(). The error path unregisters the driver but returns without dropping the device reference: cros_ec_lpc_init() -> platform_device_register(&cros_ec_lpc_device) -> device_initialize(&cros_ec_lpc_device.dev) /* kref = 1 */ -> platform_device_add(&cros_ec_lpc_device) /* fails */ <- platform_driver_unregister() called, but kref still 1 Per platform_device_register() kernel-doc: NOTE: _Never_ directly free @pdev after calling this function, even if it returned an error! Always use platform_device_put() to give up the reference initialised in this function instead. Fix this by calling platform_device_put() before unregistering the driver. Fixes: 5f454bdf6353 ("platform/chrome: cros_ec_lpc: Register the driver if ACPI entry is missing.") Cc: stable@vger.kernel.org Assisted-by: GitHub Copilot (Claude Sonnet 4.5) Signed-off-by: Vastargazing --- drivers/platform/chrome/cros_ec_lpc.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/platform/chrome/cros_ec_lpc.c b/drivers/platform/chrome/cros_ec_lpc.c index 78cfff80cdea..cb3ff76d29e9 100644 --- a/drivers/platform/chrome/cros_ec_lpc.c +++ b/drivers/platform/chrome/cros_ec_lpc.c @@ -892,6 +892,7 @@ static int __init cros_ec_lpc_init(void) ret = platform_device_register(&cros_ec_lpc_device); if (ret) { pr_err(DRV_NAME ": can't register device: %d\n", ret); + platform_device_put(&cros_ec_lpc_device); platform_driver_unregister(&cros_ec_lpc_driver); } } -- 2.51.0