From nobody Mon Jun 15 20:34:37 2026 Received: from mail-pj1-f54.google.com (mail-pj1-f54.google.com [209.85.216.54]) (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 313AD2D94BA for ; Mon, 13 Apr 2026 15:31:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776094293; cv=none; b=abm8GUqeiHy4B8pI8drKzS1MqNSGJ21845NkgAk/7A6w3jt1P1O8ar3lYVH9TnsaWZPO4i2/9jRJ/8QGvs2PlHmzWZaV3sSYykI3Ow+B9jOe9ngf4ABPTGvMirZZ9J65Mu9TXqrltdsoWFj7OLA3v2wsJ5CoInrSB5CVjE0w/BA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776094293; c=relaxed/simple; bh=2Gq73zrEvKFb2Ww2j/DZ6lomDXLUZXge8zXGm46n/mI=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=KbdwmsvrTtNrUDXB4Itj6hd62S+nuV44+WNIHA0plcVWI52phkqekQEuQPboCPpXjy8b95IZ36A43qs/ny4AJcmNcBF9dYB/aESLCSP3OPQmQKkcB6Q2vV3uPMT8RUe3q1Hq6KLAIdWbhaAkMZ3S/9iZQbYRcdsMHazRiuW8xS8= 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=gdph6dUd; arc=none smtp.client-ip=209.85.216.54 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="gdph6dUd" Received: by mail-pj1-f54.google.com with SMTP id 98e67ed59e1d1-35da2d35eccso3314188a91.0 for ; Mon, 13 Apr 2026 08:31:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776094290; x=1776699090; 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=lQTuLDD9uHjmSb0q/D/D00Qi76jFLaRH/PnSP6cbt5M=; b=gdph6dUdEAL1p4rNZ7YDctR/A715NWuISjnAOz1P8njlFYoITOieCP7pHFxt/7q40y 9FM7n2N35VJ7eQQoSMRdopag6+Di16Oc4wQWSofmMgz5vJFI4GXa7PXhvpn8zVY0poWo 3oMtiFxHnJ4LTOLwFtnBibTvFig8138t4iQ4MTrjkjvFIADT6/ybFQH722gwHjIuOGeB /6dhkuXyV+pOvUVNzFBWVP17jdve0svjoSrD2eppry8T9+BXHimS+dQRA/JwnChNw5NZ wE7Q55h5naISVu9Hhp9O0TwcLn2P7bA1uLp6jJ1em9oSy3Kuuaq4uxsQmMgjQjX/38dD 7vcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776094290; x=1776699090; 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=lQTuLDD9uHjmSb0q/D/D00Qi76jFLaRH/PnSP6cbt5M=; b=gt1HGXdtRjO1T7lzo+K0BuH7aHEsw+k3TDAfyK5kF89h4DaooBOEopWa51K4+onsrG Ovs95XL+kq+Uk9qEdxCUCQ7x/i7+f2VBFlwAWsC/IUPQnAeRf90vGscVoaTnY/50Nh7r DBsETie7dO+9rAxw/RV4Z3E2Q6Cq1XwItuaRnxHA6yii1jtNDT4coueQrTvshGUuntal msygyA6tXVLqBLS5Z21ZtrTh9JCtNT59V0J9/drTd1AwFCNbHdn3+VBGwS+6c8cdapu2 6zhOiTq89pk/7W9ORS6GutKWIspk8sHqqU/8Q8QaEnkEGOA0RC+VOlI63XPGtZGMqkJX fIhg== X-Forwarded-Encrypted: i=1; AFNElJ+jQo8HluWXkDGBkB9fvt7o0dCuwGOeiQSPqKYJRifmb+NtYFO4NruToH1Pf2tJyOTSDJ+XEQ1sS3fsz34=@vger.kernel.org X-Gm-Message-State: AOJu0YyMCsS596dIPVos9IwWJQ0xG0hxLobYKWgf24T+p9plCux2/Caz xCObipQ52r7iVU9TAydVRC8SHrwYstU+nV4PMzTFnxWoQlhW/NaBkMlb X-Gm-Gg: AeBDiesSTekrZwzUacOYVzEdONFpeKfaQti7Fn67apNUKefzCwE9kVLO+H6L0c9Ca+o EkrTDn5ER7cWjfrBRH4nLPk2VwJlAtxSGVVCpj9rh+s9rEQsIBQZJ4Ad/+ceCe6oXqmC+/I0DeH +bcOJRf/Ks4Ak9AguB7oXe+wHWxLN5wbLd8F4yjST2v27e9vgOfKHz4TfPxG4TC1tljdgycl4iy hFEXM4EiEAiE5yfnL8TyysvyBQnfCbO6+7ysKGxGjCaYWXpH9xEoI8LmyDP8oTI9h5IfR2LNsxz WK//r/hXIQpH1TLUumoZUXgw7kfXVWCOIC7i7l0a6Z91qFIg7lfTwpvH6bVb7iDoydQ7WhKuMAQ oNsnKjvj+KkCKkXhu7EziaV6QC00kE7AykVr+BgJOKLFwAg5J/dRMJu/hphRYuMoWSvnKR2HeEr IgPEPLlbPcyMuUlx2bTDOOVs1Nx2sPul0A X-Received: by 2002:a17:90b:33ca:b0:35f:b4c7:b626 with SMTP id 98e67ed59e1d1-35fb4c7bb12mr4856393a91.18.1776094289095; Mon, 13 Apr 2026 08:31:29 -0700 (PDT) Received: from lgs.. ([2409:893d:1188:142d:edd0:8593:d07a:ab64]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-35e411ff4e1sm12981328a91.3.2026.04.13.08.31.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Apr 2026 08:31:28 -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] floppy: fix reference leak on platform_device_register() failure Date: Mon, 13 Apr 2026 23:31:14 +0800 Message-ID: <20260413153114.3040093-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 --- drivers/block/floppy.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c index c28786e0fe1c..d9afe495d5c2 100644 --- a/drivers/block/floppy.c +++ b/drivers/block/floppy.c @@ -4724,8 +4724,10 @@ 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) { + put_device(&floppy_device[drive].dev); goto out_remove_drives; + } =20 registered[drive] =3D true; =20 --=20 2.43.0