ext3: Add journal error check into ext3_delete_entry()
authorNamhyung Kim <namhyung@gmail.com>
Fri, 19 Nov 2010 07:28:35 +0000 (16:28 +0900)
committerJan Kara <jack@suse.cz>
Thu, 6 Jan 2011 10:52:15 +0000 (11:52 +0100)
Check return value of ext3_journal_get_write_access() and
ext3_journal_dirty_metadata().

Signed-off-by: Namhyung Kim <namhyung@gmail.com>
Signed-off-by: Jan Kara <jack@suse.cz>
fs/ext3/namei.c

index 03fccc573333df9f552b0848ae717b0c9f710caa..672cea16a8b9f11f0b61b3127e0612ac6a2dce81 100644 (file)
@@ -1644,8 +1644,13 @@ static int ext3_delete_entry (handle_t *handle,
                if (!ext3_check_dir_entry("ext3_delete_entry", dir, de, bh, i))
                        return -EIO;
                if (de == de_del)  {
+                       int err;
+
                        BUFFER_TRACE(bh, "get_write_access");
-                       ext3_journal_get_write_access(handle, bh);
+                       err = ext3_journal_get_write_access(handle, bh);
+                       if (err)
+                               goto journal_error;
+
                        if (pde)
                                pde->rec_len = ext3_rec_len_to_disk(
                                        ext3_rec_len_from_disk(pde->rec_len) +
@@ -1654,7 +1659,12 @@ static int ext3_delete_entry (handle_t *handle,
                                de->inode = 0;
                        dir->i_version++;
                        BUFFER_TRACE(bh, "call ext3_journal_dirty_metadata");
-                       ext3_journal_dirty_metadata(handle, bh);
+                       err = ext3_journal_dirty_metadata(handle, bh);
+                       if (err) {
+journal_error:
+                               ext3_std_error(dir->i_sb, err);
+                               return err;
+                       }
                        return 0;
                }
                i += ext3_rec_len_from_disk(de->rec_len);