From: Patrick Donnelly Date: Tue, 18 Apr 2017 02:33:19 +0000 (-0400) Subject: mds: check projected parent to avoid unsafe access X-Git-Tag: v12.0.3~38^2~27 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=26a08f31f7965afb062b027a4455620b52e7a67e;p=ceph.git mds: check projected parent to avoid unsafe access An anonymous inode may not have a stable parent so immediate migration would cause a segfault when checking for strays. Signed-off-by: Patrick Donnelly --- diff --git a/src/mds/Migrator.cc b/src/mds/Migrator.cc index f375c086ff09..4a508256fccf 100644 --- a/src/mds/Migrator.cc +++ b/src/mds/Migrator.cc @@ -781,7 +781,7 @@ void Migrator::export_dir(CDir *dir, mds_rank_t dest) return; } - if (!dir->inode->is_base() && dir->get_parent_dir()->get_inode()->is_stray() && + if (!dir->inode->is_base() && dir->get_inode()->get_projected_parent_dir()->get_inode()->is_stray() && dir->get_parent_dir()->get_parent_dir()->ino() != MDS_INO_MDSDIR(dest)) { dout(7) << "i won't export anything in stray" << dendl; return;