On Fri, 2016-06-03 at 10:49 -0500, Andrew F. Davis wrote: > On 06/03/2016 10:41 AM, Joe Perches wrote: > > On Fri, 2016-06-03 at 10:25 -0500, Nishanth Menon wrote: > > > In some functions, returning a -ve decimal value is actually a valid > > > return condition when the function is returning a value, however, it > > > can also be misused for returning an error value that should ideally > > > be a valid error code defined in include/uapi/asm-generic/errno-base.h > > > or include/uapi/asm-generic/errno.h > > > > > > Considering typical newbie error of doing the following: > > > int fn(void) > > > { > > > /* ... error condition ... */ > > > return -1; > > > } > > > > > > void fn1(void) > > > { > > > /* some code */ > > > if (fn() < 0) { > > > pr_err("Error occurred\n"); > > > return; > > > } > > > /* other cases... */ > > > } > > > > > > Flag this as a check case for developer verification. > > I think it's not a newbie error to have a -1 return and it > > seems like rather too many cases to even suggest be changed. > > > > $ git grep -E "\breturn\s+\-\s*[0-9]+" * | grep -v "^tools" | wc -l > > 8388 > > > A quick look over some of these cases show many *should* be replaced > with proper error codes. > > Removing the simple -1 case, which is often used for signaling one level > up of an error, gives better results though: > > $ git grep -E "\breturn\s+\-\s*[2-9][0-9]*" * | grep -v "^tools" | wc -l > 189
I did more or less the same grep, and that's somewhat true. -1 though is very common and doesn't need to be replaced. $ git grep -E "\breturn\s+\-\s*[0-9]+\s*;" * | grep -v "^tools" | grep -vP "return\s*\-1;" | wc -l 211 Looking at some of the specific instances of negative return values instead of the line counts though may show otherwise. -EFOO errors aren't always better.