]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: encode the correct extra info depending on the feature bits
authorXiubo Li <xiubli@redhat.com>
Tue, 28 May 2024 04:23:57 +0000 (12:23 +0800)
committerJos Collin <jcollin@redhat.com>
Thu, 11 Jul 2024 01:37:45 +0000 (07:07 +0530)
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 <xiubli@redhat.com>
(cherry picked from commit 1f1198b81b2442e5d6c0566bdade2f5d7dd23d12)

src/mds/Server.cc

index e80e4c2433a9b2d53ea4e94ccd0e6fe7280fb8ce..90b1169dcae8decd906bdd03ed7014f7cf25e72a 100644 (file)
@@ -2560,7 +2560,7 @@ void Server::handle_client_request(const cref_t<MClientRequest> &req)
         auto reply = make_message<MClientReply>(*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);