Subject: Re: size overflow in function qdisc_tree_decrease_qlen net/sched/sch_api.c

From: Daniele Fucini <[email-masked]>
Date: Tue, 1 Dec 2015 20:13:28 +0100

I can't be 100% sure but after running transmission for over an hour
without any problems I'd say this fix worked. I'll keep it running for a
while so if it suddently freezes again I'll report it, but I hope it
won't be the case.

Daniele

On Tue, Dec 01, 2015 at 06:15:37AM -0800, Eric Dumazet wrote:
> 
> Please try following fix :
> 
> diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c
> index f43c8f33f09e..72f2c1dfdcde 100644
> --- a/net/sched/sch_api.c
> +++ b/net/sched/sch_api.c
> @@ -759,6 +759,8 @@ void qdisc_tree_decrease_qlen(struct Qdisc *sch, unsigned int n)
>  			WARN_ON(parentid != TC_H_ROOT);
>  			return;
>  		}
> +		if (sch->flags & TCQ_F_MQROOT)
> +			return;
>  		cops = sch->ops->cl_ops;
>  		if (cops->qlen_notify) {
>  			cl = cops->get(sch, parentid);
> 
> 
>