diff options
Diffstat (limited to 'fs/ext4/dir.c')
| -rw-r--r-- | fs/ext4/dir.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/fs/ext4/dir.c b/fs/ext4/dir.c index 2bf0331ea194..d3d23d73c08b 100644 --- a/fs/ext4/dir.c +++ b/fs/ext4/dir.c | |||
| @@ -129,7 +129,8 @@ static int ext4_readdir(struct file * filp, | |||
| 129 | struct buffer_head *bh = NULL; | 129 | struct buffer_head *bh = NULL; |
| 130 | 130 | ||
| 131 | map_bh.b_state = 0; | 131 | map_bh.b_state = 0; |
| 132 | err = ext4_get_blocks_wrap(NULL, inode, blk, 1, &map_bh, 0, 0); | 132 | err = ext4_get_blocks_wrap(NULL, inode, blk, 1, &map_bh, |
| 133 | 0, 0, 0); | ||
| 133 | if (err > 0) { | 134 | if (err > 0) { |
| 134 | pgoff_t index = map_bh.b_blocknr >> | 135 | pgoff_t index = map_bh.b_blocknr >> |
| 135 | (PAGE_CACHE_SHIFT - inode->i_blkbits); | 136 | (PAGE_CACHE_SHIFT - inode->i_blkbits); |
| @@ -272,7 +273,7 @@ static void free_rb_tree_fname(struct rb_root *root) | |||
| 272 | 273 | ||
| 273 | while (n) { | 274 | while (n) { |
| 274 | /* Do the node's children first */ | 275 | /* Do the node's children first */ |
| 275 | if ((n)->rb_left) { | 276 | if (n->rb_left) { |
| 276 | n = n->rb_left; | 277 | n = n->rb_left; |
| 277 | continue; | 278 | continue; |
| 278 | } | 279 | } |
| @@ -301,24 +302,18 @@ static void free_rb_tree_fname(struct rb_root *root) | |||
| 301 | parent->rb_right = NULL; | 302 | parent->rb_right = NULL; |
| 302 | n = parent; | 303 | n = parent; |
| 303 | } | 304 | } |
| 304 | root->rb_node = NULL; | ||
| 305 | } | 305 | } |
| 306 | 306 | ||
| 307 | 307 | ||
| 308 | static struct dir_private_info *create_dir_info(loff_t pos) | 308 | static struct dir_private_info *ext4_htree_create_dir_info(loff_t pos) |
| 309 | { | 309 | { |
| 310 | struct dir_private_info *p; | 310 | struct dir_private_info *p; |
| 311 | 311 | ||
| 312 | p = kmalloc(sizeof(struct dir_private_info), GFP_KERNEL); | 312 | p = kzalloc(sizeof(struct dir_private_info), GFP_KERNEL); |
| 313 | if (!p) | 313 | if (!p) |
| 314 | return NULL; | 314 | return NULL; |
| 315 | p->root.rb_node = NULL; | ||
| 316 | p->curr_node = NULL; | ||
| 317 | p->extra_fname = NULL; | ||
| 318 | p->last_pos = 0; | ||
| 319 | p->curr_hash = pos2maj_hash(pos); | 315 | p->curr_hash = pos2maj_hash(pos); |
| 320 | p->curr_minor_hash = pos2min_hash(pos); | 316 | p->curr_minor_hash = pos2min_hash(pos); |
| 321 | p->next_hash = 0; | ||
| 322 | return p; | 317 | return p; |
| 323 | } | 318 | } |
| 324 | 319 | ||
| @@ -433,7 +428,7 @@ static int ext4_dx_readdir(struct file * filp, | |||
| 433 | int ret; | 428 | int ret; |
| 434 | 429 | ||
| 435 | if (!info) { | 430 | if (!info) { |
| 436 | info = create_dir_info(filp->f_pos); | 431 | info = ext4_htree_create_dir_info(filp->f_pos); |
| 437 | if (!info) | 432 | if (!info) |
| 438 | return -ENOMEM; | 433 | return -ENOMEM; |
| 439 | filp->private_data = info; | 434 | filp->private_data = info; |
