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 15F2C434E5D; Tue, 21 Jul 2026 20:21:26 +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=1784665288; cv=none; b=i/P//tJ/W7muh3FURYDY4Gh9H98jH4lUj7hOUgm7bo4eq0Xw2PEoUilbJ27PQakaJBTD6F1Q674hk8VLQiAWzAg+n5tCRRYpP+MZRyYoalXp9XR/KdvRCqsWl1jwWfBEX4KXdDfKRUeLC/GTnGEwRxEVgsPif3H1SteZ/8mN5Jw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784665288; c=relaxed/simple; bh=VcEq2EbUMNfRwSi7ztxBOptnc7g5MX8wvU+v9nRPM7k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=b+bn1lpcmcW7BLvRmv4hRTEqI4XB2F/xDrnFlNG8Xiae0igxqlamVPwgNN39topzCnma8QvLPg/ONRkwhXKYHa5F94kz2pzVLXFete05rIbFzQXDLa9VQ1aiThZ+pkEyWt/W/oZPVgsLvz4Epr8MvqyExj1/kjphEwk/q9RQns8= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=2epIzIVV; 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="2epIzIVV" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3381F1F000E9; Tue, 21 Jul 2026 20:21:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=korg; t=1784665286; bh=c9vr273Qfs347U8Y8mmXBU22o3lZ5Wg0eL2B195Nwk8=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=2epIzIVV2i+UWI9bJWzmaFNvN1n1sctWbiQxz1+JgUbhqD9oi/DZ8J6rdHpXyYds2 jFySM18eJ27BsUKZc8iSnpQQ3sBU+gMLPq91R7EzMs1htE6CjPkQPU99bEcB0uUREX FLShKT4gH+kCSpYdaTklUAfMWRSZ8QmnXPv6Ao9s= From: Greg Kroah-Hartman To: stable@vger.kernel.org Cc: Greg Kroah-Hartman , patches@lists.linux.dev, stable , Heikki Krogerus , Johan Hovold Subject: [PATCH 6.6 0247/1266] USB: ulpi: fix memory leak on registration failure Date: Tue, 21 Jul 2026 17:11:24 +0200 Message-ID: <20260721152447.340961946@linuxfoundation.org> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260721152441.786066624@linuxfoundation.org> References: <20260721152441.786066624@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 6.6-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; }