question about
Subsystems (2)
Hi,
I was going through some Smatch stuff and it complains about something in drivers/leds/leds-88pm860x.c Could you take a look at it? I'm not sure what was intended there.
drivers/leds/leds-88pm860x.c +228 __check_device(6) warn: unsigned 'p->flags' is never less than zero.
222 static int __check_device(struct pm860x_led_pdata *pdata, char *name)
223 {
224 struct pm860x_led_pdata *p = pdata;
225 int ret = -EINVAL;
226
227 while (p && p->id) {
228 if ((p->id != PM8606_ID_LED) || (p->flags < 0))
^^^^^^^^^^^^ p->flags is an unsigned int so this condition is never true.
229 break;
230
231 if (!strncmp(name, pm860x_led_name[p->flags],
232 MFD_NAME_SIZE)) {
233 ret = (int)p->flags;
234 break;
235 }
236 p++;
237 }
238 return ret;
239 }regards,
dan carpenter
Thanks for your good catch. We needn't this checking at here. Now I format this patch.
Best Regards
Haojian
-----Original Message-----
From: Dan Carpenter [mailto:[email protected]]
Sent: 2010年5月28日 7:46 PM
To: Haojian Zhuang
Cc: [email protected]
Subject: question about
Hi,
I was going through some Smatch stuff and it complains about something in drivers/leds/leds-88pm860x.c Could you take a look at it? I'm not sure what was intended there.
drivers/leds/leds-88pm860x.c +228 __check_device(6) warn: unsigned 'p->flags' is never less than zero.
222 static int __check_device(struct pm860x_led_pdata *pdata, char *name)
223 {
224 struct pm860x_led_pdata *p = pdata;
225 int ret = -EINVAL;
226
227 while (p && p->id) {
228 if ((p->id != PM8606_ID_LED) || (p->flags < 0))
^^^^^^^^^^^^ p->flags is an unsigned int so this condition is never true.
229 break;
230
231 if (!strncmp(name, pm860x_led_name[p->flags],
232 MFD_NAME_SIZE)) {
233 ret = (int)p->flags;
234 break;
235 }
236 p++;
237 }
238 return ret;
239 }regards,
dan carpenter
From 59b2a1391d531bf06143ad5fc7b86490fead5065 Mon Sep 17 00:00:00 2001
From: Haojian Zhuang <[email protected]>
Date: Fri, 28 May 2010 21:36:47 +0800
Subject: [PATCH] leds: remove redundant checking
flags variable is declared as unsigned. So we needn't to check whether it's negative value.
--- drivers/leds/leds-88pm860x.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
drivers/leds/leds-88pm860x.c +1 -1
@@ -160,7 +160,7 @@ static int __check_device(struct pm860x_led_pdata *pdata, char *name)int ret = -EINVAL ; while (p && p->id) { - if ((p->id != PM8606_ID_LED) || (p->flags < 0)) + if (p->id != PM8606_ID_LED) break; if (!strncmp(name, pm860x_led_name[p->flags],
Signature · 1 line
1.5.6.5