hmm. what did this break above it? just stats? or a mem leak? or? On Wed, Aug 31, 2022 at 2:25 AM Toke Høiland-Jørgensen via Cake <cake@lists.bufferbloat.net> wrote: > > When the GSO splitting feature of sch_cake is enabled, GSO superpackets > will be broken up and the resulting segments enqueued in place of the > original skb. In this case, CAKE calls consume_skb() on the original skb, > but still returns NET_XMIT_SUCCESS. This can confuse parent qdiscs into > assuming the original skb still exists, when it really has been freed. Fix > this by adding the __NET_XMIT_STOLEN flag to the return value in this case. > > Fixes: 0c850344d388 ("sch_cake: Conditionally split GSO segments") > Signed-off-by: Toke Høiland-Jørgensen <t...@toke.dk> > --- > net/sched/sch_cake.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/net/sched/sch_cake.c b/net/sched/sch_cake.c > index a43a58a73d09..a04928082e4a 100644 > --- a/net/sched/sch_cake.c > +++ b/net/sched/sch_cake.c > @@ -1713,6 +1713,7 @@ static s32 cake_enqueue(struct sk_buff *skb, struct > Qdisc *sch, > } > idx--; > flow = &b->flows[idx]; > + ret = NET_XMIT_SUCCESS; > > /* ensure shaper state isn't stale */ > if (!b->tin_backlog) { > @@ -1771,6 +1772,7 @@ static s32 cake_enqueue(struct sk_buff *skb, struct > Qdisc *sch, > > qdisc_tree_reduce_backlog(sch, 1-numsegs, len-slen); > consume_skb(skb); > + ret |= __NET_XMIT_STOLEN; > } else { > /* not splitting */ > cobalt_set_enqueue_time(skb, now); > @@ -1904,7 +1906,7 @@ static s32 cake_enqueue(struct sk_buff *skb, struct > Qdisc *sch, > } > b->drop_overlimit += dropped; > } > - return NET_XMIT_SUCCESS; > + return ret; > } > > static struct sk_buff *cake_dequeue_one(struct Qdisc *sch) > -- > 2.37.2 > > _______________________________________________ > Cake mailing list > Cake@lists.bufferbloat.net > https://lists.bufferbloat.net/listinfo/cake
-- FQ World Domination pending: https://blog.cerowrt.org/post/state_of_fq_codel/ Dave Täht CEO, TekLibre, LLC _______________________________________________ Cake mailing list Cake@lists.bufferbloat.net https://lists.bufferbloat.net/listinfo/cake