udf: check if udf_load_logicalvol failed
Marcin Slusarz [Fri, 8 Feb 2008 12:20:33 +0000 (04:20 -0800)]
udf_load_logicalvol may fail eg in out of memory conditions - check it
and propagate error further

Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
Cc: Ben Fennema <bfennema@falcon.csc.calpoly.edu>
Acked-by: Jan Kara <jack@suse.cz>
Cc: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

fs/udf/super.c

index 4d1e197..913ece8 100644 (file)
@@ -1263,7 +1263,10 @@ static int udf_process_sequence(struct super_block *sb, long block,
                        if (i == VDS_POS_PRIMARY_VOL_DESC) {
                                udf_load_pvoldesc(sb, bh);
                        } else if (i == VDS_POS_LOGICAL_VOL_DESC) {
-                               udf_load_logicalvol(sb, bh, fileset); /* TODO: check return value */
+                               if (udf_load_logicalvol(sb, bh, fileset)) {
+                                       brelse(bh);
+                                       return 1;
+                               }
                        } else if (i == VDS_POS_PARTITION_DESC) {
                                struct buffer_head *bh2 = NULL;
                                if (udf_load_partdesc(sb, bh)) {