From: Cong Wang
Date: Thu, 21 Dec 2017 16:03:29 -0800
> qdisc_reset() should always be called with qdisc spinlock
> and with BH disabled, otherwise qdisc ->reset() could race
> with TX BH.
>
> Fixes: 7bbde83b1860 ("net: sched: drop qdisc_reset from dev_graft_qdisc")
> Reported-by: Jakub Kicinski
On Thu, Dec 21, 2017 at 7:36 PM, John Fastabend
wrote:
> On 12/21/2017 04:03 PM, Cong Wang wrote:
>> qdisc_reset() should always be called with qdisc spinlock
>> and with BH disabled, otherwise qdisc ->reset() could race
>> with TX BH.
>>
> hmm I don't see how this fixes the issue. pfifo_fast is n
On Thu, 21 Dec 2017 19:36:51 -0800, John Fastabend wrote:
> diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
> index ab497ef..720829e 100644
> --- a/net/sched/sch_generic.c
> +++ b/net/sched/sch_generic.c
> @@ -1071,7 +1071,8 @@ static bool some_qdisc_is_busy(struct net_device *dev)
>
On 12/21/2017 04:03 PM, Cong Wang wrote:
> qdisc_reset() should always be called with qdisc spinlock
> and with BH disabled, otherwise qdisc ->reset() could race
> with TX BH.
>
hmm I don't see how this fixes the issue. pfifo_fast is no longer
using the qdisc lock so that doesn't help. And it is
qdisc_reset() should always be called with qdisc spinlock
and with BH disabled, otherwise qdisc ->reset() could race
with TX BH.
Fixes: 7bbde83b1860 ("net: sched: drop qdisc_reset from dev_graft_qdisc")
Reported-by: Jakub Kicinski
Cc: John Fastabend
Signed-off-by: Cong Wang
---
net/sched/sch_g