FYI,

All new reported issues are from afr recent merge. I haven't gone through them, but if anyone some time, please go through them.


-------- Original Message --------
Subject:        New Defects reported by Coverity Scan for GlusterFS
Date:   Tue, 25 Mar 2014 23:50:48 -0700
From:   scan-ad...@coverity.com



Hi,


Please find the latest report on new defect(s) introduced to GlusterFS found 
with Coverity Scan.

Defect(s) Reported-by: Coverity Scan
Showing 12 of 12 defect(s)


** CID 1194648:  Dereference after null check  (FORWARD_NULL)
/xlators/cluster/afr/src/afr-inode-write.c: 54 in __afr_inode_write_finalize()

** CID 1194647:  Dereference after null check  (FORWARD_NULL)
/xlators/cluster/afr/src/afr-dir-write.c: 1125 in afr_rename()

** CID 1194651:  Data race condition  (MISSING_LOCK)
/xlators/cluster/afr/src/afr-dir-write.c: 141 in __afr_dir_write_finalize()

** CID 1194650:  Data race condition  (MISSING_LOCK)
/xlators/cluster/afr/src/afr-inode-write.c: 96 in __afr_inode_write_finalize()

** CID 1194649:  Data race condition  (MISSING_LOCK)
/xlators/cluster/afr/src/afr-inode-write.c: 180 in afr_writev_copy_outvars()

** CID 1194652:  Dereference null return value  (NULL_RETURNS)
/xlators/cluster/afr/src/afr-inode-write.c: 670 in afr_ftruncate()

** CID 1194653:  Resource leak  (RESOURCE_LEAK)
/xlators/cluster/afr/src/afr-self-heal-entry.c: 191 in 
afr_selfheal_newentry_mark()
/xlators/cluster/afr/src/afr-self-heal-entry.c: 174 in 
afr_selfheal_newentry_mark()

** CID 1194643:  Unchecked return value  (CHECKED_RETURN)
/xlators/cluster/afr/src/afr-common.c: 491 in afr_selfheal_enabled()

** CID 1194642:  Unchecked return value  (CHECKED_RETURN)
/xlators/cluster/afr/src/afr-common.c: 467 in afr_refresh_selfheal_wrap()

** CID 1194644:  Operands don't affect result  (CONSTANT_EXPRESSION_RESULT)
/xlators/cluster/afr/src/afr-self-heald.c: 1138 in afr_xl_op()

** CID 1194645:  Copy-paste error  (COPY_PASTE_ERROR)
/xlators/cluster/afr/src/afr-common.c: 1629 in afr_discover_do()

** CID 1194646:  Logically dead code  (DEADCODE)
/xlators/cluster/afr/src/pump.c: 1448 in pump_getxattr()


________________________________________________________________________________________________________
*** CID 1194648:  Dereference after null check  (FORWARD_NULL)
/xlators/cluster/afr/src/afr-inode-write.c: 54 in __afr_inode_write_finalize()
48      int read_subvol = 0;
49      int i = 0;
50
51      local = frame->local;
52      priv = this->private;
53
    CID 1194648:  Dereference after null check  (FORWARD_NULL)
    Comparing "local->inode" to null implies that "local->inode" might be null.
54      if (local->inode) {
55              if (local->transaction.type == AFR_METADATA_TRANSACTION)
56                      read_subvol = afr_metadata_subvol_get (local->inode, 
this,
57                                                             NULL, NULL);
58              else
59                      read_subvol = afr_data_subvol_get (local->inode, this,

________________________________________________________________________________________________________
*** CID 1194647:  Dereference after null check  (FORWARD_NULL)
/xlators/cluster/afr/src/afr-dir-write.c: 1125 in afr_rename()
1119             QUORUM_CHECK(rename,out);
1120
1121             transaction_frame = copy_frame (frame);
1122             if (!transaction_frame)
1123                     op_errno = ENOMEM;
1124
    CID 1194647:  Dereference after null check  (FORWARD_NULL)
    Dereferencing null pointer "transaction_frame".
1125            local = AFR_FRAME_INIT (transaction_frame, op_errno);
1126            if (!local)
1127                    goto out;
1128
1129             loc_copy (&local->loc,    oldloc);
1130             loc_copy (&local->newloc, newloc);

________________________________________________________________________________________________________
*** CID 1194651:  Data race condition  (MISSING_LOCK)
/xlators/cluster/afr/src/afr-dir-write.c: 141 in __afr_dir_write_finalize()
135                                     local->replies[i].postparent;
136                             local->cont.dir_fop.prenewparent =
137                                     local->replies[i].preparent2;
138                             local->cont.dir_fop.postnewparent =
139                                     local->replies[i].postparent2;
140                             if (local->replies[i].xdata)
    CID 1194651:  Data race condition  (MISSING_LOCK)
    Accessing "local->xdata_rsp" without holding lock "_call_frame_t.lock". Elsewhere, 
"local->xdata_rsp" is accessed with "_call_frame_t.lock" held 14 out of 18 times.
141                                     local->xdata_rsp =
142                                             dict_ref 
(local->replies[i].xdata);
143                             continue;
144                     }
145
146                     if (i == inode_read_subvol) {

________________________________________________________________________________________________________
*** CID 1194650:  Data race condition  (MISSING_LOCK)
/xlators/cluster/afr/src/afr-inode-write.c: 96 in __afr_inode_write_finalize()
90                      local->cont.inode_wfop.postbuf =
91                              local->replies[i].poststat;
92
93                      if (local->replies[i].xdata) {
94                              if (local->xdata_rsp)
95                                      dict_unref (local->xdata_rsp);
    CID 1194650:  Data race condition  (MISSING_LOCK)
    Accessing "local->xdata_rsp" without holding lock "_call_frame_t.lock". Elsewhere, 
"local->xdata_rsp" is accessed with "_call_frame_t.lock" held 14 out of 18 times.
96                              local->xdata_rsp =
97                                      dict_ref (local->replies[i].xdata);
98                      }
99              }
100             }
101     }

________________________________________________________________________________________________________
*** CID 1194649:  Data race condition  (MISSING_LOCK)
/xlators/cluster/afr/src/afr-inode-write.c: 180 in afr_writev_copy_outvars()
174
175             dst_local->op_ret = src_local->op_ret;
176             dst_local->op_errno = src_local->op_errno;
177             dst_local->cont.inode_wfop.prebuf = 
src_local->cont.inode_wfop.prebuf;
178             dst_local->cont.inode_wfop.postbuf = 
src_local->cont.inode_wfop.postbuf;
179             if (src_local->xdata_rsp)
    CID 1194649:  Data race condition  (MISSING_LOCK)
    Accessing "dst_local->xdata_rsp" without holding lock "_call_frame_t.lock". Elsewhere, 
"dst_local->xdata_rsp" is accessed with "_call_frame_t.lock" held 14 out of 18 times.
180                     dst_local->xdata_rsp = dict_ref (src_local->xdata_rsp);
181     }
182
183     void
184     afr_writev_unwind (call_frame_t *frame, xlator_t *this)
185     {

________________________________________________________________________________________________________
*** CID 1194652:  Dereference null return value  (NULL_RETURNS)
/xlators/cluster/afr/src/afr-inode-write.c: 670 in afr_ftruncate()
664             QUORUM_CHECK(ftruncate,out);
665
666             transaction_frame = copy_frame (frame);
667             if (!frame)
668                     goto out;
669
    CID 1194652:  Dereference null return value  (NULL_RETURNS)
    Dereferencing a null pointer "transaction_frame".
670             local = AFR_FRAME_INIT (transaction_frame, op_errno);
671             if (!local)
672                     goto out;
673
674             local->cont.ftruncate.offset  = offset;
675             if (xdata)

________________________________________________________________________________________________________
*** CID 1194653:  Resource leak  (RESOURCE_LEAK)
/xlators/cluster/afr/src/afr-self-heal-entry.c: 191 in 
afr_selfheal_newentry_mark()
185                     if (!sources[i])
186                             continue;
187                     afr_selfheal_post_op (frame, this, inode, i, xattr);
188             }
189
190             dict_unref (xattr);
    CID 1194653:  Resource leak  (RESOURCE_LEAK)
    Variable "changelog" going out of scope leaks the storage it points to.
