Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3424a516 authored by David Lechner's avatar David Lechner Committed by Sekhar Nori
Browse files

ARM: davinci: da8xx: fix oops in USB PHY driver due to stack allocated platform_data



This fixes a possible kernel oops due to using stack allocated platform
data for the USB PHY driver on DA8XX devices. If the platform device
probe is deferred, then we get a corrupt pointer for the platform data.

We now use a global static struct for the platform data so that the
platform data pointer does not get written over.

Fixes: bdec5a6b ("ARM: da8xx: use platform data for CFGCHIP syscon regmap")
Signed-off-by: default avatarDavid Lechner <david@lechnology.com>
Signed-off-by: default avatarSekhar Nori <nsekhar@ti.com>
parent 96c08173
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -26,6 +26,8 @@

static struct clk *usb20_clk;

static struct da8xx_usb_phy_platform_data da8xx_usb_phy_pdata;

static struct platform_device da8xx_usb_phy = {
	.name		= "da8xx-usb-phy",
	.id		= -1,
@@ -36,15 +38,13 @@ static struct platform_device da8xx_usb_phy = {
		 * registered yet.
		 */
		.init_name	= "da8xx-usb-phy",
		.platform_data	= &da8xx_usb_phy_pdata,
	},
};

int __init da8xx_register_usb_phy(void)
{
	struct da8xx_usb_phy_platform_data pdata;

	pdata.cfgchip = da8xx_get_cfgchip();
	da8xx_usb_phy.dev.platform_data = &pdata;
	da8xx_usb_phy_pdata.cfgchip = da8xx_get_cfgchip();

	return platform_device_register(&da8xx_usb_phy);
}