|
@@ -867,18 +867,15 @@ static int f2fs_readdir(struct file *file, struct dir_context *ctx)
|
|
|
|
|
|
make_dentry_ptr(inode, &d, (void *)dentry_blk, 1);
|
|
|
|
|
|
- if (f2fs_fill_dentries(ctx, &d, n * NR_DENTRY_IN_BLOCK, &fstr))
|
|
|
- goto stop;
|
|
|
+ if (f2fs_fill_dentries(ctx, &d, n * NR_DENTRY_IN_BLOCK, &fstr)) {
|
|
|
+ kunmap(dentry_page);
|
|
|
+ f2fs_put_page(dentry_page, 1);
|
|
|
+ break;
|
|
|
+ }
|
|
|
|
|
|
ctx->pos = (n + 1) * NR_DENTRY_IN_BLOCK;
|
|
|
kunmap(dentry_page);
|
|
|
f2fs_put_page(dentry_page, 1);
|
|
|
- dentry_page = NULL;
|
|
|
- }
|
|
|
-stop:
|
|
|
- if (dentry_page && !IS_ERR(dentry_page)) {
|
|
|
- kunmap(dentry_page);
|
|
|
- f2fs_put_page(dentry_page, 1);
|
|
|
}
|
|
|
out:
|
|
|
f2fs_fname_crypto_free_buffer(&fstr);
|