From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753529AbZGNJB2 (ORCPT ); Tue, 14 Jul 2009 05:01:28 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753338AbZGNJB1 (ORCPT ); Tue, 14 Jul 2009 05:01:27 -0400 Received: from hera.kernel.org ([140.211.167.34]:53713 "EHLO hera.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751625AbZGNJB0 (ORCPT ); Tue, 14 Jul 2009 05:01:26 -0400 Subject: Re: [PATCH] AFS: Fix compilation warning From: Jaswinder Singh Rajput To: David Howells Cc: torvalds@osdl.org, akpm@linux-foundation.org, linux-afs@lists.infradead.org, linux-kernel@vger.kernel.org, Artem Bityutskiy In-Reply-To: <1247561220.2473.0.camel@ht.satnam> References: <20090709094430.23882.46013.stgit@warthog.procyon.org.uk> <1247561220.2473.0.camel@ht.satnam> Content-Type: text/plain Date: Tue, 14 Jul 2009 14:28:51 +0530 Message-Id: <1247561931.2473.2.camel@ht.satnam> Mime-Version: 1.0 X-Mailer: Evolution 2.24.5 (2.24.5-2.fc10) Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 2009-07-14 at 14:17 +0530, Jaswinder Singh Rajput wrote: > On Thu, 2009-07-09 at 10:44 +0100, David Howells wrote: > > From: Artem Bityutskiy > > > > Fix the following warning: > > > > fs/afs/dir.c: In function 'afs_d_revalidate': > > fs/afs/dir.c:567: warning: 'fid.vnode' may be used uninitialized in this function > > fs/afs/dir.c:567: warning: 'fid.unique' may be used uninitialized in this function > > > > by marking the 'fid' variable as an uninitialized_var. The problem is that gcc > > doesn't always manage to work out that fid is always set on the path through > > the function that uses it. > > > > Cc: linux-afs@lists.infradead.org > > Cc: linux-kernel@vger.kernel.org > > Signed-off-by: Artem Bityutskiy > > Signed-off-by: David Howells > > --- > > > > Have you tried this approach : > > diff --git a/fs/afs/dir.c b/fs/afs/dir.c > index 9bd7577..09cb5bb 100644 > --- a/fs/afs/dir.c > +++ b/fs/afs/dir.c > @@ -607,53 +607,56 @@ static int afs_d_revalidate(struct dentry *dentry, struct nameidata *nd) > > /* search the directory for this vnode */ > ret = afs_do_lookup(&dir->vfs_inode, dentry, &fid, key); > - switch (ret) { > - case 0: > - /* the filename maps to something */ > - if (!dentry->d_inode) > - goto out_bad; > - if (is_bad_inode(dentry->d_inode)) { > - printk("kAFS: afs_d_revalidate: %s/%s has bad inode\n", > - parent->d_name.name, dentry->d_name.name); > + if (ret < 0) { > + switch (ret) { > + case -ENOENT: > + /* the filename is unknown */ > + _debug("%s: dirent not found", dentry->d_name.name); > + if (dentry->d_inode) > + goto not_found; > + goto out_valid; > + > + default: > + _debug("failed to iterate dir %s: %d", > + parent->d_name.name, ret); > goto out_bad; > } > + } > > - /* if the vnode ID has changed, then the dirent points to a > - * different file */ > - if (fid.vnode != vnode->fid.vnode) { > - _debug("%s: dirent changed [%u != %u]", > - dentry->d_name.name, fid.vnode, > - vnode->fid.vnode); > - goto not_found; > - } > - > - /* if the vnode ID uniqifier has changed, then the file has > - * been deleted and replaced, and the original vnode ID has > - * been reused */ > - if (fid.unique != vnode->fid.unique) { > - _debug("%s: file deleted (uq %u -> %u I:%llu)", > - dentry->d_name.name, fid.unique, > - vnode->fid.unique, > - (unsigned long long)dentry->d_inode->i_version); > - spin_lock(&vnode->lock); > - set_bit(AFS_VNODE_DELETED, &vnode->flags); > - spin_unlock(&vnode->lock); > - goto not_found; > - } > - goto out_valid; > - > - case -ENOENT: > - /* the filename is unknown */ > - _debug("%s: dirent not found", dentry->d_name.name); > - if (dentry->d_inode) > - goto not_found; > - goto out_valid; > - > - default: > - _debug("failed to iterate dir %s: %d", > - parent->d_name.name, ret); > + /* the filename maps to something */ > + if (!dentry->d_inode) > goto out_bad; > + if (is_bad_inode(dentry->d_inode)) { > + printk("kAFS: afs_d_revalidate: %s/%s has bad inode\n", > + parent->d_name.name, dentry->d_name.name); > + goto out_bad; > + } > + > + /* > + * if the vnode ID has changed, then the dirent points to a > + * different file > + */ > + if (fid.vnode != vnode->fid.vnode) { > + _debug("%s: dirent changed [%u != %u]", > + dentry->d_name.name, fid.vnode, vnode->fid.vnode); > + goto not_found; > + } > + > + /* > + * if the vnode ID uniqifier has changed, then the file has been > + * deleted and replaced, and the original vnode ID has been reused > + */ > + if (fid.unique != vnode->fid.unique) { > + _debug("%s: file deleted (uq %u -> %u I:%llu)", > + dentry->d_name.name, fid.unique, > + vnode->fid.unique, > + (unsigned long long)dentry->d_inode->i_version); > + spin_lock(&vnode->lock); > + set_bit(AFS_VNODE_DELETED, &vnode->flags); > + spin_unlock(&vnode->lock); > + goto not_found; > } > + goto out_valid; You can also remove this goto. So by this way, you can get rid of : 1. compiler warning 2. fix 80 column wrap problem 3. remove one goto Enjoy. -- JSR