From nobody Mon Jun 15 20:34:29 2026 Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.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 C8D6C3D6CD5 for ; Mon, 13 Apr 2026 14:08:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776089302; cv=none; b=BntZG4pmBIC5EwlAVHdMdgYXZ3u/zQEtD8ga68oUalRHTU7Ewx+GbXCCt2xmKvCKmmCb/9SP3m5Brj9+IUmBsjUG6Cat07jKomiL0lv5pQxHThLeGa/gwGs8G/eRSu/E8kbUFA5uCB88tr7A0RPRsZauYD6Bh/OsMA2SJPGpD/g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776089302; c=relaxed/simple; bh=uWwbKtfSpjOOknNeTp71IRpzIhl/gIhwJjkuM16+/QA=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=i13lmBaeTXvfC8fCsh9Qj2jEwN0xizC7eqA3Nuty8wwEvX+lUP/xjerHu3KE50rnWQxXUfY1aSs5ylKWNBeiWzpBgC+SrJ1mxf50cVS9qU5+nfkdSZGqzO1bS4jAoCQ2wG+3aE5CYiEelH3ed+4pVoDk5aRghoRwG+tKeyAZK+Q= 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=dFaeQsv/; arc=none smtp.client-ip=209.85.210.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="dFaeQsv/" Received: by mail-pf1-f171.google.com with SMTP id d2e1a72fcca58-82f344e880bso891227b3a.3 for ; Mon, 13 Apr 2026 07:08:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776089300; x=1776694100; 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=QWAa2t45cQbk8AazsM/yVNSi7kB/9kLl3mjYD8G2e9g=; b=dFaeQsv/aHQFCW2/lIdgYN3gmtiTmm+Cq0GEjDhY/IpSnmwW1brXfg97+Q9WlKuKvY td6JQ3LJetV2BsZHd/Yk/nySd/ApNeUe0wbDv+zYvGaH7bblhkGf7uqhCNZo4vy9PNrn LJQlEP+9NT47VM6A85rVE37CdqAhdj/bAsW0ZyHrJEQrV1aQ960TxZokuh3dy2Ks7pmE hGrMe1kJDRg9vVg8mgf4lsu1Ak2nqsLrlZqg1DFY6NGyuyysUDSctRxEbSZDLxyfO3Wv ccYSwzSdVNouHCcPa7PuK0iDPPeA+6zS0+2kdVXXtDgA2AOPl1Tttf5LLKVX81xJlMLv HJlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776089300; x=1776694100; 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=QWAa2t45cQbk8AazsM/yVNSi7kB/9kLl3mjYD8G2e9g=; b=aiL8nbENM6LzTqJYbtuIu7W+2yooX1y9MLTKndgktrAuDG5GKpKEhmSC4zUZMxSl15 WFDaEcXkyLPfHlGupYATjdyw0tPNc9TxqAlMWcNP3OyfZDjRuUupDzSEKa7ysHNs/8SO FU7IdEYLYZDtwCpqYD0Sxd6gQACfUR2csMyrr8Mr5IpmBFnflnGf0I8ESk20DOR0wVtr fGFJfILQ40lO6w03DeiAA5sDPj1OztEBW2+h2/TH1p8F44tsPeWUt/4E/cW/PrK/nxER UzVQbQuALdfaINcWzMBt2UyJytBD3Yfgs9wtATEsqGegS1ygKm9w0NLSpVcy+y1OPcdA XAJw== X-Forwarded-Encrypted: i=1; AFNElJ8lkhm+CTGaPobWy7SJZap+ffV5SY48TrQ+yUIvpQ1WcLo01rr5m7S07gq8h1KX3iywysMxqjteFAB9Xe8=@vger.kernel.org X-Gm-Message-State: AOJu0Yy1sbOXh7w5dqQYoUKW75dftYRwDfonftvFUyuJ5jlrwGC31Gpq K1hLjQr3gmi8VeZM9ZQqfQwrWE7LEXADS/peiW4eRTWbYWqezTIcy2g5 X-Gm-Gg: AeBDietnzDQRralllfxmskZ1w/ic+g8FWHhPWgye7LY9x0IZYurfhTl8EU47x2438Xa 6ZGolQ+Pat1RDJqvuLQqUwAzqqWh8cQbN/gY48UiXYUqGk/sSwx/cn3US52pDipnnyn9GpksJM4 pgJs1dgifup37X78ojxiRWc/R14I3qXOsy3jgvbHDKljTuIMNftJm4BQAVe5Gc65RG6YI/Nuk19 fQBMy7mrvKpvBvIQIIOth7tXNqCZAOP8gwsEjl76m9CsghrPJAu1fXBwyGC58xeSmI6dnh+qbW7 I3FG3kXMTg0fFW0/95V56ow/RMB2c83YdknVTulypGcDiiFPukkGt4TUo5mtjzcRNmix/GopzXl pPNNI+BhG/6JF/CRTXSuHyysiQZEDFjN+U4OuHw9ej3WBNwbKeSMiVyYjmHRnKiRPfhi2Vwjvlm iR5/xMIs/uiCBCJEek9IcHU/I8VTcHi1Y= X-Received: by 2002:a05:6a00:2392:b0:82f:250b:9f16 with SMTP id d2e1a72fcca58-82f250ba2a1mr7851373b3a.28.1776089299909; Mon, 13 Apr 2026 07:08:19 -0700 (PDT) Received: from lgs.. ([2409:893d:1188:142d:6c67:74e8:5200:1f39]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f0c4b251esm10877263b3a.37.2026.04.13.07.08.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Apr 2026 07:08:19 -0700 (PDT) From: Guangshuo Li To: Eddie James , Ninad Palsule , Joel Stanley , linux-fsi@lists.ozlabs.org, linux-kernel@vger.kernel.org Cc: Guangshuo Li Subject: [PATCH v2] fsi: i2cr-scom: Fix device reference leak in cdev_device_add() error path Date: Mon, 13 Apr 2026 22:08:08 +0800 Message-ID: <20260413140808.2940563-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" After device_initialize(), the embedded struct device in struct i2cr_scom is expected to be released through the device core with put_device(). In i2cr_scom_probe(), the cdev_device_add() failure path frees the allocated minor but does not drop the device reference, which bypasses the normal device core lifetime handling and leaks the reference held on the embedded struct device. The issue was identified by a static analysis tool I developed and confirmed by manual review. Fix this by calling put_device() after freeing the minor in the cdev_device_add() error path. Fixes: c0b34bed0bbf7 ("fsi: Add I2C Responder SCOM driver") Signed-off-by: Guangshuo Li --- v2: - note that the issue was identified by my static analysis tool - and confirmed by manual review drivers/fsi/i2cr-scom.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/fsi/i2cr-scom.c b/drivers/fsi/i2cr-scom.c index cb7e02213032..3de3f0194d10 100644 --- a/drivers/fsi/i2cr-scom.c +++ b/drivers/fsi/i2cr-scom.c @@ -109,8 +109,10 @@ static int i2cr_scom_probe(struct device *dev) dev_set_name(&scom->dev, "scom%d", didx); cdev_init(&scom->cdev, &i2cr_scom_fops); ret =3D cdev_device_add(&scom->cdev, &scom->dev); - if (ret) + if (ret) { fsi_free_minor(scom->dev.devt); + put_device(&scom->dev); + } =20 return ret; } --=20 2.43.0