From nobody Tue Jun 16 03:47:19 2026 Received: from mail-pf1-f181.google.com (mail-pf1-f181.google.com [209.85.210.181]) (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 DFA3133C1AD for ; Wed, 15 Apr 2026 18:30:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776277839; cv=none; b=ZpsmTy2CsFpA2AGA9x/8pU/aNy7ouo/qmCjqVm5AoNNpUtB/TYraxTWqiQMGAD8QaZTQOtPRiL4ho0WhG5/7JmBGX4Xym1QuPZcYK46HjKAUQ4td5TFcMXWSnvhl2Qprg1ggx/+3zQH9DQbNpwhxVmEc7kNHm93XLqtRtkGvMX0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776277839; c=relaxed/simple; bh=Ohbt9ZqD4MIjFq8WvgJfeXsDdndtXr0Y2oCOQ01NELA=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=Ue5zL34t1saN5CMNauAJrF9uvAS+Ul/hRlqH6YwY2daiFi20x7WRxVFxoK4Rh6r4SBtTEcaK1UTOM3/e0lNI1pYcXGX9zut3Jd9cMfwH5iv1Zb8MS91UhRo59EXf0iW+l9kx45T+RmdnTfUnaN9oXTb92lQ7Ajmp+/TdKlqdveI= 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=MVEzeHIN; arc=none smtp.client-ip=209.85.210.181 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="MVEzeHIN" Received: by mail-pf1-f181.google.com with SMTP id d2e1a72fcca58-82f4c3619b0so1510224b3a.2 for ; Wed, 15 Apr 2026 11:30:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776277837; x=1776882637; 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=lN21C+5PsTyxBA2toqguwwdmaHUEvYgpm7U5rs5TcnM=; b=MVEzeHINDPSIqxxFndyRUiY3DjhdWlFpOxjmUclnPufT5HdEu1drjYcuQlqNlLvjsP plWB2/WIH/JVhPm6SonMFSanE6SgUchg69Wc8bOyjmPuvmMKCap6Hm1AOJW9R/IA4EHn mKVTvfCmEzB8hPcP46ZZRbgr0nwHNPN6us6YunyfXvlX+H5DnNOyNYXLr66jrJ5ytukg 1jfLrvRGv8Hdz4NKjAkLL3dlzWdECsdNJW1/TGzBegvilf0620R0fXYlYgDVH6xHe3if tAVBQG4WelSu9zEITpwxpO2AiePzaLYrZ57bbOX8ttE05j7B5+EKkzzcr819pdtY0Z+Y e/6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776277837; x=1776882637; 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=lN21C+5PsTyxBA2toqguwwdmaHUEvYgpm7U5rs5TcnM=; b=GfaMSSKGs8N+tPLV4vfP4aGqY6bVxLUnQJYPFyreryyId9GkRbCf5iaqtR2o07btQ6 92+88IrJoaghqDTBBegKVZHaWhlk6cniA5WpaTV+9suv0Zsegqz+yV9rFV+M6ukHomJO N9ajk98BgB7dZuuwgA/7hYQlJyT+I+T4MMHviDH5gpsvGfMkhUbI8gWAn5VrH31Kk1am xeIqaUvhfMTbXRWhvl4Wg+6uRZEJRsNAItumN0oPk6KDCFQsTBnGN0tM84RHgdD4C4X0 a3Dh5x6BJwHKx/6NHerUSzngPbs5repPmKLTaisiTAlXAC1OAiXdG5ahKo+oOjG5MhY7 QPkA== X-Forwarded-Encrypted: i=1; AFNElJ81kFSEZ/hUKpjjM0PXpBYQ5o1Fm6GWsiK9PXDL6XrIaBVIYp0X6GIeBae8jxaSgBp368NExcDdgCTBZuc=@vger.kernel.org X-Gm-Message-State: AOJu0Yy3RcCY2NtpdsZ0cLIgOWdNgKJQU/mZQUXgjStDL1r59esxTMSy sNUjDxzZni77mG0NXWzskDxCtAf1qxM2lc2nNVSnMp2e4OBZ6mGlwQTMRQ0pTiBdQEm33A== X-Gm-Gg: AeBDieuJE8y4vJARDaKPls4cU80fuu+JXC5ynncMh3jrqI3tL1IGsBaYWozo84CtBKX qduzm6PawqpdQQZMmuplzdxY9mDGIBFqUs01sWrGemuqnq/f6wYlFSBhqBXNga5GMiEEkyUt6x9 g6szd7i/x1Ag2TDEfRW8VbReFY7pIFcUPEaM2bbG9urnqjHCFmbKQkRKopmviRK1LHiFWkIuB7n 0GE2bTYOIhtLLkjwkbANFWAl8uKVilI458L1uW12h6sP9ThFdafjolmiUiyNKn9VJCqtMlwU2yf a1V+e9aDY+JVLo5I8870eNXYqj/G6Har9NPo/CqQiwVd8lyGDhyYmVEJenfDbvRwGhSTA3sQ86G 5rUFy4CxyKogziPEOvYgpc22kCtLfDnz3bSc0Bfxq/qIk5D9vyC+S5ydv99rGzUybeMu0W51xwe xIVgt3GcUs8scS6sR6g7l3NDr7aeBzvjegtuWf7tpLuNkP5g== X-Received: by 2002:a05:6a00:10b:b0:82f:1d38:f68f with SMTP id d2e1a72fcca58-82f1d38fc7bmr14476588b3a.31.1776277837089; Wed, 15 Apr 2026 11:30:37 -0700 (PDT) Received: from lgs.. ([2409:893d:1171:10e2:93ee:194:b07d:a9b2]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f67449c3asm2843343b3a.53.2026.04.15.11.30.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Apr 2026 11:30:35 -0700 (PDT) From: Guangshuo Li To: Michael Buesch , =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= , "John W. Linville" , linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Guangshuo Li , stable@vger.kernel.org Subject: [PATCH] ssb: fix reference leaks on failed flash device registration Date: Thu, 16 Apr 2026 02:30:02 +0800 Message-ID: <20260415183002.3752935-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 ssb_devices_register(), the embedded struct device in ssb_pflash_dev or ssb_sflash_dev has already been initialized by device_initialize(), but the failure paths only report the error and do not drop the device reference for the current platform device: ssb_devices_register() -> platform_device_register(&ssb_pflash_dev) -> device_initialize(&ssb_pflash_dev.dev) -> setup_pdev_dma_masks(&ssb_pflash_dev) -> platform_device_add(&ssb_pflash_dev) ssb_devices_register() -> platform_device_register(&ssb_sflash_dev) -> device_initialize(&ssb_sflash_dev.dev) -> setup_pdev_dma_masks(&ssb_sflash_dev) -> platform_device_add(&ssb_sflash_dev) This leads to reference leaks when platform_device_register() fails. Fix this by calling platform_device_put() after reporting the error. The issue was identified by a static analysis tool I developed and confirmed by manual review. Fixes: c7a4a9e3880cc ("ssb: register platform device for parallel flash") Fixes: 7b5d6043de312 ("ssb: register serial flash as platform device") Cc: stable@vger.kernel.org Signed-off-by: Guangshuo Li --- drivers/ssb/main.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/ssb/main.c b/drivers/ssb/main.c index b2d339eb57d5..5cdf612a8516 100644 --- a/drivers/ssb/main.c +++ b/drivers/ssb/main.c @@ -535,16 +535,20 @@ static int ssb_devices_register(struct ssb_bus *bus) #ifdef CONFIG_SSB_DRIVER_MIPS if (bus->mipscore.pflash.present) { err =3D platform_device_register(&ssb_pflash_dev); - if (err) + if (err) { pr_err("Error registering parallel flash\n"); + platform_device_put(&ssb_pflash_dev); + } } #endif =20 #ifdef CONFIG_SSB_SFLASH if (bus->mipscore.sflash.present) { err =3D platform_device_register(&ssb_sflash_dev); - if (err) + if (err) { pr_err("Error registering serial flash\n"); + platform_device_put(&ssb_sflash_dev); + } } #endif =20 --=20 2.43.0