Skip to content

Commit 02e3757

Browse files
jtlaytonidryomov
authored andcommitted
ceph: handle zero-length feature mask in session messages
Most session messages contain a feature mask, but the MDS will routinely send a REJECT message with one that is zero-length. Commit 0fa8263 ("ceph: fix endianness bug when handling MDS session feature bits") fixed the decoding of the feature mask, but failed to account for the MDS sending a zero-length feature mask. This causes REJECT message decoding to fail. Skip trying to decode a feature mask if the word count is zero. Cc: stable@vger.kernel.org URL: https://tracker.ceph.com/issues/46823 Fixes: 0fa8263 ("ceph: fix endianness bug when handling MDS session feature bits") Signed-off-by: Jeff Layton <jlayton@kernel.org> Reviewed-by: Ilya Dryomov <idryomov@gmail.com> Tested-by: Patrick Donnelly <pdonnell@redhat.com> Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
1 parent 224c7b6 commit 02e3757

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

fs/ceph/mds_client.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3358,8 +3358,10 @@ static void handle_session(struct ceph_mds_session *session,
33583358
goto bad;
33593359
/* version >= 3, feature bits */
33603360
ceph_decode_32_safe(&p, end, len, bad);
3361-
ceph_decode_64_safe(&p, end, features, bad);
3362-
p += len - sizeof(features);
3361+
if (len) {
3362+
ceph_decode_64_safe(&p, end, features, bad);
3363+
p += len - sizeof(features);
3364+
}
33633365
}
33643366

33653367
mutex_lock(&mdsc->mutex);

0 commit comments

Comments
 (0)