From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 07BDA305692; Thu, 16 Jul 2026 13:49:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784209799; cv=none; b=a0HuM/Zv/00l2Fa7hbUs2czUodImIhiHwI0juOHuBtfktQRT5uUE3DuSz4MxerhTR7G0nJoNAFbDxOkpaVOr/66YSKNQCSbagsPV8soxczu/e2r97KfMyC8xXoefC1flz0LGTPPc7jzU8EDKoyM0dEqinYSDXAFpuXcCQ3ZR4go= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784209799; c=relaxed/simple; bh=bEYtAwIdIwggsXEegotaKOfbqg9IwVfJvaemvePGmQI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=eKf0eqY2ZfPbdmAu+WxJCn/6D4Qe1zmQGqMD4GsXespYIAiNJi13uMTao3bMGrb65qsscr5MTGoFrxqj/Ab3/YX0JiBD3Q8MRwQbpj4SgI50BplYmguDHf43nsdWh5kF5ryCGkE2BoFhak6RC4gi/heyQf2eUUsL7Z51fH6stYg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=VuhH0TqM; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="VuhH0TqM" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 68B061F00A3A; Thu, 16 Jul 2026 13:49:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=korg; t=1784209796; bh=T+0WeNfWuaHucDsut+a+Z2uWa+9r6aGoxV6WUAwdBP4=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=VuhH0TqMBsWCY6NlB9O4fa8jKFcb7Il4+KV9L8sGl4RUFTOxfuQr5BMcxBEtJfyCW KTMts36+FOrZ7u9BNB8BV/WGjKo4WKMF+EnBmYunsvKUGQtCi3f7DtvkYYWavhT6KA iABr7EMOnw+lK7cTc+2rHUePUiSlkqGeScunH1Hk= From: Greg Kroah-Hartman To: stable@vger.kernel.org Cc: Greg Kroah-Hartman , patches@lists.linux.dev, stable , Heikki Krogerus , Johan Hovold Subject: [PATCH 7.1 323/518] USB: ulpi: fix memory leak on registration failure Date: Thu, 16 Jul 2026 15:29:51 +0200 Message-ID: <20260716133054.884681328@linuxfoundation.org> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260716133047.772246337@linuxfoundation.org> References: <20260716133047.772246337@linuxfoundation.org> User-Agent: quilt/0.69 X-stable: review X-Patchwork-Hint: ignore Precedence: bulk X-Mailing-List: patches@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 7.1-stable review patch. If anyone has any objections, please let me know. ------------------ From: Johan Hovold commit 8af6812795869a66e9b26044f455b13deecdb69c upstream. The allocated device name is never freed on early ULPI device registration failures. Fix this by initialising the device structure earlier and releasing the initial reference whenever registration fails. Fixes: 289fcff4bcdb ("usb: add bus type for USB ULPI") Cc: stable Cc: Heikki Krogerus Signed-off-by: Johan Hovold Link: https://patch.msgid.link/20260608145803.69360-1-johan@kernel.org Signed-off-by: Greg Kroah-Hartman --- drivers/usb/common/ulpi.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) --- a/drivers/usb/common/ulpi.c +++ b/drivers/usb/common/ulpi.c @@ -281,28 +281,24 @@ static int ulpi_register(struct device * ulpi->dev.parent = dev; /* needed early for ops */ ulpi->dev.bus = &ulpi_bus; ulpi->dev.type = &ulpi_dev_type; + + device_initialize(&ulpi->dev); + dev_set_name(&ulpi->dev, "%s.ulpi", dev_name(dev)); ACPI_COMPANION_SET(&ulpi->dev, ACPI_COMPANION(dev)); ret = ulpi_of_register(ulpi); - if (ret) { - kfree(ulpi); + if (ret) return ret; - } ret = ulpi_read_id(ulpi); - if (ret) { - of_node_put(ulpi->dev.of_node); - kfree(ulpi); + if (ret) return ret; - } - ret = device_register(&ulpi->dev); - if (ret) { - put_device(&ulpi->dev); + ret = device_add(&ulpi->dev); + if (ret) return ret; - } root = debugfs_create_dir(dev_name(&ulpi->dev), ulpi_root); debugfs_create_file("regs", 0444, root, ulpi, &ulpi_regs_fops); @@ -334,9 +330,10 @@ struct ulpi *ulpi_register_interface(str ulpi->ops = ops; ret = ulpi_register(dev, ulpi); - if (ret) + if (ret) { + put_device(&ulpi->dev); return ERR_PTR(ret); - + } return ulpi; }