From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-lj1-f171.google.com (mail-lj1-f171.google.com [209.85.208.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 7D9543932D4 for ; Mon, 4 May 2026 10:09:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.171 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777889344; cv=none; b=QUtQABLOpp3tx1Q3iHER6atv/J2K/LA+ExUjETr7jzoeffnMdZp3S16tB1xUjADklA2tFHi5lPJGGdsAQvzXpt4J5VndiwkJYR0vTPnNKBx6+4LpYSpL3IdAEnA85lWxsVYe3D2h8YbuVnwwhQ7Am/QebDB1YYoAaZ5oWpo73xU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777889344; c=relaxed/simple; bh=Zs9WNTC83oSjBnoN+C/Zgou1KF6Ibnz5FPkh61SSYcw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jTGuVR7ThRPS6v5axnMApU1v2WnPw5qG+v+V2vFACvJ4vdIrEFTJCcqsWL2wJeiJPIkGsOVpqSJduVTL5ej1v9jduB8TvqBsCTxz+W0sT7Sg+pk9p5eyPgdIbHLlviM44zgkyMRMIeJKEIyYXHa/zk/X+hEOAiRzjx4a0In7Wtk= 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=Gawq11ah; arc=none smtp.client-ip=209.85.208.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="Gawq11ah" Received: by mail-lj1-f171.google.com with SMTP id 38308e7fff4ca-393800586aeso14211911fa.1 for ; Mon, 04 May 2026 03:08:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777889337; x=1778494137; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=efcgj+nt9ZDETRdVUhLvA9ywV/eZR7SxjX6DhlexZWI=; b=Gawq11ahWxXiiP576uVGZqUD62NEN3CxSvw34/7mzMZ81o//CHVCzHhkVuDDjflxOE myr5Lz5C4Zl6MPh0XQczmfT7Pq67V757H8IgoLQZDHzww1KXd2sn/AJSzyJWSsMRNFjS v6+PMD5vtwGww6VcNNQ3cyPJ4ApvgVnkuHmHXMYM0qS/9yM/f3hmAnsgQX/mQd6R7grF T6mzwEl2piRy2hf81dcpu+JdsuYZQDYB6Cusn4oGOplf4v98+5RWMwVNYQhi1cDPX70q HQNSKL3KOmhb77EJskPo79rDH3nlc5x+R+Gr5TgjkNoSNSOCeT1unvEjDL3rHzBmhLFe 6vqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777889337; x=1778494137; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=efcgj+nt9ZDETRdVUhLvA9ywV/eZR7SxjX6DhlexZWI=; b=FKR/ASwL9AeFlwWFCQE81ZF58R+2MjagykoRO0w8iF5MeC/HvNcxa81KSpmFtuMp3K VziblIgbKKIKBJKFWezg/kZY33KwGuhgY1QuEomccUNy7qFoRpb65OLixVrb6pw6z/Rk YVahu3lBaswwF2hVjGa7WGdSaWsJuPv9MvRlD7qM0ascVl6BP0ZW4hw8axk3uXug6cVx 4eDdmUwsBLucI0Q/rJuSTIN/VptERjCle5Nmcv5v9ux5Y7Y3PTlNpdnfYOnDjAzO11jF SFiHxxzWkC9J2+r6JETLw7tUH+x19TNvnFuiq8RZwIxhf7ytL+lrzRERdO1IbJAJOWRS o9wg== X-Gm-Message-State: AOJu0YxuquG92MT4ehvdc3UYM2fboKwIDHoai0dYd0Rycqv22OWPsZBl h8znafBoULZMbEjC5oWjjFx1SgRkYlgDjOoC6E6nzVT6ypfzfxuYh0160HySQQDwJ3zCS1bzta0 = X-Gm-Gg: AeBDietF5Xu+dFkniUBXJzMWx+/NZrQKxCDnwpmeXB4bY6m0IJ/XdF+kCGTMGPhhfk8 p403qlx6pqLQUplG8vjP3NRBOvgISp42PWTQlg4K8J+r73ACpZxjUPVwIEwr2pRZ4qUxRwU+GZQ CvgHYedeeQgHByHRCvHwfONQSbwOXR0G6b//tJKiy07hflHFMBRL0UzAARoREkJkOtG+mqJ4EB/ nxs7sMqWzIUpmFGZlXDzHf6gWRl3L1uWyyVEWTEvWs2uaSe/3EkL6MoKokvBrmItRBOXhp/vWg3 hX1VI64R389NA/S2oV3Pq9RPWH7gsUBBmtUaf9ZAORMnZ3QlV1OjsaqWUEyAJatF5fSP259Iskr 6DfqncA3oRUramFtFVQqi/B8/BYUQWNlWjHBoD9c5VOMCt4tVxTWpvHnyELVBsrQnQKfbWN7xIW psJluEEKvXOOyTSiet3r5k8ircVD7kuHiVEsiFVdY65qJDTfJIcJV3yy++XZLzTpMRZQsh/lw= X-Received: by 2002:a05:6512:39c4:b0:5a4:5d0:2892 with SMTP id 2adb3069b0e04-5a852741d37mr5443285e87.19.1777889336425; Mon, 04 May 2026 03:08:56 -0700 (PDT) Received: from va-HP-Pavilion-Desktop-595-p0xxx.mshome.net ([193.0.150.248]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5a86645ae7csm1979099e87.79.2026.05.04.03.08.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 May 2026 03:08:56 -0700 (PDT) From: Vastargazing To: linux-kernel@vger.kernel.org Cc: Vastargazing , stable@vger.kernel.org, Lee Jones , Vincent Sanders , Andrew Morton , Ben Dooks Subject: [PATCH 5/5] mfd: sm501: fix reference leak on failed device registration Date: Mon, 4 May 2026 13:08:47 +0300 Message-ID: <6b4a9f5ae8a316b6f07f72f2fe3f0b8fc5f18dff.1777889235.git.vebohr@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit When platform_device_register() fails in sm501_register_device(), the platform device allocated by sm501_create_subdev() has its struct device initialized by device_initialize() inside platform_device_register(). The error path logs the error but returns without dropping the device reference, leaking the memory allocated by sm501_create_subdev(): sm501_register_device() -> platform_device_register(pdev) -> device_initialize(&pdev->dev) /* kref = 1 */ -> platform_device_add(pdev) /* fails */ <- dev_err() called, kref still 1, sm501_device_release never called The device's release callback (sm501_device_release) calls kfree() on the containing sm501_device structure. Without platform_device_put(), this memory is never freed. Per platform_device_register() kernel-doc: NOTE: _Never_ directly free @pdev after calling this function, even if it returned an error! Always use platform_device_put() to give up the reference initialised in this function instead. Fix this by calling platform_device_put() in the error branch, which triggers sm501_device_release() and frees the allocated memory. Fixes: b6d6454fdb66 ("[PATCH] mfd: SM501 core driver") Cc: stable@vger.kernel.org Assisted-by: GitHub Copilot (Claude Sonnet 4.5) Signed-off-by: Vastargazing --- drivers/mfd/sm501.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/mfd/sm501.c b/drivers/mfd/sm501.c index 0ee6d8940e69..8276456b142f 100644 --- a/drivers/mfd/sm501.c +++ b/drivers/mfd/sm501.c @@ -704,9 +704,11 @@ static int sm501_register_device(struct sm501_devdata *sm, if (ret >= 0) { dev_dbg(sm->dev, "registered %s\n", pdev->name); list_add_tail(&smdev->list, &sm->devices); - } else + } else { dev_err(sm->dev, "error registering %s (%d)\n", pdev->name, ret); + platform_device_put(pdev); + } return ret; } -- 2.51.0