Messages in this thread Patch in this message | | | From | Ma Ke <> | Subject | [PATCH] net: sched: drr: dont intepret cls results when asked to drop | Date | Fri, 15 Sep 2023 22:20:56 +0800 |
| |
If asked to drop a packet via TC_ACT_SHOT it is unsafe to assume that res.class contains a valid pointer.
Signed-off-by: Ma Ke <make_ruc2021@163.com> --- net/sched/sch_drr.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/net/sched/sch_drr.c b/net/sched/sch_drr.c index 19901e77cd3b..a535dc3b0e05 100644 --- a/net/sched/sch_drr.c +++ b/net/sched/sch_drr.c @@ -310,6 +310,8 @@ static struct drr_class *drr_classify(struct sk_buff *skb, struct Qdisc *sch, fl = rcu_dereference_bh(q->filter_list); result = tcf_classify(skb, NULL, fl, &res, false); if (result >= 0) { + if (result == TC_ACT_SHOT) + return NULL; #ifdef CONFIG_NET_CLS_ACT switch (result) { case TC_ACT_QUEUED: @@ -317,8 +319,6 @@ static struct drr_class *drr_classify(struct sk_buff *skb, struct Qdisc *sch, case TC_ACT_TRAP: *qerr = NET_XMIT_SUCCESS | __NET_XMIT_STOLEN; fallthrough; - case TC_ACT_SHOT: - return NULL; } #endif cl = (struct drr_class *)res.class; -- 2.37.2
| |