All of lore.kernel.org
 help / color / mirror / Atom feed
From: arnd@arndb.de (Arnd Bergmann)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2] vfs: bogus warnings in fs/namei.c
Date: Thu, 11 Oct 2012 13:20:00 +0000	[thread overview]
Message-ID: <201210111320.01047.arnd@arndb.de> (raw)
In-Reply-To: <20121011043734.GE2616@ZenIV.linux.org.uk>

The follow_link() function always initializes its *p argument,
or returns an error, but when building with 'gcc -s', the compiler
gets confused by the __always_inline attribute to the function
and can no longer detect where the cookie was initialized.

The solution is to always initialize the pointer from follow_link,
even in the error path. When building with -O2, this has zero impact
on generated code and adds a single instruction in the error path
for a -Os build on ARM.

Without this patch, building with gcc-4.6 through gcc-4.8 and
CONFIG_CC_OPTIMIZE_FOR_SIZE results in:

fs/namei.c: In function 'link_path_walk':
fs/namei.c:649:24: warning: 'cookie' may be used uninitialized in this function [-Wuninitialized]
fs/namei.c:1544:9: note: 'cookie' was declared here
fs/namei.c: In function 'path_lookupat':
fs/namei.c:649:24: warning: 'cookie' may be used uninitialized in this function [-Wuninitialized]
fs/namei.c:1934:10: note: 'cookie' was declared here
fs/namei.c: In function 'path_openat':
fs/namei.c:649:24: warning: 'cookie' may be used uninitialized in this function [-Wuninitialized]
fs/namei.c:2899:9: note: 'cookie' was declared here

Signed-off-by: Arnd Bergmann <arnd@arndb.de>

diff --git a/fs/namei.c b/fs/namei.c
index 6d47fac..c1f18e4 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -810,6 +810,7 @@ follow_link(struct path *link, struct nameidata *nd, void **p)
 	return error;
 
 out_put_nd_path:
+	*p = NULL;
 	path_put(&nd->path);
 	path_put(link);
 	return error;

WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd@arndb.de>
To: Al Viro <viro@zeniv.linux.org.uk>
Cc: Jan Kara <jack@suse.cz>,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, arm@kernel.org,
	linux-fsdevel@vger.kernel.org
Subject: [PATCH v2] vfs: bogus warnings in fs/namei.c
Date: Thu, 11 Oct 2012 13:20:00 +0000	[thread overview]
Message-ID: <201210111320.01047.arnd@arndb.de> (raw)
In-Reply-To: <20121011043734.GE2616@ZenIV.linux.org.uk>

The follow_link() function always initializes its *p argument,
or returns an error, but when building with 'gcc -s', the compiler
gets confused by the __always_inline attribute to the function
and can no longer detect where the cookie was initialized.

The solution is to always initialize the pointer from follow_link,
even in the error path. When building with -O2, this has zero impact
on generated code and adds a single instruction in the error path
for a -Os build on ARM.

Without this patch, building with gcc-4.6 through gcc-4.8 and
CONFIG_CC_OPTIMIZE_FOR_SIZE results in:

fs/namei.c: In function 'link_path_walk':
fs/namei.c:649:24: warning: 'cookie' may be used uninitialized in this function [-Wuninitialized]
fs/namei.c:1544:9: note: 'cookie' was declared here
fs/namei.c: In function 'path_lookupat':
fs/namei.c:649:24: warning: 'cookie' may be used uninitialized in this function [-Wuninitialized]
fs/namei.c:1934:10: note: 'cookie' was declared here
fs/namei.c: In function 'path_openat':
fs/namei.c:649:24: warning: 'cookie' may be used uninitialized in this function [-Wuninitialized]
fs/namei.c:2899:9: note: 'cookie' was declared here

Signed-off-by: Arnd Bergmann <arnd@arndb.de>

diff --git a/fs/namei.c b/fs/namei.c
index 6d47fac..c1f18e4 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -810,6 +810,7 @@ follow_link(struct path *link, struct nameidata *nd, void **p)
 	return error;
 
 out_put_nd_path:
+	*p = NULL;
 	path_put(&nd->path);
 	path_put(link);
 	return error;

  reply	other threads:[~2012-10-11 13:20 UTC|newest]

