usb: chipidea: ci_hdrc_imx: Also search for 'phys' phandle
Fabio Estevam
reviewerPATCH 1/1 usb: chipidea: ci_hdrc_imx: Also search for 'phys' phandle
Since commit 78e80c4b4238 ("arm64: dts: imx8m: Replace deprecated fsl,usbphy DT props with phys") the following NULL pointer dereference is observed on a Kontron i.MX8MM N801X S board:
[ 1.489344] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000098 [ 1.498170] Mem abort info: [ 1.500966] ESR = 0x96000044 [ 1.504030] EC = 0x25: DABT (current EL), IL = 32 bits [ 1.509356] SET = 0, FnV = 0 [ 1.512416] EA = 0, S1PTW = 0 [ 1.515569] FSC = 0x04: level 0 translation fault [ 1.520458] Data abort info: [ 1.523349] ISV = 0, ISS = 0x00000044 [ 1.527196] CM = 0, WnR = 1 [ 1.530176] [0000000000000098] user address but active_mm is swapper [ 1.536544] Internal error: Oops: 96000044 [#1] PREEMPT SMP [ 1.542125] Modules linked in: [ 1.545190] CPU: 3 PID: 7 Comm: kworker/u8:0 Not tainted 5.14.0-dirty #3 [ 1.551901] Hardware name: Kontron i.MX8MM N801X S (DT) [ 1.557133] Workqueue: events_unbound deferred_probe_work_func [ 1.562984] pstate: 80000005 (Nzcv daif -PAN -UAO -TCO BTYPE=--) [ 1.568998] pc : imx7d_charger_detection+0x3f0/0x510 [ 1.573973] lr : imx7d_charger_detection+0x22c/0x510
Fix the problem by also searching for the 'phys' phandle.
--- drivers/usb/chipidea/ci_hdrc_imx.c | 11 +++++++++++ 1 file changed, 11 insertions(+)
drivers/usb/chipidea/ci_hdrc_imx.c +11 -0
@@ -427,6 +427,17 @@ static int ci_hdrc_imx_probe(struct platform_device *pdev) goto err_clk; } +if (!data->phy) { + data->phy =devm_usb_get_phy_by_phandle (dev,"phys" ,0 ); +if (IS_ERR (data->phy)) { + ret =PTR_ERR (data->phy); +if (ret == -ENODEV ) + data->phy =NULL ; +else + goto err_clk; + } + } + pdata.usb_phy = data->phy;if (data->usbmisc_data) data->usbmisc_data->usb_phy = data->phy;
Signature · 1 line
2.25.1
Quoted 24 lines · Fabio Estevam
Since commit
78e80c4b4238("arm64: dts: imx8m: Replace deprecated fsl,usbphy DT props with phys") the following NULL pointer dereference is observed on a Kontron i.MX8MM N801X S board:[ 1.489344] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000098 [ 1.498170] Mem abort info: [ 1.500966] ESR = 0x96000044 [ 1.504030] EC = 0x25: DABT (current EL), IL = 32 bits [ 1.509356] SET = 0, FnV = 0 [ 1.512416] EA = 0, S1PTW = 0 [ 1.515569] FSC = 0x04: level 0 translation fault [ 1.520458] Data abort info: [ 1.523349] ISV = 0, ISS = 0x00000044 [ 1.527196] CM = 0, WnR = 1 [ 1.530176] [0000000000000098] user address but active_mm is swapper [ 1.536544] Internal error: Oops: 96000044 [#1] PREEMPT SMP [ 1.542125] Modules linked in: [ 1.545190] CPU: 3 PID: 7 Comm: kworker/u8:0 Not tainted 5.14.0-dirty #3 [ 1.551901] Hardware name: Kontron i.MX8MM N801X S (DT) [ 1.557133] Workqueue: events_unbound deferred_probe_work_func [ 1.562984] pstate: 80000005 (Nzcv daif -PAN -UAO -TCO BTYPE=--) [ 1.568998] pc : imx7d_charger_detection+0x3f0/0x510 [ 1.573973] lr : imx7d_charger_detection+0x22c/0x510
Quoted 3 lines
Fix the problem by also searching for the 'phys' phandle.
Fixes 78e80c4b4238 ("arm64: dts: imx8m: Replace deprecated fsl,usbphy DT props with phys")
Shouldn't this really fix some older commit, since this fixes NULL pointer dereference in the driver which got exposed by passing in a valid DT ?
Fabio Estevam
reviewerHi Marek,
Quoted 3 lines · Marek Vasut
Shouldn't this really fix some older commit, since this fixes NULL pointer dereference in the driver which got exposed by passing in a valid DT ?
You are right. The recommendation to use 'phys' is much older and it comes from 9d062b9b4168 ("dt-bindings: Consolidate ChipIdea USB ci13xxx bindings").
Peter, what commit do you think is appropriate for the Fixes tag in this case?
Quoted 4 lines · Fabio Estevam
Hi Marek,
On Mon, Sep 20, 2021 at 10:38 AM Marek Vasut <[email protected]> wrote:
Quoted 8 lines
Quoted 3 lines
Shouldn't this really fix some older commit, since this fixes NULL pointer dereference in the driver which got exposed by passing in a valid DT ?
You are right. The recommendation to use 'phys' is much older and it comes from
9d062b9b4168("dt-bindings: Consolidate ChipIdea USB ci13xxx bindings").Peter, what commit do you think is appropriate for the Fixes tag in this case?
I don't think the Fixes: should be for any dt-bindings patch, it should be for a patch which added the code with missing NULL pointer check into the CI HDRC driver.