From nobody Sat Jun 20 11:50:30 2026 Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com [209.85.214.171]) (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 D2F6623E325 for ; Wed, 15 Apr 2026 17:00:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776272442; cv=none; b=lBX+bT5fJpo1jkLdnonejayEFQIzhQvu2ljESF7iA2yenU4CDvaZxTMIqJANF5q6+27OD8ajBVQqR5Z/eN14fGJxcS3yC9cUz0l9gKntj4P3V2dSjU7F1U/Me0FpXW7wOYmvdyeuBF2dpJ8pVX9hrn4DzGtCTXLHsTkfyWqWjc0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776272442; c=relaxed/simple; bh=6ft0aSJC2lfyC9/Em4SF3ThsHmszq4J/nmlcR9fRkS0=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=ryynKemTPxMmUPIRiyEd5rFH1XGowyQZgsFkeoonwFC2USVyPJRAS6a/ZzAFY4XZYtJu1DmesX+M2z6FTc8BLzc1U+tLmx+bG9QtauHhhYrRVLmRSMq4EP5EoFI+lZJ6ZJ17mxv9ioPqVhlYNye4iaoNWQvk2ilsu9klsIm2KP0= 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=SW1ohQd2; arc=none smtp.client-ip=209.85.214.171 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="SW1ohQd2" Received: by mail-pl1-f171.google.com with SMTP id d9443c01a7336-2b2494440f3so24047215ad.2 for ; Wed, 15 Apr 2026 10:00:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776272439; x=1776877239; 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=tJqWM7Qg/yxY9S66GjsuTrsJ7EEWVnPgKW5QeWWEd6M=; b=SW1ohQd29YXD5Nr2LJUOZwwEyCnBjjVmiYHEKkW7KChygQT/GoAv6oYmPHaDQkAaVK hBzzpKbLzOtukYx9RZZ/QiD/VrYPm1p01lBFxesGzUog9xGTGP6zT8i8uuZsiSoIZVHG p24STMIqw47tlubtkMPpB7FomVzmtBXbeLvwI/kEDL4zfkLdVvB5VK+Esv+ubf3LPiST 6il4mCTbqya8PqlOLkIjnpY3rwV5MOVl9A8z/XKNksskhFuusLjnAAkLNiaPyuP0y8+z wQXoi/SZIK5GAmE+yofLk4Kd1As/LBFZb3cdKA59bxiqsfipC/+WWn1jtQU0lU0ifiYA hVTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776272439; x=1776877239; 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=tJqWM7Qg/yxY9S66GjsuTrsJ7EEWVnPgKW5QeWWEd6M=; b=qgs+IHvuh26LvkogaiCSysgbVP2LcGTvoJJsZx5KO/d7XawLFhoKCuICmuQ6vvll5A 1JaC4s51+nWrP6O2SuE+5ZyFtu6ZnY6ALJIYBC/Aa1wxq9V2fvzmw2GUNLoas/qqQZgN RJlHFOsDePPk3+CAX97yjKVnO2PbWW73/tq1HrjNVFQD151zHIzfHSva2KvX7cJVuloI ZZk/2gr7gl1NRiDtVCTyuP2PrFtx75Y712kpY+UFaZbuyrGzrk+nWsxHDT0jVF2iMjLh NinGa01/KIdFD8hBk2IjAyrGnRx6Ltnhm7ZQiMIec8LiRejohOLsSqRJp3MN+ivBNL9d pq9A== X-Forwarded-Encrypted: i=1; AFNElJ/+evNf8jCcYacLfHRq5RV5/D8MCmNQuYxuu1hc6p2/VbPBZFxqRqgjEOfiBpa1tG3fFOq2H9HUj5Vo5cI=@vger.kernel.org X-Gm-Message-State: AOJu0YziW/JXYLzyREylQGkmmjdhCAtf1LrHEq5xjxmuGQdA5Hv4U4Is u2ez6+lsA/EehJDDcVXJ3wbKa5LatEBFRajBS+npCCRgBI85OtAm4s7I X-Gm-Gg: AeBDievZ5hlabToV1tUHqkNduZ6QzLiHs95XfjSBwE/v0XZdTtO8GF+krl6WJWLeDYn roQeMEkYsUb5BMWvbccV4mdlbcvgJ4Hj/hlu2TwZEs0cngGCvinG+t258Fi56TIB5xVyfOOXv2K 0SZ5+SkD0PKVpP+QRElOyrUO7WORsDujzfbmQEL1xYLscjt7SETBSQ2N334EBWcf31a7EYbhqqu cCSE9jKO23XCNoPZ5lx2gDtrF8X2pqgujM/mCQ31NOiIe7d1b/Ha+hwv7+MZUrqEc8nCE7c65S4 fZ6y3w12XVBbgfdLfNmjDqDfhErjKirt+n15Qaf1HbFftYidxLCZJupgEC8sdvgl/RlJA8fBka5 I7hobMPWkZdpeWq0YSNwgUJeQeyv24705UQn//hOYJK60qL7/lru62l1wvz+nOLbz99rPg/3gdT NNSS2axCuvB6OZ6yujnP7Iye2+DlE3l1vxtfDVXcyFoWH5sys= X-Received: by 2002:a17:903:284:b0:2b2:5822:7a70 with SMTP id d9443c01a7336-2b2d5a63d4dmr223583195ad.38.1776272439043; Wed, 15 Apr 2026 10:00:39 -0700 (PDT) Received: from lgs.. ([2409:893d:1171:10e2:48dd:8f21:beaa:cec8]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b4780ef365sm25319625ad.1.2026.04.15.10.00.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Apr 2026 10:00:38 -0700 (PDT) From: Guangshuo Li To: Miquel Raynal , Richard Weinberger , Vignesh Raghavendra , Linus Walleij , Guangshuo Li , David Woodhouse , H Hartley Sweeten , linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org Cc: stable@vger.kernel.org Subject: [PATCH] mtd: maps: physmap: fix reference leak on failed device registration Date: Thu, 16 Apr 2026 01:00:27 +0800 Message-ID: <20260415170027.3593563-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 physmap_init(), the embedded struct device in physmap_flash 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: physmap_init() -> platform_device_register(&physmap_flash) -> device_initialize(&physmap_flash.dev) -> setup_pdev_dma_masks(&physmap_flash) -> platform_device_add(&physmap_flash) 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. Fixes: 1ca5d2f0196cf ("mtd/maps/physmap: catch failure to register MTD_PHYS= MAP_COMPAT device") Cc: stable@vger.kernel.org Signed-off-by: Guangshuo Li --- drivers/mtd/maps/physmap-core.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/mtd/maps/physmap-core.c b/drivers/mtd/maps/physmap-cor= e.c index 0dcc25b7ff98..6299a741e65b 100644 --- a/drivers/mtd/maps/physmap-core.c +++ b/drivers/mtd/maps/physmap-core.c @@ -659,8 +659,10 @@ static int __init physmap_init(void) #ifdef CONFIG_MTD_PHYSMAP_COMPAT if (err =3D=3D 0) { err =3D platform_device_register(&physmap_flash); - if (err) + if (err) { + platform_device_put(&physmap_flash); platform_driver_unregister(&physmap_flash_driver); + } } #endif =20 --=20 2.43.0