Thread overview: 83+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-05 14:55 [PATCH 00/16] ARM: mostly harmless gcc warnings Arnd Bergmann
2012-10-05 14:55 ` Arnd Bergmann
2012-10-05 14:55 ` [PATCH 01/16] ARM: warnings in arch/arm/include/asm/uaccess.h Arnd Bergmann
2012-10-05 14:55   ` Arnd Bergmann
2012-10-08  5:49   ` Greg Ungerer
2012-10-08  5:49     ` Greg Ungerer
2012-10-09 12:08     ` Arnd Bergmann
2012-10-09 12:08       ` Arnd Bergmann
2012-10-05 14:55 ` [PATCH 02/16] ARM: binfmt_flat: unused variable 'persistent' Arnd Bergmann
2012-10-05 14:55   ` Arnd Bergmann
2012-10-08  5:50   ` Greg Ungerer
2012-10-08  5:50     ` Greg Ungerer
2012-10-05 14:55 ` [PATCH 03/16] SCSI: ARM: ncr5380/oak uses no interrupts Arnd Bergmann
2012-10-05 14:55   ` Arnd Bergmann
2012-10-05 14:55   ` Arnd Bergmann
2012-10-05 14:55 ` [PATCH 04/16] SCSI: ARM: make fas216_dumpinfo function conditional Arnd Bergmann
2012-10-05 14:55   ` Arnd Bergmann
2012-10-05 14:55 ` [PATCH 05/16] vfs: bogus warnings in fs/namei.c Arnd Bergmann
2012-10-05 14:55   ` Arnd Bergmann
2012-10-08 11:51   ` Jan Kara
2012-10-08 11:51     ` Jan Kara
2012-10-09 12:27     ` Arnd Bergmann
2012-10-09 12:27       ` Arnd Bergmann
2012-10-09 13:07       ` Arnd Bergmann
2012-10-09 13:07         ` Arnd Bergmann
2012-10-09 13:43         ` Jan Kara
2012-10-09 13:43           ` Jan Kara
2012-10-11  4:37         ` Al Viro
2012-10-11  4:37           ` Al Viro
2012-10-11 13:20           ` Arnd Bergmann [this message]
2012-10-11 13:20             ` [PATCH v2] " Arnd Bergmann
2012-10-05 14:55 ` [PATCH 06/16] mm/slob: use min_t() to compare ARCH_SLAB_MINALIGN Arnd Bergmann
2012-10-05 14:55   ` Arnd Bergmann
2012-10-05 16:46   ` Christoph Lameter
2012-10-05 16:46     ` Christoph Lameter
2012-10-31  7:25     ` Pekka Enberg
2012-10-31  7:25       ` Pekka Enberg
2012-10-05 14:55 ` [PATCH 07/16] cgroup: fix warning when building without any subsys Arnd Bergmann
2012-10-05 14:55   ` Arnd Bergmann
2012-10-05 15:50   ` Ben Blum
2012-10-05 15:50     ` Ben Blum
2012-10-06  2:14   ` Tejun Heo
2012-10-06  2:14     ` Tejun Heo
2012-10-06  6:19     ` Arnd Bergmann
2012-10-06  6:19       ` Arnd Bergmann
2012-10-05 14:55 ` [PATCH 08/16] ipvs: fix ip_vs_set_timeout debug messages Arnd Bergmann
2012-10-05 14:55   ` Arnd Bergmann
2012-10-05 20:39   ` Julian Anastasov
2012-10-05 20:39     ` Julian Anastasov
2012-10-06  6:45     ` Arnd Bergmann
2012-10-06  6:45       ` Arnd Bergmann
2012-10-06  8:09       ` Julian Anastasov
2012-10-06  8:09         ` Julian Anastasov
2012-10-06  9:54         ` Arnd Bergmann
2012-10-06  9:54           ` Arnd Bergmann
2012-10-09  1:48           ` Simon Horman
2012-10-09  1:48             ` Simon Horman
2012-10-05 14:55 ` [PATCH 09/16] USB: EHCI: mark ehci_orion_conf_mbus_windows __devinit Arnd Bergmann
2012-10-05 14:55   ` Arnd Bergmann
2012-10-05 18:05   ` Alan Stern
2012-10-05 18:05     ` Alan Stern
2012-10-05 14:55 ` [PATCH 10/16] clk: don't mark clkdev_add_table as init Arnd Bergmann
2012-10-05 14:55   ` Arnd Bergmann
2012-10-05 14:55 ` [PATCH 11/16] pcmcia: sharpsl: don't discard sharpsl_pcmcia_ops Arnd Bergmann
2012-10-05 14:55   ` Arnd Bergmann
2012-10-05 14:55 ` [PATCH 12/16] video: mark nuc900fb_map_video_memory as __devinit Arnd Bergmann
2012-10-05 14:55   ` Arnd Bergmann
2012-10-05 14:55   ` Arnd Bergmann
2012-10-05 14:55 ` [PATCH 13/16] ARM: be really quiet when building with 'make -s' Arnd Bergmann
2012-10-05 14:55   ` Arnd Bergmann
2012-10-05 16:36   ` Nicolas Pitre
2012-10-05 16:36     ` Nicolas Pitre
2012-10-05 14:55 ` [PATCH 14/16] ARM: pxa: armcore: fix PCI PIO warnings Arnd Bergmann
2012-10-05 14:55   ` Arnd Bergmann
2012-10-05 15:32   ` Igor Grinberg
2012-10-05 15:32     ` Igor Grinberg
2012-10-05 14:55 ` [PATCH 15/16] spi/s3c64xx: use correct dma_transfer_direction type Arnd Bergmann
2012-10-05 14:55   ` Arnd Bergmann
2012-10-05 14:55   ` Arnd Bergmann
2012-10-05 14:55 ` [PATCH 16/16] ARM: pass -marm to gcc by default for both C and assembler Arnd Bergmann
2012-10-05 14:55   ` Arnd Bergmann
2012-10-05 18:42   ` Nicolas Pitre
2012-10-05 18:42     ` Nicolas Pitre

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=201210111320.01047.arnd@arndb.de \
    --to=arnd@arndb.de \
    --cc=linux-arm-kernel@lists.infradead.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.