summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/disk-io.c
diff options
context:
space:
mode:
authorChris Mason2016-06-08 23:36:12 +0200
committerChris Mason2016-06-08 23:36:12 +0200
commit719da39a61173c849f70656ed1a302e4b6deaa5b (patch)
treedcba3abd4921cdc663eb0fbad0c7e62fbe73f27c /fs/btrfs/disk-io.c
parentMerge branch 'for-chris' of git://git.kernel.org/pub/scm/linux/kernel/git/kda... (diff)
parentbtrfs: advertise which crc32c implementation is being used at module load (diff)
downloadkernel-qcow2-linux-719da39a61173c849f70656ed1a302e4b6deaa5b.tar.gz
kernel-qcow2-linux-719da39a61173c849f70656ed1a302e4b6deaa5b.tar.xz
kernel-qcow2-linux-719da39a61173c849f70656ed1a302e4b6deaa5b.zip
Merge branch 'misc-fixes-4.7' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux into for-linus-4.7
Diffstat (limited to 'fs/btrfs/disk-io.c')
-rw-r--r--fs/btrfs/disk-io.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index c3764ddb2a46..1142127f6e5e 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -4133,6 +4133,17 @@ static int btrfs_check_super_valid(struct btrfs_fs_info *fs_info,
* Hint to catch really bogus numbers, bitflips or so, more exact checks are
* done later
*/
+ if (btrfs_super_bytes_used(sb) < 6 * btrfs_super_nodesize(sb)) {
+ btrfs_err(fs_info, "bytes_used is too small %llu",
+ btrfs_super_bytes_used(sb));
+ ret = -EINVAL;
+ }
+ if (!is_power_of_2(btrfs_super_stripesize(sb)) ||
+ btrfs_super_stripesize(sb) != sectorsize) {
+ btrfs_err(fs_info, "invalid stripesize %u",
+ btrfs_super_stripesize(sb));
+ ret = -EINVAL;
+ }
if (btrfs_super_num_devices(sb) > (1UL << 31))
printk(KERN_WARNING "BTRFS: suspicious number of devices: %llu\n",
btrfs_super_num_devices(sb));