diff -urN linux-2.6.17-rc4-mm1.orig/include/linux/types.h linux-2.6.17-rc4-mm1.diff/include/linux/types.h
--- linux-2.6.17-rc4-mm1.orig/include/linux/types.h	2006-05-15 19:48:33.957033250 +0000
+++ linux-2.6.17-rc4-mm1.diff/include/linux/types.h	2006-05-16 16:27:41.259449250 +0000
@@ -193,4 +193,15 @@
 	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 */
diff -urN linux-2.6.17-rc4-mm1.orig/lib/Kconfig.debug linux-2.6.17-rc4-mm1.diff/lib/Kconfig.debug
--- linux-2.6.17-rc4-mm1.orig/lib/Kconfig.debug	2006-05-15 19:48:34.365058750 +0000
+++ linux-2.6.17-rc4-mm1.diff/lib/Kconfig.debug	2006-05-16 16:27:41.279450500 +0000
@@ -268,6 +268,22 @@
 
 	  See Documentation/synchro-test.txt.
 
+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 RCU_TORTURE_TEST
 	tristate "torture tests for RCU"
 	depends on DEBUG_KERNEL
