On Mon, Sep 23, 2013 at 8:00 PM, Dan Carpenter <dan.carpenter@xxxxxxxxxx> wrote: > On Mon, Sep 23, 2013 at 06:47:17PM -0400, Lidza Louina wrote: >> This patch removes this smatch warning: >> unsigned '--un->un_open_count' is never less than zero >> >> The code decremented the un_open_count variable >> and tested to see if it was less than zero. Because >> un_open_count is unsigned and can't be below zero, >> this test doesn't work. This patch tests >> un_open_count against 0 without decrementing it. >> >> Signed-off-by: Lidza Louina <lidza.louina@xxxxxxxxx> >> --- >> drivers/staging/dgap/dgap_tty.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/drivers/staging/dgap/dgap_tty.c b/drivers/staging/dgap/dgap_tty.c >> index 8f0a824..f496710 100644 >> --- a/drivers/staging/dgap/dgap_tty.c >> +++ b/drivers/staging/dgap/dgap_tty.c >> @@ -1442,7 +1442,7 @@ static void dgap_tty_close(struct tty_struct *tty, struct file *file) >> un->un_open_count = 1; >> } >> >> - if (--un->un_open_count < 0) { >> + if (un->un_open_count == 0) { >> APR(("bad serial port open count of %d\n", un->un_open_count)); >> un->un_open_count = 0; >> } > > This fix isn't right. We still need the decrement. Probably the best > thing is to audit all the driver and make sure that un->un_open_count > can never be == 0. But the next best, and still totally reasonable > thing to do is this: > > if (un->un_open_count == 0) { > APR(("bad serial port open count of %d\n", un->un_open_count)); > un->un_open_count = 1; > } > un->un_open_count--; > > regards, > dan carpenter > Okay, I see why, I'll resend this. _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel