From: Cong Wang
Date: Wed, 20 Dec 2017 23:26:24 -0800
> The rcu_barrier_bh() in mini_qdisc_pair_swap() is to wait for
> flying RCU callback installed by a previous mini_qdisc_pair_swap(),
> however we miss it on the tp_head==NULL path, which leads to that
> the RCU callback still uses miniq_old->
Thu, Dec 21, 2017 at 08:26:24AM CET, xiyou.wangc...@gmail.com wrote:
>The rcu_barrier_bh() in mini_qdisc_pair_swap() is to wait for
>flying RCU callback installed by a previous mini_qdisc_pair_swap(),
>however we miss it on the tp_head==NULL path, which leads to that
>the RCU callback still uses mi
Thu, Dec 21, 2017 at 08:01:35PM CET, xiyou.wangc...@gmail.com wrote:
>On Thu, Dec 21, 2017 at 1:03 AM, Jiri Pirko wrote:
>> Thu, Dec 21, 2017 at 08:26:24AM CET, xiyou.wangc...@gmail.com wrote:
[...]
>
>
>Seriously? It is this call_rcu still flying after we free the qdisc.
>Did you seriously look
Thu, Dec 21, 2017 at 09:54:06PM CET, xiyou.wangc...@gmail.com wrote:
>On Thu, Dec 21, 2017 at 11:01 AM, Cong Wang wrote:
>> On Thu, Dec 21, 2017 at 1:03 AM, Jiri Pirko wrote:
>>>
>>>
>>> But again, we don't we just free qdisc in call_rcu and avoid the
>>> barrier?
>>
>>
>> Non-sense again. Why qd
On Thu, Dec 21, 2017 at 11:01 AM, Cong Wang wrote:
> On Thu, Dec 21, 2017 at 1:03 AM, Jiri Pirko wrote:
>>
>>
>> But again, we don't we just free qdisc in call_rcu and avoid the
>> barrier?
>
>
> Non-sense again. Why qdisc code should be adjusted for your
> miniq code? It is your own responsibili
On Thu, Dec 21, 2017 at 1:03 AM, Jiri Pirko wrote:
> Thu, Dec 21, 2017 at 08:26:24AM CET, xiyou.wangc...@gmail.com wrote:
>>The rcu_barrier_bh() in mini_qdisc_pair_swap() is to wait for
>>flying RCU callback installed by a previous mini_qdisc_pair_swap(),
>>however we miss it on the tp_head==NULL
Thu, Dec 21, 2017 at 08:26:24AM CET, xiyou.wangc...@gmail.com wrote:
>The rcu_barrier_bh() in mini_qdisc_pair_swap() is to wait for
>flying RCU callback installed by a previous mini_qdisc_pair_swap(),
>however we miss it on the tp_head==NULL path, which leads to that
>the RCU callback still uses mi
The rcu_barrier_bh() in mini_qdisc_pair_swap() is to wait for
flying RCU callback installed by a previous mini_qdisc_pair_swap(),
however we miss it on the tp_head==NULL path, which leads to that
the RCU callback still uses miniq_old->rcu after it is freed together
with qdisc in qdisc_graft(). So j