linux/drivers/phy
Marc Zyngier eb9c4dd9bd phy: tegra: xusb: Fix dangling pointer on probe failure
If, for some reason, the xusb PHY fails to probe, it leaves
a dangling pointer attached to the platform device structure.

This would normally be harmless, but the Tegra XHCI driver then
goes and extract that pointer from the PHY device. Things go
downhill from there:

    8.752082] [004d554e5145533c] address between user and kernel address ranges
[    8.752085] Internal error: Oops: 96000004 [#1] PREEMPT SMP
[    8.752088] Modules linked in: max77620_regulator(E+) xhci_tegra(E+) sdhci_tegra(E+) xhci_hcd(E) sdhci_pltfm(E) cqhci(E) fixed(E) usbcore(E) scsi_mod(E) sdhci(E) host1x(E+)
[    8.752103] CPU: 4 PID: 158 Comm: systemd-udevd Tainted: G S      W   E     5.9.0-rc7-00298-gf6337624c4fe #1980
[    8.752105] Hardware name: NVIDIA Jetson TX2 Developer Kit (DT)
[    8.752108] pstate: 20000005 (nzCv daif -PAN -UAO BTYPE=--)
[    8.752115] pc : kobject_put+0x1c/0x21c
[    8.752120] lr : put_device+0x20/0x30
[    8.752121] sp : ffffffc012eb3840
[    8.752122] x29: ffffffc012eb3840 x28: ffffffc010e82638
[    8.752125] x27: ffffffc008d56440 x26: 0000000000000000
[    8.752128] x25: ffffff81eb508200 x24: 0000000000000000
[    8.752130] x23: ffffff81eb538800 x22: 0000000000000000
[    8.752132] x21: 00000000fffffdfb x20: ffffff81eb538810
[    8.752134] x19: 3d4d554e51455300 x18: 0000000000000020
[    8.752136] x17: ffffffc008d00270 x16: ffffffc008d00c94
[    8.752138] x15: 0000000000000004 x14: ffffff81ebd4ae90
[    8.752140] x13: 0000000000000000 x12: ffffff81eb86a4e8
[    8.752142] x11: ffffff81eb86a480 x10: ffffff81eb862fea
[    8.752144] x9 : ffffffc01055fb28 x8 : ffffff81eb86a4a8
[    8.752146] x7 : 0000000000000001 x6 : 0000000000000001
[    8.752148] x5 : ffffff81dff8bc38 x4 : 0000000000000000
[    8.752150] x3 : 0000000000000001 x2 : 0000000000000001
[    8.752152] x1 : 0000000000000002 x0 : 3d4d554e51455300
[    8.752155] Call trace:
[    8.752157]  kobject_put+0x1c/0x21c
[    8.752160]  put_device+0x20/0x30
[    8.752164]  tegra_xusb_padctl_put+0x24/0x3c
[    8.752170]  tegra_xusb_probe+0x8b0/0xd10 [xhci_tegra]
[    8.752174]  platform_drv_probe+0x60/0xb4
[    8.752176]  really_probe+0xf0/0x504
[    8.752179]  driver_probe_device+0x100/0x170
[    8.752181]  device_driver_attach+0xcc/0xd4
[    8.752183]  __driver_attach+0xb0/0x17c
[    8.752185]  bus_for_each_dev+0x7c/0xd4
[    8.752187]  driver_attach+0x30/0x3c
[    8.752189]  bus_add_driver+0x154/0x250
[    8.752191]  driver_register+0x84/0x140
[    8.752193]  __platform_driver_register+0x54/0x60
[    8.752197]  tegra_xusb_init+0x40/0x1000 [xhci_tegra]
[    8.752201]  do_one_initcall+0x54/0x2d0
[    8.752205]  do_init_module+0x68/0x29c
[    8.752207]  load_module+0x2178/0x26c0
[    8.752209]  __do_sys_finit_module+0xb0/0x120
[    8.752211]  __arm64_sys_finit_module+0x2c/0x40
[    8.752215]  el0_svc_common.constprop.0+0x80/0x240
[    8.752218]  do_el0_svc+0x30/0xa0
[    8.752220]  el0_svc+0x18/0x50
[    8.752223]  el0_sync_handler+0x90/0x318
[    8.752225]  el0_sync+0x158/0x180
[    8.752230] Code: a9bd7bfd 910003fd a90153f3 aa0003f3 (3940f000)
[    8.752232] ---[ end trace 90f6c89d62d85ff5 ]---

Reset the pointer on probe failure fixes the issue.

Fixes: 53d2a715c2 ("phy: Add Tegra XUSB pad controller support")
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20201013095820.311376-1-maz@kernel.org
Signed-off-by: Vinod Koul <vkoul@kernel.org>
2020-10-28 21:42:18 +05:30
..
allwinner Merge branch 'fixes' into next 2020-07-17 13:45:53 +05:30
amlogic USB: changes for v5.8 merge window 2020-05-25 13:28:20 +02:00
broadcom phy: usb: Fix incorrect clearing of tca_drv_sel bit in SETUP reg for 7211 2020-10-28 21:40:56 +05:30
cadence phy: cadence-torrent: Add USB + SGMII/QSGMII multilink configuration 2020-09-18 10:47:22 +05:30
freescale phy: fsl-imx8mq-usb: Constify imx8mq_usb_phy_ops 2020-08-31 14:36:36 +05:30
hisilicon phy: hisilicon; Constify hi3660_phy_ops 2020-08-31 14:36:36 +05:30
intel phy: intel: Add Keem Bay eMMC PHY support 2020-09-16 17:45:19 +05:30
lantiq phy: lantiq: vrx200-pcie: Constify ltq_vrx200_pcie_phy_ops 2020-08-31 14:36:37 +05:30
marvell pci-v5.10-changes 2020-10-22 12:41:00 -07:00
mediatek drm/mediatek: Disable tmds on mt2701 2020-09-14 23:05:23 +08:00
motorola phy: mapphone-mdm6600: Add missing description for some structure fields 2020-07-13 12:14:46 +05:30
mscc treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
qualcomm phy for 5.9 2020-10-02 13:45:00 +02:00
ralink phy: ralink-usb: Constify ralink_usb_phy_ops 2020-08-31 14:36:37 +05:30
renesas phy: renesas: rcar-gen3-usb2: exit if request_irq() failed 2020-07-20 12:03:44 +05:30
rockchip phy for 5.9 2020-10-02 13:45:00 +02:00
samsung phy: samsung-ufs: Constify samsung_ufs_phy_ops 2020-08-31 14:36:37 +05:30
socionext phy: socionext: Add UniPhier AHCI PHY driver support 2020-08-31 17:07:53 +05:30
st phy: stm32: use NULL instead of zero 2020-07-13 12:15:46 +05:30
tegra phy: tegra: xusb: Fix dangling pointer on probe failure 2020-10-28 21:42:18 +05:30
ti Merge 5.9-rc8 into usb-next 2020-10-05 08:54:36 +02:00
xilinx phy: zynqmp: Fix unused-function compiler warning 2020-07-01 20:35:29 +05:30
Kconfig phy: fix USB_LGM_PHY warning & build errors 2020-09-22 19:41:43 +05:30
Makefile phy: Add USB3 PHY support for Intel LGM SoC 2020-09-11 17:12:49 +05:30
phy-core-mipi-dphy.c phy: dphy: Change units of wakeup and init parameters 2019-02-07 11:11:05 +05:30
phy-core.c phy: core: Document function args 2020-07-08 16:40:21 +05:30
phy-lgm-usb.c phy: Add USB3 PHY support for Intel LGM SoC 2020-09-11 17:12:49 +05:30
phy-lpc18xx-usb-otg.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
phy-pistachio-usb.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 422 2019-06-05 17:37:15 +02:00
phy-xgene.c phy: xgene: remove unsigned integer comparison with less than zero 2020-07-13 12:14:51 +05:30