ext4: fix error handling in ext4_ext_shift_extents
authorDmitry Monakhov <dmonakhov@openvz.org>
Sun, 13 Apr 2014 19:05:42 +0000 (15:05 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Sun, 13 Apr 2014 19:05:42 +0000 (15:05 -0400)
Fix error handling by adding some.  :-)

Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
fs/ext4/extents.c

index 96e0a4bc8faaeb2816054b66606a84fe7225c5a7..38be06354b88816453244fec84bfbe5640b1d139 100644 (file)
@@ -5314,11 +5314,18 @@ ext4_ext_shift_extents(struct inode *inode, handle_t *handle,
         * enough to accomodate the shift.
         */
        path = ext4_ext_find_extent(inode, start - 1, NULL, 0);
+       if (IS_ERR(path))
+               return PTR_ERR(path);
        depth = path->p_depth;
        extent =  path[depth].p_ext;
-       ex_start = le32_to_cpu(extent->ee_block);
-       ex_end = le32_to_cpu(extent->ee_block) +
+       if (extent) {
+               ex_start = le32_to_cpu(extent->ee_block);
+               ex_end = le32_to_cpu(extent->ee_block) +
                        ext4_ext_get_actual_len(extent);
+       } else {
+               ex_start = 0;
+               ex_end = 0;
+       }
        ext4_ext_drop_refs(path);
        kfree(path);