From 671607d3ef87c8b5f03d00f7177e20f23bb2f818 Mon Sep 17 00:00:00 2001 From: Daniel Borkmann Date: Fri, 30 Nov 2012 01:29:57 +0100 Subject: [PATCH] flowtop: first fill out entry, then link it Signed-off-by: Daniel Borkmann --- src/flowtop.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/flowtop.c b/src/flowtop.c index edcd7404..30e72b45 100644 --- a/src/flowtop.c +++ b/src/flowtop.c @@ -320,11 +320,11 @@ static void flow_list_new_entry(struct flow_list *fl, struct nf_conntrack *ct) { struct flow_entry *n = flow_entry_xalloc(); - rcu_assign_pointer(n->next, fl->head); - rcu_assign_pointer(fl->head, n); - flow_entry_from_ct(n, ct); flow_entry_get_extended(n); + + rcu_assign_pointer(n->next, fl->head); + rcu_assign_pointer(fl->head, n); } static struct flow_entry *flow_list_find_id(struct flow_list *fl, @@ -369,16 +369,16 @@ static void flow_list_update_entry(struct flow_list *fl, n = flow_list_find_id(fl, nfct_get_attr_u32(ct, ATTR_ID)); if (n == NULL) { n = flow_entry_xalloc(); - - rcu_assign_pointer(n->next, fl->head); - rcu_assign_pointer(fl->head, n); - do_ext = 1; } flow_entry_from_ct(n, ct); - if (do_ext) + if (do_ext) { flow_entry_get_extended(n); + + rcu_assign_pointer(n->next, fl->head); + rcu_assign_pointer(fl->head, n); + } } static void flow_list_destroy_entry(struct flow_list *fl, -- 2.11.4.GIT