diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2021-05-15 14:43:26 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2021-05-15 14:43:26 -0400 |
commit | a76f36fc6e6af7a4ba8d440d84e2cd6b4ec0b88b (patch) | |
tree | 04142cb4572bf9f25ef894971857e2a64b03df3f /libbcachefs/chardev.c | |
parent | bf145974607928c32c14d27c5c57e1220cad195d (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.c | 5 |
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; |