Commit 6b95cf9b authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'ceph-for-5.4-rc4' of git://github.com/ceph/ceph-client

Pull ceph fixes from Ilya Dryomov:
 "A future-proofing decoding fix from Jeff intended for stable and a
  patch for a mostly benign race from Dongsheng"

* tag 'ceph-for-5.4-rc4' of git://github.com/ceph/ceph-client:
  rbd: cancel lock_dwork if the wait is interrupted
  ceph: just skip unrecognized info in ceph_reply_info_extra
parents fb8527e5 25e6be21
......@@ -6639,10 +6639,13 @@ static int rbd_add_acquire_lock(struct rbd_device *rbd_dev)
queue_delayed_work(rbd_dev->task_wq, &rbd_dev->lock_dwork, 0);
ret = wait_for_completion_killable_timeout(&rbd_dev->acquire_wait,
ceph_timeout_jiffies(rbd_dev->opts->lock_timeout));
if (ret > 0)
if (ret > 0) {
ret = rbd_dev->acquire_err;
else if (!ret)
ret = -ETIMEDOUT;
} else {
cancel_delayed_work_sync(&rbd_dev->lock_dwork);
if (!ret)
ret = -ETIMEDOUT;
}
if (ret) {
rbd_warn(rbd_dev, "failed to acquire exclusive lock: %ld", ret);
......
......@@ -384,8 +384,8 @@ static int parse_reply_info_readdir(void **p, void *end,
}
done:
if (*p != end)
goto bad;
/* Skip over any unrecognized fields */
*p = end;
return 0;
bad:
......@@ -406,12 +406,10 @@ static int parse_reply_info_filelock(void **p, void *end,
goto bad;
info->filelock_reply = *p;
*p += sizeof(*info->filelock_reply);
if (unlikely(*p != end))
goto bad;
/* Skip over any unrecognized fields */
*p = end;
return 0;
bad:
return -EIO;
}
......@@ -425,18 +423,21 @@ static int parse_reply_info_create(void **p, void *end,
{
if (features == (u64)-1 ||
(features & CEPH_FEATURE_REPLY_CREATE_INODE)) {
/* Malformed reply? */
if (*p == end) {
info->has_create_ino = false;
} else {
info->has_create_ino = true;
info->ino = ceph_decode_64(p);
ceph_decode_64_safe(p, end, info->ino, bad);
}
} else {
if (*p != end)
goto bad;
}
if (unlikely(*p != end))
goto bad;
/* Skip over any unrecognized fields */
*p = end;
return 0;
bad:
return -EIO;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment