+18
−16
Loading
Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more
Current flower mask creating code assumes that temporary mask that is used when inserting new filter is stack allocated. To prevent race condition with data patch synchronize_rcu() is called every time fl_create_new_mask() replaces temporary stack allocated mask. As reported by Jiri, this increases runtime of creating 20000 flower classifiers from 4 seconds to 163 seconds. However, this design is no longer necessary since temporary mask was converted to be dynamically allocated by commit 2cddd201 ("net/sched: cls_flower: allocate mask dynamically in fl_change()"). Remove synchronize_rcu() calls from mask creation code. Instead, refactor fl_change() to always deallocate temporary mask with rcu grace period. Fixes: 195c234d ("net: sched: flower: handle concurrent mask insertion") Reported-by:Jiri Pirko <jiri@mellanox.com> Signed-off-by:
Vlad Buslov <vladbu@mellanox.com> Tested-by:
Jiri Pirko <jiri@mellanox.com> Acked-by:
Jiri Pirko <jiri@mellanox.com> Signed-off-by:
David S. Miller <davem@davemloft.net>