diff options
author | 2021-09-06 12:43:01 +0300 | |
---|---|---|
committer | 2021-09-21 17:39:20 +0200 | |
commit | 708c87168b6121abc74b2a57d0c498baaf70cbea (patch) | |
tree | fa6bd45488db5bf659c8e6708d57743a6d120954 /fs/ceph | |
parent | Linux 5.15-rc2 (diff) | |
download | linux-708c87168b6121abc74b2a57d0c498baaf70cbea.tar.gz linux-708c87168b6121abc74b2a57d0c498baaf70cbea.tar.bz2 linux-708c87168b6121abc74b2a57d0c498baaf70cbea.zip |
ceph: fix off by one bugs in unsafe_request_wait()
The "> max" tests should be ">= max" to prevent an out of bounds access
on the next lines.
Fixes: e1a4541ec0b9 ("ceph: flush the mdlog before waiting on unsafe reqs")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Diffstat (limited to 'fs/ceph')
-rw-r--r-- | fs/ceph/caps.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c index 6c0e52fd0743..3e42d0466521 100644 --- a/fs/ceph/caps.c +++ b/fs/ceph/caps.c @@ -2263,7 +2263,7 @@ retry: list_for_each_entry(req, &ci->i_unsafe_dirops, r_unsafe_dir_item) { s = req->r_session; - if (unlikely(s->s_mds > max)) { + if (unlikely(s->s_mds >= max)) { spin_unlock(&ci->i_unsafe_lock); goto retry; } @@ -2277,7 +2277,7 @@ retry: list_for_each_entry(req, &ci->i_unsafe_iops, r_unsafe_target_item) { s = req->r_session; - if (unlikely(s->s_mds > max)) { + if (unlikely(s->s_mds >= max)) { spin_unlock(&ci->i_unsafe_lock); goto retry; } |