191             return ret;
192     }
193
194
195     static int
196     __afr_selfheal_heal_dirent (call_frame_t *frame, xlator_t *this, fd_t 
*fd,
/xlators/cluster/afr/src/afr-self-heal-entry.c: 174 in 
afr_selfheal_newentry_mark()
168             uuid_copy (inode->gfid, replies[source].poststat.ia_gfid);
169
170             changelog = afr_matrix_create (priv->child_count, 
AFR_NUM_CHANGE_LOGS);
171
172             xattr = dict_new();
173             if (!xattr)
    CID 1194653:  Resource leak  (RESOURCE_LEAK)
    Variable "changelog" going out of scope leaks the storage it points to.
174                     return -ENOMEM;
175
176             for (i = 0; i < priv->child_count; i++) {
177                     if (!newentry[i])
178                             continue;
179                     changelog[i][idx] = hton32(1);

________________________________________________________________________________________________________
*** CID 1194643:  Unchecked return value  (CHECKED_RETURN)
/xlators/cluster/afr/src/afr-common.c: 491 in afr_selfheal_enabled()
485     {
486             afr_private_t *priv = NULL;
487             gf_boolean_t data = _gf_false;
488
489             priv = this->private;
490
    CID 1194643:  Unchecked return value  (CHECKED_RETURN)
    No check of the return value of "gf_string2boolean(priv->data_self_heal, 
&data)".
491             gf_string2boolean (priv->data_self_heal, &data);
492
493             return data || priv->metadata_self_heal || 
priv->entry_self_heal;
494     }
495
496

________________________________________________________________________________________________________
*** CID 1194642:  Unchecked return value  (CHECKED_RETURN)
/xlators/cluster/afr/src/afr-common.c: 467 in afr_refresh_selfheal_wrap()
461
462             local = frame->local;
463             this = frame->this;
464
465             afr_selfheal (frame->this, local->refreshinode->gfid);
466
    CID 1194642:  Unchecked return value  (CHECKED_RETURN)
    No check of the return value of "afr_selfheal_unlocked_discover(frame, 
local->refreshinode, local->refreshinode->gfid, local->replies)".
467             afr_selfheal_unlocked_discover (frame, local->refreshinode,
468                                             local->refreshinode->gfid,
469                                             local->replies);
470
471             afr_replies_interpret (frame, this, local->refreshinode);
472

________________________________________________________________________________________________________
*** CID 1194644:  Operands don't affect result  (CONSTANT_EXPRESSION_RESULT)
/xlators/cluster/afr/src/afr-self-heald.c: 1138 in afr_xl_op()
1132            int64_t cnt = 0;
1133
1134            priv = this->private;
1135            shd = &priv->shd;
1136
1137            for (i = 0; i < priv->child_count; i++)
    CID 1194644:  Operands don't affect result  (CONSTANT_EXPRESSION_RESULT)
    "priv->child_up[i] == -1" is always false regardless of the values of its 
operands. This occurs as the logical operand of if.
1138                    if (priv->child_up[i] == -1)
1139                            goto out;
1140
1141             ret = dict_get_int32 (input, "xl-op", (int32_t*)&op);
1142             if (ret)
1143                     goto out;

________________________________________________________________________________________________________
*** CID 1194645:  Copy-paste error  (COPY_PASTE_ERROR)
/xlators/cluster/afr/src/afr-common.c: 1629 in afr_discover_do()
1623
1624            local = frame->local;
1625            priv = this->private;
1626
1627            if (err) {
1628                    local->op_errno = -err;
    CID 1194645:  Copy-paste error  (COPY_PASTE_ERROR)
    "ret" in "ret = -1" looks like a copy-paste error.  Should it say "err" 
instead?
1629                    ret = -1;
1630                    goto out;
1631            }
1632
1633            call_count = local->call_count = AFR_COUNT (local->child_up,
1634                                                        priv->child_count);

________________________________________________________________________________________________________
*** CID 1194646:  Logically dead code  (DEADCODE)
/xlators/cluster/afr/src/pump.c: 1448 in pump_getxattr()
1442
1443            afr_getxattr (frame, this, loc, name, xdata);
1444
1445            ret = 0;
1446     out:
1447            if (ret < 0)
    CID 1194646:  Logically dead code  (DEADCODE)
    Execution cannot reach this statement "do  {
  afr_local_t *__loca...".
1448                    AFR_STACK_UNWIND (getxattr, frame, -1, op_errno, NULL, 
NULL);
1449            return 0;
1450     }
1451
1452     int
1453     pump_command_reply (call_frame_t *frame, xlator_t *this)


________________________________________________________________________________________________________
To view the defects in Coverity Scan visit, 
http://scan.coverity.com/projects/987?tab=Overview

To unsubscribe from the email notification for new defects, 
http://scan5.coverity.com/cgi-bin/unsubscribe.py





_______________________________________________
Gluster-devel mailing list
Gluster-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/gluster-devel

Reply via email to