diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c index a3756293ed71..98c8736cced2 100644 --- a/fs/ceph/mds_client.c +++ b/fs/ceph/mds_client.c @@ -403,6 +403,8 @@ static int parse_reply_info_lease(void **p, void *end, lend = *p + struct_len; ceph_decode_need(p, end, struct_len, bad); + if (struct_len < sizeof(**lease)) + goto bad; *lease = *p; *p += sizeof(**lease);