diff options
Diffstat (limited to 'fs/hfsplus/dir.c')
-rw-r--r-- | fs/hfsplus/dir.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/fs/hfsplus/dir.c b/fs/hfsplus/dir.c index 610a3260bef1..435bea231cc6 100644 --- a/fs/hfsplus/dir.c +++ b/fs/hfsplus/dir.c | |||
@@ -44,7 +44,10 @@ static struct dentry *hfsplus_lookup(struct inode *dir, struct dentry *dentry, | |||
44 | err = hfs_find_init(HFSPLUS_SB(sb)->cat_tree, &fd); | 44 | err = hfs_find_init(HFSPLUS_SB(sb)->cat_tree, &fd); |
45 | if (err) | 45 | if (err) |
46 | return ERR_PTR(err); | 46 | return ERR_PTR(err); |
47 | hfsplus_cat_build_key(sb, fd.search_key, dir->i_ino, &dentry->d_name); | 47 | err = hfsplus_cat_build_key(sb, fd.search_key, dir->i_ino, |
48 | &dentry->d_name); | ||
49 | if (unlikely(err < 0)) | ||
50 | goto fail; | ||
48 | again: | 51 | again: |
49 | err = hfs_brec_read(&fd, &entry, sizeof(entry)); | 52 | err = hfs_brec_read(&fd, &entry, sizeof(entry)); |
50 | if (err) { | 53 | if (err) { |
@@ -97,9 +100,11 @@ again: | |||
97 | be32_to_cpu(entry.file.permissions.dev); | 100 | be32_to_cpu(entry.file.permissions.dev); |
98 | str.len = sprintf(name, "iNode%d", linkid); | 101 | str.len = sprintf(name, "iNode%d", linkid); |
99 | str.name = name; | 102 | str.name = name; |
100 | hfsplus_cat_build_key(sb, fd.search_key, | 103 | err = hfsplus_cat_build_key(sb, fd.search_key, |
101 | HFSPLUS_SB(sb)->hidden_dir->i_ino, | 104 | HFSPLUS_SB(sb)->hidden_dir->i_ino, |
102 | &str); | 105 | &str); |
106 | if (unlikely(err < 0)) | ||
107 | goto fail; | ||
103 | goto again; | 108 | goto again; |
104 | } | 109 | } |
105 | } else if (!dentry->d_fsdata) | 110 | } else if (!dentry->d_fsdata) |
@@ -145,7 +150,7 @@ static int hfsplus_readdir(struct file *file, struct dir_context *ctx) | |||
145 | err = -ENOMEM; | 150 | err = -ENOMEM; |
146 | goto out; | 151 | goto out; |
147 | } | 152 | } |
148 | hfsplus_cat_build_key(sb, fd.search_key, inode->i_ino, NULL); | 153 | hfsplus_cat_build_key_with_cnid(sb, fd.search_key, inode->i_ino); |
149 | err = hfs_brec_find(&fd, hfs_find_rec_by_key); | 154 | err = hfs_brec_find(&fd, hfs_find_rec_by_key); |
150 | if (err) | 155 | if (err) |
151 | goto out; | 156 | goto out; |