diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index ad8e342c4b7843b0260fa2e92677d703c61e4b9e..5864f05243c21cfa53079f5f2137d528093fc279 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -3921,7 +3921,8 @@ static int btrfs_add_system_chunk(struct btrfs_root *root, u8 *ptr; array_size = btrfs_super_sys_array_size(super_copy); - if (array_size + item_size > BTRFS_SYSTEM_CHUNK_ARRAY_SIZE) + if (array_size + item_size + sizeof(disk_key) + > BTRFS_SYSTEM_CHUNK_ARRAY_SIZE) return -EFBIG; ptr = super_copy->sys_chunk_array + array_size;