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: [email protected] URL: https://tracker.ceph.com/issues/46823 Fixes: 0fa8263 ("ceph: fix endianness bug when handling MDS session feature bits") Signed-off-by: Jeff Layton <[email protected]> Reviewed-by: Ilya Dryomov <[email protected]> Tested-by: Patrick Donnelly <[email protected]> Signed-off-by: Ilya Dryomov <[email protected]>
1 parent 224c7b6 commit 02e3757

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

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)