Hello Yan, Zheng,
This is a semi-automatic email about new static checker warnings.
The patch d1813cc074de: "ceph: handle frag mismatch between readdir
request and reply" from Sep 18, 2013, leads to the following Smatch
complaint:
fs/ceph/inode.c:1312 ceph_readdir_prepopulate()
warn: variable dereferenced before check 'rinfo->dir_dir' (see line
1298)
fs/ceph/inode.c
1291 if (le32_to_cpu(rinfo->dir_dir->frag) != frag) {
^^^^^^^^^^^^^^^^^^^^
Patch introduces a dereference.
1292 dout("readdir_prepopulate got new frag %x -> %x\n",
1293 frag, le32_to_cpu(rinfo->dir_dir->frag));
1294 frag = le32_to_cpu(rinfo->dir_dir->frag);
1295 if (ceph_frag_is_leftmost(frag))
1296 r_readdir_offset = 2;
1297 else
1298 r_readdir_offset = 0;
1299 }
1300
1301 if (req->r_aborted)
1302 return readdir_prepopulate_inodes_only(req, session);
1303
1304 if (le32_to_cpu(rinfo->head->op) == CEPH_MDS_OP_LSSNAP) {
1305 snapdir = ceph_get_snapdir(parent->d_inode);
1306 parent = d_find_alias(snapdir);
1307 dout("readdir_prepopulate %d items under SNAPDIR dn
%p\n",
1308 rinfo->dir_nr, parent);
1309 } else {
1310 dout("readdir_prepopulate %d items under dn %p\n",
1311 rinfo->dir_nr, parent);
1312 if (rinfo->dir_dir)
^^^^^^^^^^^^^^
Old check.
1313 ceph_fill_dirfrag(parent->d_inode,
rinfo->dir_dir);
1314 }
regards,
dan carpenter
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html