Loading fs/overlayfs/readdir.c +5 −7 Original line number Original line Diff line number Diff line Loading @@ -38,7 +38,7 @@ struct ovl_readdir_data { bool is_merge; bool is_merge; struct rb_root root; struct rb_root root; struct list_head *list; struct list_head *list; struct list_head *middle; struct list_head middle; int count; int count; int err; int err; }; }; Loading Loading @@ -139,13 +139,13 @@ static int ovl_fill_lower(struct ovl_readdir_data *rdd, p = ovl_cache_entry_find(&rdd->root, name, namelen); p = ovl_cache_entry_find(&rdd->root, name, namelen); if (p) { if (p) { list_move_tail(&p->l_node, rdd->middle); list_move_tail(&p->l_node, &rdd->middle); } else { } else { p = ovl_cache_entry_new(name, namelen, ino, d_type); p = ovl_cache_entry_new(name, namelen, ino, d_type); if (p == NULL) if (p == NULL) rdd->err = -ENOMEM; rdd->err = -ENOMEM; else else list_add_tail(&p->l_node, rdd->middle); list_add_tail(&p->l_node, &rdd->middle); } } return rdd->err; return rdd->err; Loading Loading @@ -277,7 +277,6 @@ static inline int ovl_dir_read_merged(struct path *upperpath, struct list_head *list) struct list_head *list) { { int err; int err; struct list_head middle; struct ovl_readdir_data rdd = { struct ovl_readdir_data rdd = { .ctx.actor = ovl_fill_merge, .ctx.actor = ovl_fill_merge, .list = list, .list = list, Loading @@ -301,11 +300,10 @@ static inline int ovl_dir_read_merged(struct path *upperpath, * Insert lowerpath entries before upperpath ones, this allows * Insert lowerpath entries before upperpath ones, this allows * offsets to be reasonably constant * offsets to be reasonably constant */ */ list_add(&middle, rdd.list); list_add(&rdd.middle, rdd.list); rdd.middle = &middle; rdd.is_merge = true; rdd.is_merge = true; err = ovl_dir_read(lowerpath, &rdd); err = ovl_dir_read(lowerpath, &rdd); list_del(&middle); list_del(&rdd.middle); } } out: out: return err; return err; Loading Loading
fs/overlayfs/readdir.c +5 −7 Original line number Original line Diff line number Diff line Loading @@ -38,7 +38,7 @@ struct ovl_readdir_data { bool is_merge; bool is_merge; struct rb_root root; struct rb_root root; struct list_head *list; struct list_head *list; struct list_head *middle; struct list_head middle; int count; int count; int err; int err; }; }; Loading Loading @@ -139,13 +139,13 @@ static int ovl_fill_lower(struct ovl_readdir_data *rdd, p = ovl_cache_entry_find(&rdd->root, name, namelen); p = ovl_cache_entry_find(&rdd->root, name, namelen); if (p) { if (p) { list_move_tail(&p->l_node, rdd->middle); list_move_tail(&p->l_node, &rdd->middle); } else { } else { p = ovl_cache_entry_new(name, namelen, ino, d_type); p = ovl_cache_entry_new(name, namelen, ino, d_type); if (p == NULL) if (p == NULL) rdd->err = -ENOMEM; rdd->err = -ENOMEM; else else list_add_tail(&p->l_node, rdd->middle); list_add_tail(&p->l_node, &rdd->middle); } } return rdd->err; return rdd->err; Loading Loading @@ -277,7 +277,6 @@ static inline int ovl_dir_read_merged(struct path *upperpath, struct list_head *list) struct list_head *list) { { int err; int err; struct list_head middle; struct ovl_readdir_data rdd = { struct ovl_readdir_data rdd = { .ctx.actor = ovl_fill_merge, .ctx.actor = ovl_fill_merge, .list = list, .list = list, Loading @@ -301,11 +300,10 @@ static inline int ovl_dir_read_merged(struct path *upperpath, * Insert lowerpath entries before upperpath ones, this allows * Insert lowerpath entries before upperpath ones, this allows * offsets to be reasonably constant * offsets to be reasonably constant */ */ list_add(&middle, rdd.list); list_add(&rdd.middle, rdd.list); rdd.middle = &middle; rdd.is_merge = true; rdd.is_merge = true; err = ovl_dir_read(lowerpath, &rdd); err = ovl_dir_read(lowerpath, &rdd); list_del(&middle); list_del(&rdd.middle); } } out: out: return err; return err; Loading