From: Danny Al-Gaaf Date: Mon, 4 May 2015 17:59:30 +0000 (+0200) Subject: mds/MDS.cc: silence coverity DIV_BY_ZERO X-Git-Tag: v9.0.2~68^2~13 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=83cb6095dd4aa72db649a0f4c6184ca1b57ca875;p=ceph.git mds/MDS.cc: silence coverity DIV_BY_ZERO Silence coverity: ls.empty() check should already imply that ls.size() != 0. CID 1295402 (#1 of 1): Division or modulo by zero (DIVIDE_BY_ZERO) divide_by_zero: In expression rand() % ls.size(), modulo by expression ls.size() which may be zero has undefined behavior. Signed-off-by: Danny Al-Gaaf --- diff --git a/src/mds/MDS.cc b/src/mds/MDS.cc index 3a93c837a8f0..7462c82129bc 100644 --- a/src/mds/MDS.cc +++ b/src/mds/MDS.cc @@ -2860,24 +2860,24 @@ bool MDS::_dispatch(Message *m, bool new_msg) list ls; in->get_dirfrags(ls); - if (ls.empty()) - continue; // must be an open dir. - list::iterator p = ls.begin(); - int n = rand() % ls.size(); - while (n--) - ++p; - CDir *dir = *p; - if (!dir->get_parent_dir()) continue; // must be linked. - if (!dir->is_auth()) continue; // must be auth. - - mds_rank_t dest; - do { - int k = rand() % s.size(); - set::iterator p = s.begin(); - while (k--) ++p; - dest = *p; - } while (dest == whoami); - mdcache->migrator->export_dir_nicely(dir,dest); + if (!ls.empty()) { // must be an open dir. + list::iterator p = ls.begin(); + int n = rand() % ls.size(); + while (n--) + ++p; + CDir *dir = *p; + if (!dir->get_parent_dir()) continue; // must be linked. + if (!dir->is_auth()) continue; // must be auth. + + mds_rank_t dest; + do { + int k = rand() % s.size(); + set::iterator p = s.begin(); + while (k--) ++p; + dest = *p; + } while (dest == whoami); + mdcache->migrator->export_dir_nicely(dir,dest); + } } // hack: thrash fragments for (int i=0; imds_thrash_fragments; i++) {