Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts were easy to resolve using immediate context mostly, except the cls_u32.c one where I simply too the entire HEAD chunk. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -391,6 +391,7 @@ static int u32_init(struct tcf_proto *tp)
|
||||
RCU_INIT_POINTER(root_ht->next, tp_c->hlist);
|
||||
rcu_assign_pointer(tp_c->hlist, root_ht);
|
||||
|
||||
root_ht->refcnt++;
|
||||
rcu_assign_pointer(tp->root, root_ht);
|
||||
tp->data = tp_c;
|
||||
return 0;
|
||||
@@ -606,7 +607,7 @@ static int u32_destroy_hnode(struct tcf_proto *tp, struct tc_u_hnode *ht,
|
||||
struct tc_u_hnode __rcu **hn;
|
||||
struct tc_u_hnode *phn;
|
||||
|
||||
WARN_ON(ht->refcnt);
|
||||
WARN_ON(--ht->refcnt);
|
||||
|
||||
u32_clear_hnode(tp, ht, extack);
|
||||
|
||||
@@ -634,7 +635,7 @@ static void u32_destroy(struct tcf_proto *tp, struct netlink_ext_ack *extack)
|
||||
|
||||
WARN_ON(root_ht == NULL);
|
||||
|
||||
if (root_ht && --root_ht->refcnt == 0)
|
||||
if (root_ht && --root_ht->refcnt == 1)
|
||||
u32_destroy_hnode(tp, root_ht, extack);
|
||||
|
||||
if (--tp_c->refcnt == 0) {
|
||||
@@ -679,7 +680,6 @@ static int u32_delete(struct tcf_proto *tp, void *arg, bool *last,
|
||||
}
|
||||
|
||||
if (ht->refcnt == 1) {
|
||||
ht->refcnt--;
|
||||
u32_destroy_hnode(tp, ht, extack);
|
||||
} else {
|
||||
NL_SET_ERR_MSG_MOD(extack, "Can not delete in-use filter");
|
||||
|
Reference in New Issue
Block a user