• J
    net: sched: drop qdisc_reset from dev_graft_qdisc · 7bbde83b
    John Fastabend 提交于
    In qdisc_graft_qdisc a "new" qdisc is attached and the 'qdisc_destroy'
    operation is called on the old qdisc. The destroy operation will wait
    a rcu grace period and call qdisc_rcu_free(). At which point
    gso_cpu_skb is free'd along with all stats so no need to zero stats
    and gso_cpu_skb from the graft operation itself.
    
    Further after dropping the qdisc locks we can not continue to call
    qdisc_reset before waiting an rcu grace period so that the qdisc is
    detached from all cpus. By removing the qdisc_reset() here we get
    the correct property of waiting an rcu grace period and letting the
    qdisc_destroy operation clean up the qdisc correctly.
    
    Note, a refcnt greater than 1 would cause the destroy operation to
    be aborted however if this ever happened the reference to the qdisc
    would be lost and we would have a memory leak.
    Signed-off-by: NJohn Fastabend <john.fastabend@gmail.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    7bbde83b
sch_generic.c 27.5 KB