| b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame] | 1 | From 73204b342fbee1fd9364365c1213815cc715eee2 Mon Sep 17 00:00:00 2001 | 
|  | 2 | From: Claudiu Manoil <claudiu.manoil@nxp.com> | 
|  | 3 | Date: Thu, 14 Nov 2019 16:22:39 +0200 | 
|  | 4 | Subject: [PATCH] enetc: Remove mdio bus on PF probe error path | 
|  | 5 |  | 
|  | 6 | Fixes following kernel panic on the probing error | 
|  | 7 | path, when pci=nomsi bootarg is used (which is | 
|  | 8 | not supporrted by the enetc dirver): | 
|  | 9 |  | 
|  | 10 | fsl_enetc 0000:00:00.0: MSIX alloc failed | 
|  | 11 | ------------[ cut here ]------------ | 
|  | 12 | kernel BUG at drivers/net/phy/mdio_bus.c:487! | 
|  | 13 | Internal error: Oops - BUG: 0 [#1] PREEMPT SMP | 
|  | 14 | Modules linked in: | 
|  | 15 | Process swapper/0 (pid: 1, stack limit = 0x(____ptrval____)) | 
|  | 16 | CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.19.68-00004-g85dc4876e6e6 #1 | 
|  | 17 | Hardware name: LS1028A RDB Board (DT) | 
|  | 18 | pstate: 80000005 (Nzcv daif -PAN -UAO) | 
|  | 19 | pc : mdiobus_free+0x5c/0x60 | 
|  | 20 | lr : _devm_mdiobus_free+0x20/0x30 | 
|  | 21 | [...] | 
|  | 22 | Call trace: | 
|  | 23 | mdiobus_free+0x5c/0x60 | 
|  | 24 | _devm_mdiobus_free+0x20/0x30 | 
|  | 25 | release_nodes+0x148/0x238 | 
|  | 26 | devres_release_all+0x3c/0x68 | 
|  | 27 | really_probe+0x90/0x2a0 | 
|  | 28 | driver_probe_device+0x5c/0x100 | 
|  | 29 | __driver_attach+0xf0/0xf8 | 
|  | 30 | bus_for_each_dev+0x84/0xd8 | 
|  | 31 | driver_attach+0x30/0x40 | 
|  | 32 | bus_add_driver+0x1c4/0x230 | 
|  | 33 | driver_register+0x64/0x110 | 
|  | 34 | __pci_register_driver+0x58/0x68 | 
|  | 35 | enetc_pf_driver_init+0x28/0x30 | 
|  | 36 | do_one_initcall+0x54/0x268 | 
|  | 37 | kernel_init_freeable+0x2d0/0x37c | 
|  | 38 | kernel_init+0x18/0x118 | 
|  | 39 | ret_from_fork+0x10/0x1c | 
|  | 40 | Code: 97e0dd79 f9400bf3 a8c27bfd d65f03c0 (d4210000) | 
|  | 41 | ---[ end trace 1e4e5729f059b773 ]--- | 
|  | 42 |  | 
|  | 43 | Fixes: ebfcb23d62ab ("enetc: Add ENETC PF level external MDIO support") | 
|  | 44 | Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com> | 
|  | 45 | --- | 
|  | 46 | drivers/net/ethernet/freescale/enetc/enetc_pf.c | 1 + | 
|  | 47 | 1 file changed, 1 insertion(+) | 
|  | 48 |  | 
|  | 49 | --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c | 
|  | 50 | +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c | 
|  | 51 | @@ -1041,6 +1041,7 @@ err_alloc_si_res: | 
|  | 52 | si->ndev = NULL; | 
|  | 53 | free_netdev(ndev); | 
|  | 54 | err_alloc_netdev: | 
|  | 55 | +	enetc_mdio_remove(pf); | 
|  | 56 | enetc_of_put_phy(pf); | 
|  | 57 | err_device_disabled: | 
|  | 58 | err_map_pf_space: |