Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6a659cd0 authored by Jiri Pirko's avatar Jiri Pirko Committed by David S. Miller
Browse files

net_sched: cls_flow: remove faulty use of list_for_each_entry_rcu



rcu variant is not correct here. The code is called by updater (rtnl
lock is held), not by reader (no rcu_read_lock is held).

Signed-off-by: default avatarJiri Pirko <jiri@resnulli.us>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 3fe6b49e
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -578,7 +578,7 @@ static unsigned long flow_get(struct tcf_proto *tp, u32 handle)
	struct flow_head *head = rtnl_dereference(tp->root);
	struct flow_head *head = rtnl_dereference(tp->root);
	struct flow_filter *f;
	struct flow_filter *f;


	list_for_each_entry_rcu(f, &head->filters, list)
	list_for_each_entry(f, &head->filters, list)
		if (f->handle == handle)
		if (f->handle == handle)
			return (unsigned long)f;
			return (unsigned long)f;
	return 0;
	return 0;
@@ -654,7 +654,7 @@ static void flow_walk(struct tcf_proto *tp, struct tcf_walker *arg)
	struct flow_head *head = rtnl_dereference(tp->root);
	struct flow_head *head = rtnl_dereference(tp->root);
	struct flow_filter *f;
	struct flow_filter *f;


	list_for_each_entry_rcu(f, &head->filters, list) {
	list_for_each_entry(f, &head->filters, list) {
		if (arg->count < arg->skip)
		if (arg->count < arg->skip)
			goto skip;
			goto skip;
		if (arg->fn(tp, (unsigned long)f, arg) < 0) {
		if (arg->fn(tp, (unsigned long)f, arg) < 0) {