aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/file.c
diff options
context:
space:
mode:
authorYan <yanzheng@21cn.com>2008-02-05 15:40:36 -0500
committerChris Mason <chris.mason@oracle.com>2008-09-25 11:04:00 -0400
commit7261009ceaee65e4683be6e474d1ea85a1b1b26c (patch)
treefb06ec79b70c2528921725d95df056d1065eacc8 /fs/btrfs/file.c
parent068fe39fa18e8921062e2e16e6aa2b46768b2a35 (diff)
btrfs_drop_extents: handle BTRFS_INODE_REF_KEY types
It's possible "key.type == BTRFS_INODE_REF_KEY" and "key.offset >= end". Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/file.c')
-rw-r--r--fs/btrfs/file.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 184bde1cfc3d..bfa4149c053d 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -507,11 +507,12 @@ next_slot:
507 slot = path->slots[0]; 507 slot = path->slots[0];
508 ret = 0; 508 ret = 0;
509 btrfs_item_key_to_cpu(leaf, &key, slot); 509 btrfs_item_key_to_cpu(leaf, &key, slot);
510 510 if (btrfs_key_type(&key) == BTRFS_EXTENT_DATA_KEY &&
511 if (key.offset >= end || key.objectid != inode->i_ino) { 511 key.offset >= end) {
512 goto out; 512 goto out;
513 } 513 }
514 if (btrfs_key_type(&key) > BTRFS_EXTENT_DATA_KEY) { 514 if (btrfs_key_type(&key) > BTRFS_EXTENT_DATA_KEY ||
515 key.objectid != inode->i_ino) {
515 goto out; 516 goto out;
516 } 517 }
517 if (recow) { 518 if (recow) {