[PATCH -mm] introduce a false positive macro

Steven Rostedt
2006-05-11T10:07:55Z

This is a patch to introduce a macro that can be used to suppress false
positives caused by GCC and looked at by a developer to turn off the
warning.

It does NOT turn off the warnings by default!!!

This is to give developers that usually ignore all the "uninitialized
variable" warings an opportunity to turn off these warnings to concentrate
on the ones that they make.

The only true arguement against this is that it makes the code not so
pretty. Otherwise, it causes no more bloat and may even allow those to
debug better.

Now kernel hacking has an option for developers to turn off the warnings
that were looked at and marked.

This patch only introduces the macro. If it is accepted, then more
patches need to be made to mark the variables.

Even if a variable is marked incorrectly as not a bug, it's still not
bad, in fact, I would say is better. Only those that need to look at that
that code should keep this off. Remember, this only turns off the
warnings if you explicitly do so yourself.

-- Steve

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>

Index: linux-2.6.17-rc3-mm1/include/linux/types.h
===================================================================
--- linux-2.6.17-rc3-mm1.orig/include/linux/types.h 2006-05-11 05:35:33.000000000 -0400
+++ linux-2.6.17-rc3-mm1/include/linux/types.h 2006-05-11 05:49:06.000000000 -0400
@@ -192,4 +192,15 @@ struct ustat {
char f_fpack[6];
};

+#ifdef CONFIG_HIDE_FALSE_POSITIVES
+/*
+ * No parentheses around x = x because
+ * int (i=i);
+ * doesn't compile.
+ */
+# define uninit_var(x) x = x
+#else
+# define uninit_var(x) x
+#endif
+
#endif /* _LINUX_TYPES_H */
Index: linux-2.6.17-rc3-mm1/lib/Kconfig.debug
===================================================================
--- linux-2.6.17-rc3-mm1.orig/lib/Kconfig.debug 2006-05-11 05:37:58.000000000 -0400
+++ linux-2.6.17-rc3-mm1/lib/Kconfig.debug 2006-05-11 05:48:28.000000000 -0400
@@ -254,6 +254,22 @@ config FORCED_INLINING
become the default in the future, until then this option is there to
test gcc for this.

+config HIDE_FALSE_POSITIVES
+ bool "Hide gcc false positives of unititialized variables"
+ depends on DEBUG_KERNEL
+ help
+ gcc sometimes shows that a variable is uninitialized when the logic
+ actually does initialize it before use. The kernel has lots of these
+ warnings. This option hides those warnings that were actually looked
+ at by a human, and decided (right or wrong) that this variable is indeed
+ properly initialized.
+
+ If you are a developer that doesn't care about these warnings, and trust
+ that the one that marked these variables, did so correctly. Then you
+ may turn on this option, to look for your own mistakes.
+
+ Otherwise, say N
+
config DEBUG_SYNCHRO_TEST
tristate "Synchronisation primitive testing module"
depends on DEBUG_KERNEL