From nobody Tue Jun 16 03:47:18 2026 Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169]) (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 A46EC346E64 for ; Wed, 15 Apr 2026 19:13:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776280396; cv=none; b=cnM1cK90ZeOHBT4DXftrjtnkOTgzaC0y0oMOB1GzXYoJVDlhLgDrZ0YvSceFlWjWivGrAG/5vzFmt6IrEF5sOOIVc0smoeLHf9lu9wxGJlN0+EHk4HJYTjbXoEkDgaOYcMUtFIBtpAmDAG2edGFKmlelAMqn/hdUPCSexfQmXWU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776280396; c=relaxed/simple; bh=QlduOW42d2EffleOxDkxogb+jCXsqBEYC48mTTvHmVA=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=Faa5EMCaz1me+JNQQwmXiA8zlE1PBiKLuj2kqIKHjunxDNg8xCebeFD4DOTCtpyo5q5SPCo61T1t1zZPfdg8dym4HMRhiqLQ1GwdTxenOR63vHFX9seVXALHMx0UHo49xEGb2B/noQWfdDymX4i+3k86xJGUwJVuFBdNYmw9Tfg= 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=nv7P6FY7; arc=none smtp.client-ip=209.85.210.169 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="nv7P6FY7" Received: by mail-pf1-f169.google.com with SMTP id d2e1a72fcca58-82f1bfc9b8fso2278826b3a.1 for ; Wed, 15 Apr 2026 12:13:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776280395; x=1776885195; 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=jBcpP2Xf91EXqMzxfz4ls9MLPGhLhWDU+QsE/IF+8uQ=; b=nv7P6FY7CyKmdwNaTxZ3dmk/QPCRI226/mRw1G2mVDJQHjxTdG41g9PvLHTXS0bCcp C5dADNCJp3muA8dXvja6fjmp+3akwPh+X2qtWOgUd9mvhpaJFzUgSybkgfzAdDKN9Hcd PPJmCYGh67SMN6TBxHWDE2EKlFMExN2Cuf5nIzN8b8tv7ZIaK2kbOMIRKAwXYdPpArYL C06ruc7QAhlY2betlyK8YO1YRE+NAv19vpQXkmtxnnUCdc/ni9cIps6nFoEhZhpzE88U FSVq5gH2TZoo+PtcJSg/aJIxrKp5agVAepsbuL3Hnr2MdmFcQMMQPIo/C2/AUtcRS5c7 Ds3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776280395; x=1776885195; 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=jBcpP2Xf91EXqMzxfz4ls9MLPGhLhWDU+QsE/IF+8uQ=; b=mnlfhOwRKcv1Ai4ZV1PrzLSmf/rif3HviMtHg+8VP8JaSmVq6IARRJjDj0h5L8yGlU 8uH6cLmVC1uW8nlA+uDbF3QrKRZZxYn2BfDjne43XGi59eu6oMXZfNb4HGIpTUNnabih M/Tcg55Us22/HH56Tia1+nyORW56/2L+GTdwQdDArViX7TyFea6F7TyIN8jje+i+PKAP Fv6Ew5NmwgtRJBUrv0El0sKH01sJH0iKfS0OnjZe78w1j3/8X4MJEBlz67DKi7HG6Odf oOSQar6avUk5zSFztXB2+mOcflXQ00N/Smm+ZEkGJ3uOWmAwWKKoeFR3CKnMfy78r217 v/XA== X-Forwarded-Encrypted: i=1; AFNElJ8/BjSwTSo7fOKHI+BDeQlQK7x3ExtMoX1EsWQOfNJzlFCSwLfSiFgDwGX7i680hUGCSpJNCpkUXtYLyB8=@vger.kernel.org X-Gm-Message-State: AOJu0Yw4paYlwHwWXJBdlh+COgunFWKiqac0Tk90FvchlBYXGGpBe00O 3XrUf1zIhjae12SWMOxICUB2SzyYWiqhyAakk5KyeIrUKf9ICrQuXUT6 X-Gm-Gg: AeBDiev3+bHk+ygRgIOeoSMYh5DigMGg5cShG8Kipy11426i9oeJ29/TDRVrXCvN3BU KOnvnWnx8+3DwoOFxSJxWDTUqnhN7YZdDpL8dfy2BQHKLCiwbky7dlM48f41qD230ZqLXB6hkY4 HhuZfMssnQ4FGQx8Ddb0j5QasARb2gsG8R90pHoQt6CkJmgaF0Hy47EzH+4FEF2AE/591FOQ2Lw v03JnQpnHHC6uzVqkV4T9mK/U0m+yOeDf6ff1vb4IVuIeAjozTE8/ihgXk5uA5os3JOGkFDJj8C 4fVabt0DrjvU8/H7bX/5ArmO6POnrEYI68F0/92SbF1nCKepT1etYMu0b3heU6yYoJbeZLw71tq yCgdq9h17XVJcWyF+kfzxtO0zdDKd2hxAmCdXlH4lAXMayZbOOJlt10pdrueOA6o4ARpurs+SYk FX3x6uSgjVGcpDMaGFqbOBXs/PJRiwfxlksto= X-Received: by 2002:a05:6a00:3485:b0:82c:e5d0:5249 with SMTP id d2e1a72fcca58-82f0c25abe9mr21497068b3a.8.1776280395057; Wed, 15 Apr 2026 12:13:15 -0700 (PDT) Received: from lgs.. ([2409:893d:1171:10e2:93ee:194:b07d:a9b2]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f6747541bsm2934574b3a.59.2026.04.15.12.13.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Apr 2026 12:13:14 -0700 (PDT) From: Guangshuo Li To: Helge Deller , Guangshuo Li , linux-fbdev@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: stable@vger.kernel.org Subject: [PATCH] fbdev: q40fb: fix reference leak on failed device registration Date: Thu, 16 Apr 2026 03:13:06 +0800 Message-ID: <20260415191306.3837839-1-lgs201920130244@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" When platform_device_register() fails in q40fb_init(), the embedded struct device in q40fb_device has already been initialized by device_initialize(), but the failure path only unregisters the platform driver and does not drop the device reference for the current platform device: q40fb_init() -> platform_device_register(&q40fb_device) -> device_initialize(&q40fb_device.dev) -> setup_pdev_dma_masks(&q40fb_device) -> platform_device_add(&q40fb_device) This leads to a reference leak when platform_device_register() fails. Fix this by calling platform_device_put() before unregistering the platform driver. The issue was identified by a static analysis tool I developed and confirmed by manual review. Cc: stable@vger.kernel.org Signed-off-by: Guangshuo Li --- drivers/video/fbdev/q40fb.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/video/fbdev/q40fb.c b/drivers/video/fbdev/q40fb.c index 1ff8fa176124..0151a41267b3 100644 --- a/drivers/video/fbdev/q40fb.c +++ b/drivers/video/fbdev/q40fb.c @@ -141,8 +141,10 @@ static int __init q40fb_init(void) =20 if (!ret) { ret =3D platform_device_register(&q40fb_device); - if (ret) + if (ret) { + platform_device_put(&q40fb_device); platform_driver_unregister(&q40fb_driver); + } } return ret; } --=20 2.43.0