forked from Minki/linux
devres: Use list_for_each_safe_from() in remove_nodes()
The remove_nodes() open codes the list_for_each_safe_from(). Replace it by a generic macro. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Link: https://lore.kernel.org/r/20210517122946.53161-2-andriy.shevchenko@linux.intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
bbc8f3e79e
commit
c3cd0ff7aa
@ -438,20 +438,16 @@ static int remove_nodes(struct device *dev,
|
||||
struct list_head *first, struct list_head *end,
|
||||
struct list_head *todo)
|
||||
{
|
||||
struct devres_node *node, *n;
|
||||
int cnt = 0, nr_groups = 0;
|
||||
struct list_head *cur;
|
||||
|
||||
/* First pass - move normal devres entries to @todo and clear
|
||||
* devres_group colors.
|
||||
*/
|
||||
cur = first;
|
||||
while (cur != end) {
|
||||
struct devres_node *node;
|
||||
node = list_entry(first, struct devres_node, entry);
|
||||
list_for_each_entry_safe_from(node, n, end, entry) {
|
||||
struct devres_group *grp;
|
||||
|
||||
node = list_entry(cur, struct devres_node, entry);
|
||||
cur = cur->next;
|
||||
|
||||
grp = node_to_group(node);
|
||||
if (grp) {
|
||||
/* clear color of group markers in the first pass */
|
||||
@ -471,18 +467,14 @@ static int remove_nodes(struct device *dev,
|
||||
|
||||
/* Second pass - Scan groups and color them. A group gets
|
||||
* color value of two iff the group is wholly contained in
|
||||
* [cur, end). That is, for a closed group, both opening and
|
||||
* closing markers should be in the range, while just the
|
||||
* [current node, end). That is, for a closed group, both opening
|
||||
* and closing markers should be in the range, while just the
|
||||
* opening marker is enough for an open group.
|
||||
*/
|
||||
cur = first;
|
||||
while (cur != end) {
|
||||
struct devres_node *node;
|
||||
node = list_entry(first, struct devres_node, entry);
|
||||
list_for_each_entry_safe_from(node, n, end, entry) {
|
||||
struct devres_group *grp;
|
||||
|
||||
node = list_entry(cur, struct devres_node, entry);
|
||||
cur = cur->next;
|
||||
|
||||
grp = node_to_group(node);
|
||||
BUG_ON(!grp || list_empty(&grp->node[0].entry));
|
||||
|
||||
@ -492,7 +484,7 @@ static int remove_nodes(struct device *dev,
|
||||
|
||||
BUG_ON(grp->color <= 0 || grp->color > 2);
|
||||
if (grp->color == 2) {
|
||||
/* No need to update cur or end. The removed
|
||||
/* No need to update current node or end. The removed
|
||||
* nodes are always before both.
|
||||
*/
|
||||
list_move_tail(&grp->node[0].entry, todo);
|
||||
|
Loading…
Reference in New Issue
Block a user