From nobody Sat Jun 20 11:51:00 2026 Received: from mail-pf1-f175.google.com (mail-pf1-f175.google.com [209.85.210.175]) (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 DDF1B3451AA for ; Wed, 15 Apr 2026 16:21:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776270073; cv=none; b=B3VzG5y81fP+fh7UyJjidZj/TWm0+G79cuOf1P0X3YJmFidK+87mYf9iT2nzEa6mhqqN68JBVkrebJMVNEBvOk7n97ueVlx6UaX79Qzjp1kBEzyIBj2Q0hA4AdfmoHopm2vO06GaWKHspACs7NxwdOiehYaW39w+3z9vffUheec= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776270073; c=relaxed/simple; bh=SI2t19iU6EMEQBCp+j5wlbb1GUg+beuT+6A5OpnwZyw=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=V1wUM9szszmEljNr85F6z+jaGaJIFkePCCweV+kyhuszHqtFnglI5EhSbVKh3vnHcpEX9PIe/N0V6CNMyOJmimWFk+2jc3eOoz3q4f0ZLPBMvJxdNCYCfut+6dYo07VnDzu1M5/tWAGLixJYk79/dfgdqIeYvvdw24Jhsn3HIW8= 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=dl+evy2Z; arc=none smtp.client-ip=209.85.210.175 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="dl+evy2Z" Received: by mail-pf1-f175.google.com with SMTP id d2e1a72fcca58-82f1dcd5886so2947551b3a.2 for ; Wed, 15 Apr 2026 09:21:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776270071; x=1776874871; 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=M+8gw/M80WE6Bf1ljzJqEZsdPuf1OmLbEHX1VUQEqPA=; b=dl+evy2Z6eAvWVReyImIj0Z4Oad21laeZWGCXBsAaCbiLHIhtQVCOminoSKbd5WjCe n8JsnVNqr5oPKQGVPu7Yf5kj4lwixznS4LDfrvRnZKuPNUE6x7isYNnhSKG69SGO+1YH N8a+vYm53jOkeGpdW7VEv8EXYh71qZh9DxS1P7ahPB6dLUVu9Eu8aW7W6rn0GnH7MBwF 7t1CjFRsZfuw3QuMNteoMxs18eddRqQwXP9Sppw5aZxO/Arqr/CDJcbeoEjG80nJCW4n aLr5tfUPCk6HnHdN+vpxN88g9/I1EgnJugt66sm6vPE48iMFcP91gLHVvsV1F2+ViOxI LJ0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776270071; x=1776874871; 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=M+8gw/M80WE6Bf1ljzJqEZsdPuf1OmLbEHX1VUQEqPA=; b=mNxsrZIghBrqcGRDvaXJm5UKEg3UwPh0DNgVQPdgfBxVJR98Yjd90lLhAE8z/BU+9i Kr2Md69uFuJhWltfSlrqnmO+sA77fmxmW6y0E83itP2qtn0jrw+ah1NMZQUNpdkSOdUG 9p+JdCtEpibTKlhT0h/4EKkT+fXpiAWTMrgA/um7SMzdomroilosER28gNmGIABPzJR3 AY1hKuXRFUswNABvoktwbHiL/+LmJILS84aukUZw1Niz6Au4nLs5cd5KhuXcsUPY+pwy guPw8UU3bFYCtFL03TEL6+GSpJujiUsiVI8iCJs2REUtjjrjt5nH7kzMimBv063eVpsh vthg== X-Forwarded-Encrypted: i=1; AFNElJ+S9g5BhyUhZjE3E43wZh00faQcQBtBBCr7FNtf5rOTuvWvuQYOZJqn3SLzwlzsfRje2IVxpjOWR2DyR1M=@vger.kernel.org X-Gm-Message-State: AOJu0YyXt3ODUZtdRHwDKFcviJ45M6VcUeoYGC+9YC/8l+doUgN9oIvb qMtktnsgFjyXPQqhDRXp4LwGH4GS/fsBjxd4jM3ZdGV27YUevZVAp0yO X-Gm-Gg: AeBDieuekoabViPbTxMRWv1ImU0McCb/20Fv7Z7AsHtuNKKUpqfVG/FxRAGkS6/eL7j QiX/WcjrpUrTt7L5SexQSZQoa89yZEmW5/dVr1igmY7F4HyCH1JKq7YFhx1CxsPcZ75NZJy3eWa SRf1Hr0MdAGhUnFmjmcxUfqaRKKqpP4ro12dx9PVFkGTq3xu1jzhc2A+4Y4OUimVm02JKcG8y7u p24SQtNZQIM41ZCO+dnbsBWbbZZCqR/QJddi6L4XuaLjSvWUz+xZGJKMeqeG8gRLncyFvrmM3H3 INPXu0Vzmgs2N4ElPFALCnrdcP/P2HltMAr8ET/fUHEchLx3EKHG9dIczjYTYv0Z4sd0DCbt4K9 vbWzmWSqCcKvo1dCOFO8omKeocEsk3aww2jQ6BIlOiUI9ZQ+uHPkR2Nsxd9eZl7DqNH/Y4r0KSD RJ7XjRsiDFIpPAq3CCYQ3FV8mEAZ123cz8/b2K7/Qrpv+42qo= X-Received: by 2002:a05:6a00:92aa:b0:82f:4a4d:377e with SMTP id d2e1a72fcca58-82f4a4d8eb6mr10659269b3a.28.1776270071117; Wed, 15 Apr 2026 09:21:11 -0700 (PDT) Received: from lgs.. ([2409:893d:1171:10e2:3836:7c38:e5c1:4b6b]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f7106abbfsm1373845b3a.4.2026.04.15.09.21.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Apr 2026 09:21:10 -0700 (PDT) From: Guangshuo Li To: Hans Verkuil , Mauro Carvalho Chehab , Dorcas Anono Litunya , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Guangshuo Li , stable@vger.kernel.org Subject: [PATCH] media: vivid: fix cleanup bugs in vivid_init() Date: Thu, 16 Apr 2026 00:20:58 +0800 Message-ID: <20260415162058.3551246-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 vivid_init(), the embedded struct device in vivid_pdev has already been initialized by device_initialize(), but the failure path jumps to free_output_strings without dropping the device reference for the current platform device: vivid_init() -> platform_device_register(&vivid_pdev) -> device_initialize(&vivid_pdev.dev) -> setup_pdev_dma_masks(&vivid_pdev) -> platform_device_add(&vivid_pdev) This leads to a reference leak when platform_device_register() fails. Fix this by calling platform_device_put() before jumping to the common cleanup path. Also, the unreg_driver label incorrectly calls platform_driver_register() instead of platform_driver_unregister(), which breaks cleanup when workqueue creation fails after successful driver registration. Fix that as well. The reference leak was identified by a static analysis tool I developed and confirmed by manual review. The incorrect cleanup call was found during code inspection. Fixes: f46d740fb0258 ("[media] vivid: turn this into a platform_device") Fixes: d7c969f37515d ("media: vivid: Add 'Is Connected To' menu controls") Cc: stable@vger.kernel.org Signed-off-by: Guangshuo Li --- drivers/media/test-drivers/vivid/vivid-core.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/media/test-drivers/vivid/vivid-core.c b/drivers/media/= test-drivers/vivid/vivid-core.c index c8bf9b4d406c..62cfb5feb2cf 100644 --- a/drivers/media/test-drivers/vivid/vivid-core.c +++ b/drivers/media/test-drivers/vivid/vivid-core.c @@ -2289,8 +2289,10 @@ static int __init vivid_init(void) } } ret =3D platform_device_register(&vivid_pdev); - if (ret) + if (ret) { + platform_device_put(&vivid_pdev); goto free_output_strings; + } ret =3D platform_driver_register(&vivid_pdrv); if (ret) goto unreg_device; @@ -2311,7 +2313,7 @@ static int __init vivid_init(void) destroy_hdmi_wq: destroy_workqueue(update_hdmi_ctrls_workqueue); unreg_driver: - platform_driver_register(&vivid_pdrv); + platform_driver_unregister(&vivid_pdrv); unreg_device: platform_device_unregister(&vivid_pdev); free_output_strings: --=20 2.43.0