diff options
author | Chris Mason <chris.mason@oracle.com> | 2010-11-21 22:27:44 -0500 |
---|---|---|
committer | Chris Mason <chris.mason@oracle.com> | 2010-11-21 22:27:44 -0500 |
commit | 45f49bce99d008d6864a20324548f35936ba46fb (patch) | |
tree | 9bae14a5fa0b68573758dcc1aaaa176f4a62c6b8 /fs/btrfs/extent_io.c | |
parent | a1b075d28da563c5e2325577f282c042494254ba (diff) | |
download | op-kernel-dev-45f49bce99d008d6864a20324548f35936ba46fb.zip op-kernel-dev-45f49bce99d008d6864a20324548f35936ba46fb.tar.gz |
Btrfs: avoid NULL pointer deref in try_release_extent_buffer
If we fail to find a pointer in the radix tree, don't try
to deref the NULL one we do have.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/extent_io.c')
-rw-r--r-- | fs/btrfs/extent_io.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c index f60aa3c..143d3f5 100644 --- a/fs/btrfs/extent_io.c +++ b/fs/btrfs/extent_io.c @@ -3837,8 +3837,10 @@ int try_release_extent_buffer(struct extent_io_tree *tree, struct page *page) spin_lock(&tree->buffer_lock); eb = radix_tree_lookup(&tree->buffer, start >> PAGE_CACHE_SHIFT); - if (!eb) - goto out; + if (!eb) { + spin_unlock(&tree->buffer_lock); + return ret; + } if (test_bit(EXTENT_BUFFER_DIRTY, &eb->bflags)) { ret = 0; |