mbox series

[net-next,v4,0/5] net: sched: Fixes for classifiers

Message ID 20230712211313.545268-1-victor@mojatatu.com (mailing list archive)
Headers show
Series net: sched: Fixes for classifiers | expand

Message

Victor Nogueira July 12, 2023, 9:13 p.m. UTC
Four different classifiers (bpf, u32, matchall, and flower) are
calling tcf_bind_filter in their callbacks, but arent't undoing it by
calling tcf_unbind_filter if their was an error after binding.

This patch set fixes all this by calling tcf_unbind_filter in such
cases.

This set also undoes a refcount decrement in cls_u32 when an update
fails under specific conditions which are described in patch #3.

v1 -> v2:
* Remove blank line after fixes tag
* Fix reverse xmas tree issues pointed out by Simon

v2 -> v3:
* Inline functions cls_bpf_set_parms and fl_set_parms to avoid adding
  yet another parameter (and a return value at it) to them.
* Remove similar fixes for u32 and matchall, which will be sent soon,
  once we find a way to do the fixes without adding a return parameter
  to their set_parms functions.

v3 -> v4:
* Inline mall_set_parms to avoid adding yet another parameter.
* Remove set_flags parameter from u32_set_parms and create a separate
  function for calling tcf_bind_filter and tcf_unbind_filter in case of
  failure.
* Change cover letter title to also encompass refcnt fix for u32

Victor Nogueira (5):
  net: sched: cls_matchall: Undo tcf_bind_filter in case of failure
    after mall_set_parms
  net: sched: cls_u32: Undo tcf_bind_filter if u32_replace_hw_knode
  net: sched: cls_u32: Undo refcount decrement in case update failed
  net: sched: cls_bpf: Undo tcf_bind_filter in case of an error
  net: sched: cls_flower: Undo tcf_bind_filter if fl_set_key fails

 net/sched/cls_bpf.c      | 106 +++++++++++++++++++--------------------
 net/sched/cls_flower.c   | 105 +++++++++++++++++++-------------------
 net/sched/cls_matchall.c |  35 +++++--------
 net/sched/cls_u32.c      |  48 ++++++++++++++----
 4 files changed, 153 insertions(+), 141 deletions(-)

Comments

Jakub Kicinski July 13, 2023, 5:25 p.m. UTC | #1
On Wed, 12 Jul 2023 18:13:08 -0300 Victor Nogueira wrote:
> Four different classifiers (bpf, u32, matchall, and flower) are
> calling tcf_bind_filter in their callbacks, but arent't undoing it by
> calling tcf_unbind_filter if their was an error after binding.
> 
> This patch set fixes all this by calling tcf_unbind_filter in such
> cases.
> 
> This set also undoes a refcount decrement in cls_u32 when an update
> fails under specific conditions which are described in patch #3.

I haven't looked the code, and probably won't have the time until 
the evening, so to save time - if these are fixes they will have to
be reposted against net, not net-next.