diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c index a207b342e7da..9f13f3f7b800 100644 --- a/fs/ceph/mds_client.c +++ b/fs/ceph/mds_client.c @@ -504,10 +504,8 @@ static int parse_reply_info_readdir(void **p, void *end, goto done; BUG_ON(!info->dir_entries); - if ((unsigned long)(info->dir_entries + num) > - (unsigned long)info->dir_entries + info->dir_buf_size) { + if (num > info->dir_buf_size / sizeof(*info->dir_entries)) { pr_err_client(cl, "dir contents are larger than expected\n"); - WARN_ON(1); goto bad; }