diff options
-rw-r--r-- | fs/reiserfs/xattr.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/reiserfs/xattr.c b/fs/reiserfs/xattr.c index 48cdfc81fe10..32d8986c26fb 100644 --- a/fs/reiserfs/xattr.c +++ b/fs/reiserfs/xattr.c | |||
@@ -185,6 +185,7 @@ struct reiserfs_dentry_buf { | |||
185 | struct dir_context ctx; | 185 | struct dir_context ctx; |
186 | struct dentry *xadir; | 186 | struct dentry *xadir; |
187 | int count; | 187 | int count; |
188 | int err; | ||
188 | struct dentry *dentries[8]; | 189 | struct dentry *dentries[8]; |
189 | }; | 190 | }; |
190 | 191 | ||
@@ -207,6 +208,7 @@ fill_with_dentries(struct dir_context *ctx, const char *name, int namelen, | |||
207 | 208 | ||
208 | dentry = lookup_one_len(name, dbuf->xadir, namelen); | 209 | dentry = lookup_one_len(name, dbuf->xadir, namelen); |
209 | if (IS_ERR(dentry)) { | 210 | if (IS_ERR(dentry)) { |
211 | dbuf->err = PTR_ERR(dentry); | ||
210 | return PTR_ERR(dentry); | 212 | return PTR_ERR(dentry); |
211 | } else if (d_really_is_negative(dentry)) { | 213 | } else if (d_really_is_negative(dentry)) { |
212 | /* A directory entry exists, but no file? */ | 214 | /* A directory entry exists, but no file? */ |
@@ -215,6 +217,7 @@ fill_with_dentries(struct dir_context *ctx, const char *name, int namelen, | |||
215 | "not found for file %pd.\n", | 217 | "not found for file %pd.\n", |
216 | dentry, dbuf->xadir); | 218 | dentry, dbuf->xadir); |
217 | dput(dentry); | 219 | dput(dentry); |
220 | dbuf->err = -EIO; | ||
218 | return -EIO; | 221 | return -EIO; |
219 | } | 222 | } |
220 | 223 | ||
@@ -262,6 +265,10 @@ static int reiserfs_for_each_xattr(struct inode *inode, | |||
262 | err = reiserfs_readdir_inode(d_inode(dir), &buf.ctx); | 265 | err = reiserfs_readdir_inode(d_inode(dir), &buf.ctx); |
263 | if (err) | 266 | if (err) |
264 | break; | 267 | break; |
268 | if (buf.err) { | ||
269 | err = buf.err; | ||
270 | break; | ||
271 | } | ||
265 | if (!buf.count) | 272 | if (!buf.count) |
266 | break; | 273 | break; |
267 | for (i = 0; !err && i < buf.count && buf.dentries[i]; i++) { | 274 | for (i = 0; !err && i < buf.count && buf.dentries[i]; i++) { |