From: luo rixin Date: Fri, 22 Jul 2022 08:48:14 +0000 (+0800) Subject: crimson/osd/osd: fix sigsegv caused by reusing the moved objcect X-Git-Tag: v18.0.0~445^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=0a80c68b90da639b88b98e31fdefee0535409cb2;p=ceph-ci.git crimson/osd/osd: fix sigsegv caused by reusing the moved objcect In some case, `m` will be moved and setted nullptr before `m->get_spg()` be called, causing a segmentation fault. Signed-off-by: luo rixin --- diff --git a/src/crimson/osd/osd.cc b/src/crimson/osd/osd.cc index c940196426e..a964523c556 100644 --- a/src/crimson/osd/osd.cc +++ b/src/crimson/osd/osd.cc @@ -1036,8 +1036,9 @@ seastar::future<> OSD::handle_rep_op(crimson::net::ConnectionRef conn, seastar::future<> OSD::handle_rep_op_reply(crimson::net::ConnectionRef conn, Ref m) { + spg_t pgid = m->get_spg(); return pg_shard_manager.with_pg( - m->get_spg(), + pgid, [conn=std::move(conn), m=std::move(m)](auto &&pg) { if (pg) { m->finish_decode();