diff options
Diffstat (limited to 'net/sched/cls_tcindex.c')
| -rw-r--r-- | net/sched/cls_tcindex.c | 6 | 
1 files changed, 5 insertions, 1 deletions
diff --git a/net/sched/cls_tcindex.c b/net/sched/cls_tcindex.c index bd49bf547a47..a557dbaf5afe 100644 --- a/net/sched/cls_tcindex.c +++ b/net/sched/cls_tcindex.c @@ -468,11 +468,14 @@ static void tcindex_walk(struct tcf_proto *tp, struct tcf_walker *walker)  	}  } -static void tcindex_destroy(struct tcf_proto *tp) +static bool tcindex_destroy(struct tcf_proto *tp, bool force)  {  	struct tcindex_data *p = rtnl_dereference(tp->root);  	struct tcf_walker walker; +	if (!force) +		return false; +  	pr_debug("tcindex_destroy(tp %p),p %p\n", tp, p);  	walker.count = 0;  	walker.skip = 0; @@ -481,6 +484,7 @@ static void tcindex_destroy(struct tcf_proto *tp)  	RCU_INIT_POINTER(tp->root, NULL);  	call_rcu(&p->rcu, __tcindex_destroy); +	return true;  }  |