On 2018-10-08 9:21 p.m., Stephen Rothwell wrote:
Hi all, Today's linux-next merge of the net-next tree got a conflict in: net/sched/cls_u32.c between commit: 6d4c407744dd ("net: sched: cls_u32: fix hnode refcounting") from the net tree and commit: a030598690c6 ("net: sched: cls_u32: simplify the hell out u32_delete() emptiness check") from the net-next tree. I fixed it up (I reverted the net tree commit as I could not tell wich parts of it, if any, are still needed) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts.
Attached should fix it. Al, please double check. cheers, jamal
--- a/net-next/net/sched/cls_u32.c 2018-10-09 05:18:04.046642676 -0400 +++ b/net/sched/cls_u32.c 2018-10-09 05:29:51.965528032 -0400 @@ -391,6 +391,7 @@ 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 @@ 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 @@ 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 @@ } 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"); @@ -1079,8 +1079,7 @@ } #endif - err = u32_set_parms(net, tp, base, n, tb, tca[TCA_RATE], ovr, - extack); + err = u32_set_parms(net, tp, base, n, tb, tca[TCA_RATE], ovr, extack); if (err == 0) { struct tc_u_knode __rcu **ins; struct tc_u_knode *pins;