diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2024-05-04 13:26:37 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2024-05-06 10:58:17 -0400 |
commit | db42549d402cb44fe67c95d08f1a9ea902d32e7e (patch) | |
tree | 031244e3d77637c1f0bcfdbd8a08c950ce2b2c10 /fs/bcachefs/sb-members.c | |
parent | 18b4abcead744322feb90ba31450e7d770e928bd (diff) | |
download | linux-stable-db42549d402cb44fe67c95d08f1a9ea902d32e7e.tar.gz linux-stable-db42549d402cb44fe67c95d08f1a9ea902d32e7e.tar.bz2 linux-stable-db42549d402cb44fe67c95d08f1a9ea902d32e7e.zip |
bcachefs: Add a better limit for maximum number of buckets
The bucket_gens array is a single array allocation (one byte per
bucket), and kernel allocations are still limited to INT_MAX.
Check this limit to avoid failing the bucket_gens array allocation.
Reported-by: syzbot+b29f436493184ea42e2b@syzkaller.appspotmail.com
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/sb-members.c')
-rw-r--r-- | fs/bcachefs/sb-members.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/bcachefs/sb-members.c b/fs/bcachefs/sb-members.c index 5b8e621ac5eb..44b3f0cb7b49 100644 --- a/fs/bcachefs/sb-members.c +++ b/fs/bcachefs/sb-members.c @@ -124,9 +124,9 @@ static int validate_member(struct printbuf *err, struct bch_sb *sb, int i) { - if (le64_to_cpu(m.nbuckets) > LONG_MAX) { - prt_printf(err, "device %u: too many buckets (got %llu, max %lu)", - i, le64_to_cpu(m.nbuckets), LONG_MAX); + if (le64_to_cpu(m.nbuckets) > BCH_MEMBER_NBUCKETS_MAX) { + prt_printf(err, "device %u: too many buckets (got %llu, max %u)", + i, le64_to_cpu(m.nbuckets), BCH_MEMBER_NBUCKETS_MAX); return -BCH_ERR_invalid_sb_members; } |