From: Xiubo Li Date: Tue, 28 May 2024 04:23:57 +0000 (+0800) Subject: mds: encode the correct extra info depending on the feature bits X-Git-Tag: v19.1.1~86^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=9c5cc339d363dc040e3b2fd195ce472ecec904ab;p=ceph.git mds: encode the correct extra info depending on the feature bits In the client side it will decode the extra info depending on the feature bits, but if we always encode it with the old version then the client could crash or gets the corrupted data. More detail please see "parse_reply_info_create()" in kclient code. Fixes: https://tracker.ceph.com/issues/63265 Signed-off-by: Xiubo Li (cherry picked from commit 1f1198b81b2442e5d6c0566bdade2f5d7dd23d12) --- diff --git a/src/mds/Server.cc b/src/mds/Server.cc index d5e1478607e8..c89dffd1c237 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -2562,7 +2562,7 @@ void Server::handle_client_request(const cref_t &req) auto reply = make_message(*req, 0); if (created != inodeno_t()) { bufferlist extra; - encode(created, extra); + set_reply_extra_bl(req, created, extra); reply->set_extra_bl(extra); } mds->send_message_client(reply, session);