From nobody Mon Jun 15 20:34:29 2026 Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.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 2B7F63CBE83 for ; Wed, 15 Apr 2026 14:57:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776265062; cv=none; b=Xh+ApD6/+TR2vBrZEOeJ7q8v94nzpd6DHLDbCwIioTj1k41Yo5EpUtEsDWPea+ux16AJJTsKGUD88TzWOygIsM0kn0WW1GZiCBgkRkz5Q7VfMcUAPDtWTBV6pbryveTnoiSv4OMvsf5y9q22DJxtGxXiEB8nwd/FvKIossmkCEc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776265062; c=relaxed/simple; bh=oRPVzB//4GPr8E0X8MsyD2ixptlJ7tiaxlRsENmd+80=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=OBtFcAZ1KgCZu19RTfGwBQsfQMkk3zg1JLatO51ldkDbvpKRHH10v6GrjF7d5K/ga2Ax6jvTL3UhkMh6vEgg5/TLJYnkcWtmwJq6D/tm5CwjHdKLoguShe0UQqaeFEQWoFnz1UIrbFC0ldH/nqQUoQwzQ2UUGkS91Kepb1HpDf4= 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=kOo/peUu; arc=none smtp.client-ip=209.85.214.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="kOo/peUu" Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-2ad21f437eeso40968845ad.0 for ; Wed, 15 Apr 2026 07:57:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776265058; x=1776869858; 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=s9z9SXjdbKZ8KdYoMVn9DyECDnpTcqUx5ESLC0ZLnEI=; b=kOo/peUu2Xf/w1s6n+FKrKJxtDH71Dk/JwWWrAPcUs9hxeI14ZAEK1Kd0oBkfTA3El 1RDZrRimPW+9QVHU1H8n1RUMsuWHrD+AmTGQrZpPKcLkYMEGhpsDKFo8LyNAfXfse9m7 XhsByjdXfwrf0GDR1LHZ2zraToMh19nEGk7gWvlhojfetEkNV1rnmj9PK/hGvxvStWy6 3Ty9igVKzQkBi+sICugpvHp5d1EBOhe8+ZQT807ViNY8oPz/BAdKj60P+sTcij70IPfs WfFn95u0z4K5gs+pEgXisSraczBbe0ApgKiyUFZyqtKZlHE+khAXSki7tCQgzcSkcNGp kEoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776265058; x=1776869858; 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=s9z9SXjdbKZ8KdYoMVn9DyECDnpTcqUx5ESLC0ZLnEI=; b=IRCdyZIXq9r2kCrFITkDIEK80BYIDBZ/m6Q1L6NUuajgSdgu7/b/VbQhNRWxMLCwvu gLGGXNBmI6vYQtvMJsyFGM2qSHZ00hKaprrC7rqiyyV5SXigBBpU1WgTpidbG7FKuYrI U66fnysZR1X3KAviQdL4WMf69YoaU4zWB9GvCgj+icYVjycLd1MxRxw9RUK4xxvLkH47 gFFCYiAG3UtmxN4yFfybC6RWmFFOmupPjIdtl/Ro2ohGCyRsJe7NDOik9/iD1WzhhQOZ 3zVB98Y8h42Pwvg1iu9GSoeoLqf2nlE5LzJ8zoQLM8qdaOwGZx59LC3tjhMbHQBYPhBD 7BVg== X-Forwarded-Encrypted: i=1; AFNElJ8LtbtpAMuvOlmGtjXjE2rs3A2lXZQO+phei1QX7MWYuyIwJUNDBo4KHXXmYxQBgt/r1bWPN5yr/Im/Jes=@vger.kernel.org X-Gm-Message-State: AOJu0Yx5HPYOKBmM15TMzvNaIVm5E5F/PCBbgNMxTWG5eEG7RznMGTXE hZ7+Y4UcCVpb9wfQrIZzBbmdkW7jdEWTT8cExYgee2W1nDMtwA1dwkff X-Gm-Gg: AeBDiet1nbFgP4oYJnksqOyiQzfDpQ3bah7VRfDvBTTsxrDtMf2Dt6nWjqGONgFF76F 6LpB3raBsEGWZHQdy/G6TKAl/jphSZ+AZVBSA6WilSQcWBzip3ssnP8YHMOAOvMNGekrg3Ivhp6 InqSy5BHiJRO0O0SWOf5CwIS/Z4o3/2mBy96O2VfZoI5wOrdWaZPoQP82rQX2sQKPNSFxtxhIvt g6CxVGbGglM9hHrXkmdXDkLqiooF8joCnSwRESV51GJ4gyI6njML+AWpaWFZFfL0yyGrXKEc9gK uGQGyqSwOIslJDP8KvDA8JoJt+ZRB6DCTcwkGzJg8pZ7rrpM4z6WEdoJDTAnbHcRX7I4uWV9Xcg uxPfzDVF96sI9uZCibod56ap3F1bWGboy4ZclY+0P4MEmfphy8V1R/wW44eqwDw7dHJpMNR7vU3 SaD0BQ9LmKq6EY1hEONp8+hvEbA9mu3ehl X-Received: by 2002:a17:902:f64c:b0:2b2:53f5:461f with SMTP id d9443c01a7336-2b2c7384aadmr230409305ad.25.1776265057864; Wed, 15 Apr 2026 07:57:37 -0700 (PDT) Received: from lgs.. ([112.224.67.108]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b4782abd6csm23426605ad.63.2026.04.15.07.57.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Apr 2026 07:57:37 -0700 (PDT) From: Guangshuo Li To: Denis Efremov , Jens Axboe , Greg Kroah-Hartman , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Guangshuo Li , stable@vger.kernel.org Subject: [PATCH v2] floppy: fix reference leak on platform_device_register() failure Date: Wed, 15 Apr 2026 22:57:08 +0800 Message-ID: <20260415145708.3331818-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 do_floppy_init(), the embedded struct device in floppy_device[drive] has already been initialized by device_initialize(), but the failure path jumps to out_remove_drives without dropping the device reference for the current drive. Previously registered floppy devices are cleaned up in out_remove_drives, but the device for the drive that fails registration is not, leading to a reference leak. The issue was identified by a static analysis tool I developed and confirmed by manual review. Fix this by calling put_device() for the current floppy device before jumping to the common cleanup path. Fixes: 94fd0db7bfb4a ("[PATCH] Floppy: Add cmos attribute to floppy driver") Cc: stable@vger.kernel.org Signed-off-by: Guangshuo Li --- v2: - Replace put_device() with platform_device_put() in the platform_device_register() failure path - Fix the device_add_disk() failure path by unregistering the current platform device before jumping to out_remove_drives drivers/block/floppy.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c index 92e446a64371..461e14d19422 100644 --- a/drivers/block/floppy.c +++ b/drivers/block/floppy.c @@ -4724,15 +4724,19 @@ static int __init do_floppy_init(void) floppy_device[drive].dev.groups =3D floppy_dev_groups; =20 err =3D platform_device_register(&floppy_device[drive]); - if (err) + if (err) { + platform_device_put(&floppy_device[drive]); goto out_remove_drives; - + } registered[drive] =3D true; =20 err =3D device_add_disk(&floppy_device[drive].dev, disks[drive][0], NULL); - if (err) + if (err) { + platform_device_unregister(&floppy_device[drive]); + registered[drive] =3D false; goto out_remove_drives; + } } =20 return 0; --=20 2.43.0