summaryrefslogtreecommitdiff
path: root/libbcachefs/chardev.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2021-05-15 14:43:26 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2021-05-15 14:43:26 -0400
commita76f36fc6e6af7a4ba8d440d84e2cd6b4ec0b88b (patch)
tree04142cb4572bf9f25ef894971857e2a64b03df3f /libbcachefs/chardev.c
parentbf145974607928c32c14d27c5c57e1220cad195d (diff)
Update bcachefs sources to ae6f512de8 bcachefs: Fix out of bounds read in fs usage ioctl
Diffstat (limited to 'libbcachefs/chardev.c')
-rw-r--r--libbcachefs/chardev.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/libbcachefs/chardev.c b/libbcachefs/chardev.c
index c6160147..c29f8272 100644
--- a/libbcachefs/chardev.c
+++ b/libbcachefs/chardev.c
@@ -414,7 +414,8 @@ static long bch2_ioctl_fs_usage(struct bch_fs *c,
struct bch_replicas_entry *src_e =
cpu_replicas_entry(&c->replicas, i);
- if (replicas_usage_next(dst_e) > dst_end) {
+ /* check that we have enough space for one replicas entry */
+ if (dst_e + 1 > dst_end) {
ret = -ERANGE;
break;
}
@@ -523,7 +524,7 @@ static long bch2_ioctl_read_super(struct bch_fs *c,
ret = copy_to_user((void __user *)(unsigned long)arg.sb,
sb, vstruct_bytes(sb));
err:
- if (ca)
+ if (!IS_ERR_OR_NULL(ca))
percpu_ref_put(&ca->ref);
mutex_unlock(&c->sb_lock);
return ret;