Skip to contentSkip to conversation

nfsd: work around a gcc-5.1 warning

PATCH In review Arnd Bergmann 2 participants 3 messages May 12, 2015 – May 13, 2015

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 nfsd: work around a gcc-5.1 warning

gcc-5.0 warns about a potential uninitialized variable use in nfsd:

fs/nfsd/nfs4state.c: In function 'nfsd4_process_open2':
fs/nfsd/nfs4state.c:3781:3: warning: 'old_deny_bmap' may be used uninitialized in this function [-Wmaybe-uninitialized]
reset_union_bmap_deny(old_deny_bmap, stp);
^
fs/nfsd/nfs4state.c:3760:16: note: 'old_deny_bmap' was declared here

  unsigned char old_deny_bmap;
                ^

This is a false positive, the code path that is warned about cannot actually be reached.

This adds an initialization for the variable to make the warning go away.

---
This warning shows up in some ARM defconfig builds, which we try to build with no warnings to detect regressions.

fs/nfsd/nfs4state.c +2 -0
index 38f2d7abe3a7..997eda362a75 100644
@@ -3770,6 +3770,8 @@ nfs4_upgrade_open(struct svc_rqst *rqstp, struct nfs4_file *fp, struct svc_fh *c
 		set_deny(open->op_share_deny, stp);
 		fp->fi_share_deny |=
 				(open->op_share_deny & NFS4_SHARE_DENY_BOTH);
+	} else {
+		old_deny_bmap = 0;
 	}
 	spin_unlock(&fp->fi_lock);
 
#1 lore raw
Quoted 13 lines · Arnd Bergmann

gcc-5.0 warns about a potential uninitialized variable use in nfsd:

fs/nfsd/nfs4state.c: In function 'nfsd4_process_open2':
fs/nfsd/nfs4state.c:3781:3: warning: 'old_deny_bmap' may be used uninitialized in this function [-Wmaybe-uninitialized]

   reset_union_bmap_deny(old_deny_bmap, stp);
   ^
fs/nfsd/nfs4state.c:3760:16: note: 'old_deny_bmap' was declared here
  unsigned char old_deny_bmap;
                ^

This is a false positive, the code path that is warned about cannot actually be reached.

Quoted 7 lines

This adds an initialization for the variable to make the warning go away.

---
This warning shows up in some ARM defconfig builds, which we try to build with no warnings to detect regressions.

OK, I guess. How about simplifying slightly and doing it this way?--b

commit 3ae81ac291ec

Author: Arnd Bergmann <[email protected]>
Date:   Tue May 12 23:31:29 2015 +0200

nfsd: work around a gcc-5.1 warning

gcc-5.0 warns about a potential uninitialized variable use in nfsd:

fs/nfsd/nfs4state.c: In function 'nfsd4_process_open2':
fs/nfsd/nfs4state.c:3781:3: warning: 'old_deny_bmap' may be used uninitialized in this function [-Wmaybe-uninitialized]
reset_union_bmap_deny(old_deny_bmap, stp);
^
fs/nfsd/nfs4state.c:3760:16: note: 'old_deny_bmap' was declared here
unsigned char old_deny_bmap;
^

This is a false positive, the code path that is warned about cannot actually be reached.

This adds an initialization for the variable to make the warning go away.

fs/nfsd/nfs4state.c +1 -2
index 86f5c273c9ec..aef7c9bb6114 100644
@@ -3861,7 +3861,7 @@ static __be32
 nfs4_upgrade_open(struct svc_rqst *rqstp, struct nfs4_file *fp, struct svc_fh *cur_fh, struct nfs4_ol_stateid *stp, struct nfsd4_open *open)
 {
 	__be32 status;
-	unsigned char old_deny_bmap;
+	unsigned char old_deny_bmap = stp->st_deny_bmap;
 
 	if (!test_access(open->op_share_access, stp))
 		return nfs4_get_vfs_file(rqstp, fp, cur_fh, stp, open);
@@ -3870,7 +3870,6 @@ nfs4_upgrade_open(struct svc_rqst *rqstp, struct nfs4_file *fp, struct svc_fh *c
 	spin_lock(&fp->fi_lock);
 	status = nfs4_file_check_deny(fp, open->op_share_deny);
 	if (status == nfs_ok) {
-		old_deny_bmap = stp->st_deny_bmap;
 		set_deny(open->op_share_deny, stp);
 		fp->fi_share_deny |=
 				(open->op_share_deny & NFS4_SHARE_DENY_BOTH);
#2 lore raw
Quoted 19 lines · On Wednesday 13 May 2015 14:11:43 J. Bruce Fields wrote:

OK, I guess. How about simplifying slightly and doing it this way?--b

commit 3ae81ac291ec

Author: Arnd Bergmann <[email protected]>
Date:   Tue May 12 23:31:29 2015 +0200

nfsd: work around a gcc-5.1 warning

gcc-5.0 warns about a potential uninitialized variable use in nfsd:

fs/nfsd/nfs4state.c: In function 'nfsd4_process_open2':
fs/nfsd/nfs4state.c:3781:3: warning: 'old_deny_bmap' may be used uninitialized in this function [-Wmaybe-uninitialized]
reset_union_bmap_deny(old_deny_bmap, stp);
^
fs/nfsd/nfs4state.c:3760:16: note: 'old_deny_bmap' was declared here
unsigned char old_deny_bmap;
^

Quoted 10 lines

This is a false positive, the code path that is warned about cannot actually be reached.

This adds an initialization for the variable to make the warning go away.

Works for me, thanks!

Arnd