All of lore.kernel.org
 help / color / mirror / Atom feed
From: Joe Perches <joe@perches.com>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: The sheer number of sparse warnings in the kernel
Date: Wed, 26 Feb 2014 16:48:07 -0800	[thread overview]
Message-ID: <1393462087.24588.50.camel@joe-AO722> (raw)
In-Reply-To: <530E6F76.1070605@zytor.com>

On Wed, 2014-02-26 at 14:49 -0800, H. Peter Anvin wrote:
> The number of sparse errors in the current kernel is staggering, and it
> makes sparse a lot less valuable of a tool that it otherwise could be.
> On a build of x86-64 allyesconfig I'm getting 20,676 sparse messages.
> Out of those, 12,358 come from linux/err.h.  Given that the latter
> basically spams *everything*, I can only conclude that almost noone uses
> sparse unless they have a filter script.
> 
> So a lot of these are certainly nuisance problems, like the
> <linux/err.h> stuff which has to do with the handling of error values,
> but some of these look like real bugs.
> 
> What do we need to do to actually make our tools be able to do work for
> us?  Newbie projects to clean up?  Trying to get the larger Linux
> companies to put resources on it?

gcc 4.8 does annoyingly warn on all unsigned/signed
mismatches/implicit conversions too.

err.h could also return bool instead of long for the
IS_ERR and IS_ERR_OR_NULL tests.

Maybe something like this could be useful.

Shut up the unsigned<->signed pointer conversions
and implicit conversions in the Makefile.

Use bool not long for IS_ERR and IS_ERR_OR_NULL

Update the dentry description of kernel pointers
left over from 2002's move to err.h

unsigned...

---
 Makefile            | 1 +
 include/linux/err.h | 7 ++++---
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/Makefile b/Makefile
index fce2ba7..a9c11c4 100644
--- a/Makefile
+++ b/Makefile
@@ -381,6 +381,7 @@ KBUILD_CPPFLAGS := -D__KERNEL__
 KBUILD_CFLAGS   := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
 		   -fno-strict-aliasing -fno-common \
 		   -Werror-implicit-function-declaration \
+		   -Wno-sign-conversion -Wno-pointer-sign \
 		   -Wno-format-security \
 		   -fno-delete-null-pointer-checks
 KBUILD_AFLAGS_KERNEL :=
diff --git a/include/linux/err.h b/include/linux/err.h
index 15f92e0..a729120 100644
--- a/include/linux/err.h
+++ b/include/linux/err.h
@@ -2,12 +2,13 @@
 #define _LINUX_ERR_H
 
 #include <linux/compiler.h>
+#include <linux/types.h>
 
 #include <asm/errno.h>
 
 /*
  * Kernel pointers have redundant information, so we can use a
- * scheme where we can return either an error code or a dentry
+ * scheme where we can return either an error code or a normal
  * pointer with the same return value.
  *
  * This should be a per-architecture thing, to allow different
@@ -29,12 +30,12 @@ static inline long __must_check PTR_ERR(__force const void *ptr)
 	return (long) ptr;
 }
 
-static inline long __must_check IS_ERR(__force const void *ptr)
+static inline bool __must_check IS_ERR(__force const void *ptr)
 {
 	return IS_ERR_VALUE((unsigned long)ptr);
 }
 
-static inline long __must_check IS_ERR_OR_NULL(__force const void *ptr)
+static inline bool __must_check IS_ERR_OR_NULL(__force const void *ptr)
 {
 	return !ptr || IS_ERR_VALUE((unsigned long)ptr);
 }



  parent reply	other threads:[~2014-02-27  0:48 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-26 22:49 The sheer number of sparse warnings in the kernel H. Peter Anvin
2014-02-26 23:25 ` Borislav Petkov
2014-02-27  8:27   ` Richard Weinberger
2014-02-26 23:28 ` Greg KH
2014-02-26 23:29   ` Greg KH
2014-02-26 23:31     ` H. Peter Anvin
2014-02-26 23:37       ` H. Peter Anvin
2014-02-27  1:19         ` Josh Boyer
2014-02-27  1:21           ` H. Peter Anvin
2014-03-04 23:13       ` Valdis.Kletnieks
2014-02-27  0:11   ` H. Peter Anvin
2014-02-27  1:34     ` Greg KH
2014-02-27  2:09       ` Joe Perches
2014-02-27  3:15       ` Dave Jones
2014-02-27  4:32         ` Greg KH
2014-02-27 10:11       ` Guenter Roeck
2014-02-27  1:52     ` Peter Hurley
2014-02-27  4:19       ` H. Peter Anvin
2014-02-27  4:31         ` Greg KH
2014-02-27  9:22       ` Geert Uytterhoeven
2014-02-27  0:48 ` Joe Perches [this message]
2014-02-27  0:51   ` H. Peter Anvin
2014-02-27  1:06     ` Joe Perches
2014-02-27  1:33     ` [PATCH] err.h: Use bool for IS_ERR and IS_ERR_OR_NULL Joe Perches
2014-02-27  2:03     ` [PATCH] sparse: Allow override of sizeof(bool) warning Joe Perches
2014-02-27  2:08       ` [RFC PATCH] Makefile: sparse - don't check sizeof(bool) Joe Perches
2014-02-27  2:28       ` [PATCH] sparse: Allow override of sizeof(bool) warning Josh Triplett
2014-02-27  2:53         ` [PATCH V2] " Joe Perches
2014-02-27  2:58           ` Josh Triplett
2014-02-27  3:19             ` [PATCH V3] " Joe Perches
2014-02-27  3:29             ` [PATCH V2] " H. Peter Anvin
2014-02-27  3:38               ` Joe Perches
2014-02-27  3:42                 ` H. Peter Anvin
2014-02-27  8:25                   ` Borislav Petkov
2014-02-27 15:10                     ` H. Peter Anvin
2014-02-27 15:24                       ` Theodore Ts'o
2014-02-27 15:48                         ` H. Peter Anvin
2014-02-27 16:01                           ` Borislav Petkov
2014-02-27 16:10                           ` Dan Carpenter
2014-02-27 16:52                             ` H. Peter Anvin
2014-02-27 17:06                               ` James Hogan
2014-02-27 17:06                                 ` James Hogan
2014-02-27  4:00                 ` Ben Pfaff
2014-02-27  4:19                   ` H. Peter Anvin
2014-02-27  4:26                     ` Ben Pfaff
2014-02-27  4:32                       ` H. Peter Anvin
2014-02-27 20:22                         ` Christopher Li
2014-02-27 20:26                           ` H. Peter Anvin
2014-02-27 20:39                             ` Joe Perches
2014-02-27 20:55                               ` Christopher Li
2014-02-27 21:49                                 ` Joe Perches
2014-02-27 20:44                             ` Christopher Li
2014-02-27 21:00                               ` Joe Perches
2014-02-27 21:03                                 ` Christopher Li
2014-02-27 21:41                                 ` Christopher Li
2014-02-27  9:56 ` The sheer number of sparse warnings in the kernel Dr. David Alan Gilbert

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1393462087.24588.50.camel@joe-AO722 \
    --to=joe@perches.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.