diff options
Diffstat (limited to 'ext2fs')
-rw-r--r-- | ext2fs/inode.c | 23 | ||||
-rw-r--r-- | ext2fs/pager.c | 13 |
2 files changed, 27 insertions, 9 deletions
diff --git a/ext2fs/inode.c b/ext2fs/inode.c index a23baee7..dc309ac8 100644 --- a/ext2fs/inode.c +++ b/ext2fs/inode.c @@ -634,7 +634,10 @@ diskfs_set_translator (struct node *np, const char *name, mach_msg_type_number_t char buf[block_size]; if (namelen + 2 > block_size) - return ENAMETOOLONG; + { + diskfs_end_catch_exception (); + return ENAMETOOLONG; + } di = dino_ref (np->cache_id); blkno = le32toh (di->i_translator); @@ -650,7 +653,10 @@ diskfs_set_translator (struct node *np, const char *name, mach_msg_type_number_t newmode = (np->dn_stat.st_mode & ~S_IFMT) | S_IFREG; err = diskfs_validate_mode_change (np, newmode); if (err) - return err; + { + diskfs_end_catch_exception (); + return err; + } } /* Allocate block for translator */ @@ -712,7 +718,10 @@ diskfs_set_translator (struct node *np, const char *name, mach_msg_type_number_t } } else - return EOPNOTSUPP; + { + diskfs_end_catch_exception (); + return EOPNOTSUPP; + } diskfs_end_catch_exception (); @@ -778,7 +787,10 @@ diskfs_get_translator (struct node *np, char **namep, mach_msg_type_number_t *na { err = ext2_get_xattr (np, "gnu.translator", NULL, &datalen); if (err) - return err; + { + diskfs_end_catch_exception (); + return err; + } *namep = malloc (datalen); if (!*namep) @@ -790,6 +802,9 @@ diskfs_get_translator (struct node *np, char **namep, mach_msg_type_number_t *na *namelen = datalen; } + else + diskfs_end_catch_exception (); + return err; } diff --git a/ext2fs/pager.c b/ext2fs/pager.c index b93a9edd..c55107a9 100644 --- a/ext2fs/pager.c +++ b/ext2fs/pager.c @@ -617,8 +617,8 @@ pager_unlock_page (struct user_pager_info *pager, vm_offset_t page) break; left -= block_size; } + diskfs_end_catch_exception (); } - diskfs_end_catch_exception (); if (partial_page) /* If an error occurred, this page still isn't writable; otherwise, @@ -711,12 +711,15 @@ diskfs_grow (struct node *node, off_t size, struct protid *cred) end_block); err = diskfs_catch_exception (); - while (!err && end_block < writable_end) + if (! err) { - block_t disk_block; - err = ext2_getblk (node, end_block++, 1, &disk_block); + while (!err && end_block < writable_end) + { + block_t disk_block; + err = ext2_getblk (node, end_block++, 1, &disk_block); + } + diskfs_end_catch_exception (); } - diskfs_end_catch_exception (); if (! err) /* Reflect how much we allocated successfully. */ |