> -----Original Message----- > From: Colin King [mailto:colin.king@xxxxxxxxxxxxx] > Sent: Monday, February 26, 2018 8:04 PM > To: A.s. Dong <aisheng.dong@xxxxxxx>; Fabio Estevam > <festevam@xxxxxxxxx>; Shawn Guo <shawnguo@xxxxxxxxxx>; Stefan > Agner <stefan@xxxxxxxx>; inus Walleij <linus.walleij@xxxxxxxxxx>; linux- > gpio@xxxxxxxxxxxxxxx > Cc: kernel-janitors@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx > Subject: [PATCH] pinctrl: imx: fix unsigned check if nfuncs with less than or > equal zero > > From: Colin Ian King <colin.king@xxxxxxxxxxxxx> > > The unsigned integer nfuncs is being error checked with a value less or equal > to zero; this is always false if of_get_child_count returns a -ve for an error > condition since nfuncs is not signed. Fix this by making variables nfuncs and i > signed integers. > > Detected with Coccinelle: > drivers/pinctrl/freescale/pinctrl-imx.c:620:6-12: WARNING: Unsigned > expression compared with zero: nfuncs <= 0 > > Fixes: ae75ff814538 ("pinctrl: pinctrl-imx: add imx pinctrl core driver") > Signed-off-by: Colin Ian King <colin.king@xxxxxxxxxxxxx> > --- > drivers/pinctrl/freescale/pinctrl-imx.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/pinctrl/freescale/pinctrl-imx.c > b/drivers/pinctrl/freescale/pinctrl-imx.c > index 24aaddd760a0..1e8ca83352d0 100644 > --- a/drivers/pinctrl/freescale/pinctrl-imx.c > +++ b/drivers/pinctrl/freescale/pinctrl-imx.c > @@ -605,8 +605,8 @@ static int imx_pinctrl_probe_dt(struct > platform_device *pdev, > struct device_node *np = pdev->dev.of_node; > struct device_node *child; > struct pinctrl_dev *pctl = ipctl->pctl; > - u32 nfuncs = 0; > - u32 i = 0; > + int nfuncs = 0; > + int i = 0; > bool flat_funcs; > I saw 'i', later used, is converted to u32 unconditionally. (GCC did not complain) e.g. radix_tree_insert imx_pinctrl_parse_functions And of_get_child_count seems can't return a minor value. So does something like below look better? diff --git a/drivers/pinctrl/freescale/pinctrl-imx.c b/drivers/pinctrl/freescale/pinctrl-imx.c index c976ffe..4259209 100644 --- a/drivers/pinctrl/freescale/pinctrl-imx.c +++ b/drivers/pinctrl/freescale/pinctrl-imx.c @@ -612,7 +612,7 @@ static int imx_pinctrl_probe_dt(struct platform_device *pdev, nfuncs = 1; } else { nfuncs = of_get_child_count(np); - if (nfuncs <= 0) { + if (nfuncs == 0) { dev_err(&pdev->dev, "no functions defined\n"); return -EINVAL; } Regards Dong Aisheng > if (!np) > -- > 2.15.1 ��.n��������+%������w��{.n����z�ޗ�����n�r������&��z�ޗ�zf���h���~����������_��+v���)ߣ