Re: [PATCH 8/8] pinctrl: freescale: imx: fix system crash if enable two pinctl instances
Hello, On Tue, Aug 18, 2015 at 10:48:59AM -0500, Adrian Alonso wrote: > From: Robin Gong > > Remove 'static' for 'grp_index', otherwise, it cause the groups whose number > is > smaller than the number of groups of the last pinctl instance never to be > intialized, thus cause system crash as below > > [0.661012] [<802a6cb0>] (strcmp) from [<802cc80c>] > (imx_dt_node_to_map+0x58/0x208) > [0.668879] [<802cc80c>] (imx_dt_node_to_map) from [<802cbe24>] > (pinctrl_dt_to_map+0x174/0x2b0) > [0.677654] [<802cbe24>] (pinctrl_dt_to_map) from [<802c8f18>] > (pinctrl_get+0x100/0x424) > [0.685878] [<802c8f18>] (pinctrl_get) from [<802c9510>] > (pinctrl_register+0x26c/0x480) > [0.694104] [<802c9510>] (pinctrl_register) from [<802ccf3c>] > (imx_pinctrl_probe+0x580/0x6e8) > [0.702706] [<802ccf3c>] (imx_pinctrl_probe) from [<80351b58>] > (platform_drv_probe+0x44/0xa4) > [0.711455] [<80351b58>] (platform_drv_probe) from [<803503ec>] > (driver_probe_device+0x174/0x2b4) > [0.720405] [<803503ec>] (driver_probe_device) from [<803505fc>] > (__driver_attach+0x8c/0x90) > [0.728982] [<803505fc>] (__driver_attach) from [<8034e930>] > (bus_for_each_dev+0x6c/0xa0) > [0.737381] [<8034e930>] (bus_for_each_dev) from [<8034fb88>] > (bus_add_driver+0x148/0x1f0) > [0.745804] [<8034fb88>] (bus_add_driver) from [<80350c00>] > (driver_register+0x78/0xf8) > [0.753880] [<80350c00>] (driver_register) from [<800097d0>] > (do_one_initcall+0x8c/0x1d4) > [0.762282] [<800097d0>] (do_one_initcall) from [<80987dac>] > (kernel_init_freeable+0x144/0x1e4) > [0.771061] [<80987dac>] (kernel_init_freeable) from [<806d9c7c>] > (kernel_init+0x8/0xe8) > [0.779285] [<806d9c7c>] (kernel_init) from [<8000f628>] > (ret_from_fork+0x14/0x2c) > [0.786981] Code: e352 e5e32001 1afb e12fff1e (e4d03001) When you add a crash log (which is fine) then please don't remove relevant parts (here the beginning). I'm sure you have a wrong fix here (as Markus already pointed out). Which machine did this happen on? Also as general rule it's nice to have the fixes at the beginning of the series. This allows the maintainer to take the fixes already now and postpone the cleanups and new features until the next merge window. Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König| Industrial Linux Solutions | http://www.pengutronix.de/ | -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 8/8] pinctrl: freescale: imx: fix system crash if enable two pinctl instances
On Tue, Aug 18, 2015 at 10:48:59AM -0500, Adrian Alonso wrote: > From: Robin Gong > > Remove 'static' for 'grp_index', otherwise, it cause the groups whose number > is > smaller than the number of groups of the last pinctl instance never to be > intialized, thus cause system crash as below grp_index is used as array index. If you remove 'static' from this variable doesn't it always write to array element 0 and overwrite the last group? Regards, Markus > > [0.661012] [<802a6cb0>] (strcmp) from [<802cc80c>] > (imx_dt_node_to_map+0x58/0x208) > [0.668879] [<802cc80c>] (imx_dt_node_to_map) from [<802cbe24>] > (pinctrl_dt_to_map+0x174/0x2b0) > [0.677654] [<802cbe24>] (pinctrl_dt_to_map) from [<802c8f18>] > (pinctrl_get+0x100/0x424) > [0.685878] [<802c8f18>] (pinctrl_get) from [<802c9510>] > (pinctrl_register+0x26c/0x480) > [0.694104] [<802c9510>] (pinctrl_register) from [<802ccf3c>] > (imx_pinctrl_probe+0x580/0x6e8) > [0.702706] [<802ccf3c>] (imx_pinctrl_probe) from [<80351b58>] > (platform_drv_probe+0x44/0xa4) > [0.711455] [<80351b58>] (platform_drv_probe) from [<803503ec>] > (driver_probe_device+0x174/0x2b4) > [0.720405] [<803503ec>] (driver_probe_device) from [<803505fc>] > (__driver_attach+0x8c/0x90) > [0.728982] [<803505fc>] (__driver_attach) from [<8034e930>] > (bus_for_each_dev+0x6c/0xa0) > [0.737381] [<8034e930>] (bus_for_each_dev) from [<8034fb88>] > (bus_add_driver+0x148/0x1f0) > [0.745804] [<8034fb88>] (bus_add_driver) from [<80350c00>] > (driver_register+0x78/0xf8) > [0.753880] [<80350c00>] (driver_register) from [<800097d0>] > (do_one_initcall+0x8c/0x1d4) > [0.762282] [<800097d0>] (do_one_initcall) from [<80987dac>] > (kernel_init_freeable+0x144/0x1e4) > [0.771061] [<80987dac>] (kernel_init_freeable) from [<806d9c7c>] > (kernel_init+0x8/0xe8) > [0.779285] [<806d9c7c>] (kernel_init) from [<8000f628>] > (ret_from_fork+0x14/0x2c) > [0.786981] Code: e352 e5e32001 1afb e12fff1e (e4d03001) > > Signed-off-by: Robin Gong > Signed-off-by: Adrian Alonso > --- > drivers/pinctrl/freescale/pinctrl-imx.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/pinctrl/freescale/pinctrl-imx.c > b/drivers/pinctrl/freescale/pinctrl-imx.c > index 3e02887..cdb5463 100644 > --- a/drivers/pinctrl/freescale/pinctrl-imx.c > +++ b/drivers/pinctrl/freescale/pinctrl-imx.c > @@ -595,7 +595,7 @@ static int imx_pinctrl_parse_functions(struct device_node > *np, > struct device_node *child; > struct imx_pmx_func *func; > struct imx_pin_group *grp; > - static u32 grp_index; > + u32 grp_index = 0; > u32 i = 0; > > dev_dbg(info->dev, "parse function(%d): %s\n", index, np->name); > -- > 2.1.4 > > > ___ > linux-arm-kernel mailing list > linux-arm-ker...@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0| Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917- | signature.asc Description: Digital signature
[PATCH 8/8] pinctrl: freescale: imx: fix system crash if enable two pinctl instances
From: Robin Gong Remove 'static' for 'grp_index', otherwise, it cause the groups whose number is smaller than the number of groups of the last pinctl instance never to be intialized, thus cause system crash as below [0.661012] [<802a6cb0>] (strcmp) from [<802cc80c>] (imx_dt_node_to_map+0x58/0x208) [0.668879] [<802cc80c>] (imx_dt_node_to_map) from [<802cbe24>] (pinctrl_dt_to_map+0x174/0x2b0) [0.677654] [<802cbe24>] (pinctrl_dt_to_map) from [<802c8f18>] (pinctrl_get+0x100/0x424) [0.685878] [<802c8f18>] (pinctrl_get) from [<802c9510>] (pinctrl_register+0x26c/0x480) [0.694104] [<802c9510>] (pinctrl_register) from [<802ccf3c>] (imx_pinctrl_probe+0x580/0x6e8) [0.702706] [<802ccf3c>] (imx_pinctrl_probe) from [<80351b58>] (platform_drv_probe+0x44/0xa4) [0.711455] [<80351b58>] (platform_drv_probe) from [<803503ec>] (driver_probe_device+0x174/0x2b4) [0.720405] [<803503ec>] (driver_probe_device) from [<803505fc>] (__driver_attach+0x8c/0x90) [0.728982] [<803505fc>] (__driver_attach) from [<8034e930>] (bus_for_each_dev+0x6c/0xa0) [0.737381] [<8034e930>] (bus_for_each_dev) from [<8034fb88>] (bus_add_driver+0x148/0x1f0) [0.745804] [<8034fb88>] (bus_add_driver) from [<80350c00>] (driver_register+0x78/0xf8) [0.753880] [<80350c00>] (driver_register) from [<800097d0>] (do_one_initcall+0x8c/0x1d4) [0.762282] [<800097d0>] (do_one_initcall) from [<80987dac>] (kernel_init_freeable+0x144/0x1e4) [0.771061] [<80987dac>] (kernel_init_freeable) from [<806d9c7c>] (kernel_init+0x8/0xe8) [0.779285] [<806d9c7c>] (kernel_init) from [<8000f628>] (ret_from_fork+0x14/0x2c) [0.786981] Code: e352 e5e32001 1afb e12fff1e (e4d03001) Signed-off-by: Robin Gong Signed-off-by: Adrian Alonso --- drivers/pinctrl/freescale/pinctrl-imx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pinctrl/freescale/pinctrl-imx.c b/drivers/pinctrl/freescale/pinctrl-imx.c index 3e02887..cdb5463 100644 --- a/drivers/pinctrl/freescale/pinctrl-imx.c +++ b/drivers/pinctrl/freescale/pinctrl-imx.c @@ -595,7 +595,7 @@ static int imx_pinctrl_parse_functions(struct device_node *np, struct device_node *child; struct imx_pmx_func *func; struct imx_pin_group *grp; - static u32 grp_index; + u32 grp_index = 0; u32 i = 0; dev_dbg(info->dev, "parse function(%d): %s\n", index, np->name); -- 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html