Skip to content

Commit

Permalink
netfilter: replace list_for_each_continue_rcu with new interface
Browse files Browse the repository at this point in the history
This patch replaces list_for_each_continue_rcu() with
list_for_each_entry_continue_rcu() to allow removing
list_for_each_continue_rcu().

Signed-off-by: Michael Wang <wangyun@linux.vnet.ibm.com>
Reviewed-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
  • Loading branch information
Michael Wang authored and Pablo Neira Ayuso committed Aug 22, 2012
1 parent 2834a63 commit 6705e86
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions net/netfilter/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -131,14 +131,13 @@ unsigned int nf_iterate(struct list_head *head,
int hook_thresh)
{
unsigned int verdict;
struct nf_hook_ops *elem = list_entry_rcu(*i, struct nf_hook_ops, list);

/*
* The caller must not block between calls to this
* function because of risk of continuing from deleted element.
*/
list_for_each_continue_rcu(*i, head) {
struct nf_hook_ops *elem = (struct nf_hook_ops *)*i;

list_for_each_entry_continue_rcu(elem, head, list) {
if (hook_thresh > elem->priority)
continue;

Expand All @@ -155,11 +154,14 @@ unsigned int nf_iterate(struct list_head *head,
continue;
}
#endif
if (verdict != NF_REPEAT)
if (verdict != NF_REPEAT) {
*i = &elem->list;
return verdict;
}
goto repeat;
}
}
*i = &elem->list;
return NF_ACCEPT;
}

Expand Down

0 comments on commit 6705e86

Please sign in to comment.