On Thu, 2020-01-23 at 20:29 +0300, Dan Carpenter wrote: > On Thu, Jan 23, 2020 at 10:45:31AM -0500, Jeff Layton wrote: > > On Thu, 2020-01-23 at 18:30 +0300, Dan Carpenter wrote: > > > Hello Jeff Layton, > > > > > > The patch d6566c62c529: "ceph: perform asynchronous unlink if we have > > > sufficient caps" from Apr 2, 2019, leads to the following static > > > checker warning: > > > > > > fs/ceph/dir.c:1059 get_caps_for_async_unlink() > > > error: uninitialized symbol 'got'. > > > > > > fs/ceph/dir.c > > > 1051 static bool get_caps_for_async_unlink(struct inode *dir, struct dentry *dentry) > > > 1052 { > > > 1053 struct ceph_inode_info *ci = ceph_inode(dir); > > > 1054 struct ceph_dentry_info *di; > > > 1055 int ret, want, got; > > > 1056 > > > 1057 want = CEPH_CAP_FILE_EXCL | CEPH_CAP_DIR_UNLINK; > > > 1058 ret = ceph_try_get_caps(dir, 0, want, true, &got); > > > 1059 dout("Fx on %p ret=%d got=%d\n", dir, ret, got); > > > ^^^ > > > Uninitialized on error. > > > > > > 1060 if (ret != 1 || got != want) > > > 1061 return false; > > > 1062 > > > 1063 spin_lock(&dentry->d_lock); > > > 1064 di = ceph_dentry(dentry); > > > > > > > Hi Dan, > > > > This looks like a false positive to me? > > > > On error, ret != 1, and got shouldn't matter in that case. If > > ceph_try_get_caps does return 1 then "got" will be filled out. > > It's complaining about the printk before the error handling. > > regards, > dan carpenter > Ahh thanks, I'll fix that up! Cheers, -- Jeff Layton <jlayton@xxxxxxxxxx>