diff options
author | Chris Mason <chris.mason@oracle.com> | 2008-04-01 13:48:14 -0400 |
---|---|---|
committer | Chris Mason <chris.mason@oracle.com> | 2008-09-25 11:04:01 -0400 |
commit | 0999df54f850fe1aba29b10d5c869493af107478 (patch) | |
tree | c67e0ca38e89d0872f6246093d962ce598b49ec7 /fs/btrfs/disk-io.h | |
parent | ecbe2402cb4e4e7413544dc392c1a78d0f290292 (diff) |
Btrfs: Verify checksums on tree blocks found without read_tree_block
Checksums were only verified by btrfs_read_tree_block, which meant the
functions to probe the page cache for blocks were not validating checksums.
Normally this is fine because the buffers will only be in cache if they
have already been validated.
But, there is a window while the buffer is being read from disk where
it could be up to date in the cache but not yet verified. This patch
makes sure all buffers go through checksum verification before they
are used.
This is safer, and it prevents modification of buffers before they go
through the csum code.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/disk-io.h')
-rw-r--r-- | fs/btrfs/disk-io.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/btrfs/disk-io.h b/fs/btrfs/disk-io.h index b7cbc58a5553..05b88d0e75eb 100644 --- a/fs/btrfs/disk-io.h +++ b/fs/btrfs/disk-io.h | |||
@@ -69,4 +69,6 @@ u32 btrfs_csum_data(struct btrfs_root *root, char *data, u32 seed, size_t len); | |||
69 | void btrfs_csum_final(u32 crc, char *result); | 69 | void btrfs_csum_final(u32 crc, char *result); |
70 | void btrfs_throttle(struct btrfs_root *root); | 70 | void btrfs_throttle(struct btrfs_root *root); |
71 | int btrfs_open_device(struct btrfs_device *dev); | 71 | int btrfs_open_device(struct btrfs_device *dev); |
72 | int btrfs_verify_block_csum(struct btrfs_root *root, | ||
73 | struct extent_buffer *buf); | ||
72 | #endif | 74 | #endif |