[lkml]   [2009]   [Jul]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Patch in this message
Subject[patch 1/8] Add -fno-delete-null-pointer-checks to gcc CFLAGS
2.6.27-stable review patch.  If anyone has any objections, please let us know.


From: Eugene Teo <>

commit a3ca86aea507904148870946d599e07a340b39bf upstream.

Turning on this flag could prevent the compiler from optimising away
some "useless" checks for null pointers. Such bugs can sometimes become
exploitable at compile time because of the -O2 optimisation.


An example that clearly shows this 'problem' is commit 6bf67672.

static void __devexit agnx_pci_remove(struct pci_dev *pdev)
struct ieee80211_hw *dev = pci_get_drvdata(pdev);
- struct agnx_priv *priv = dev->priv;
+ struct agnx_priv *priv;

if (!dev)
+ priv = dev->priv;

By reverting this patch, and compile it with and without
-fno-delete-null-pointer-checks flag, we can see that the check for dev
is compiled away.

call printk #
- testq %r12, %r12 # dev
- je .L94 #,
movq %r12, %rdi # dev,

Clearly the 'fix' is to stop using dev before it is tested, but building
with -fno-delete-null-pointer-checks flag at least makes it harder to

Signed-off-by: Eugene Teo <>
Acked-by: Eric Paris <>
Acked-by: Wang Cong <>
Signed-off-by: Linus Torvalds <>
Signed-off-by: Greg Kroah-Hartman <>

Makefile | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

--- a/Makefile
+++ b/Makefile
@@ -340,7 +340,8 @@ KBUILD_CPPFLAGS := -D__KERNEL__ $(LINUXI

KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
-fno-strict-aliasing -fno-common \
- -Werror-implicit-function-declaration
+ -Werror-implicit-function-declaration \
+ -fno-delete-null-pointer-checks

# Read KERNELRELEASE from include/config/kernel.release (if it exists)

 \ /
  Last update: 2009-07-17 22:43    [W:0.041 / U:4.868 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site