chengshan / rpms / kernel

Forked from rpms/kernel 2 years ago
Clone
e293be
centosplus kernel patch [bug#14413]
e293be
e293be
commit 35b42da69e35536da603a50e40aa6c41b2f7b0f8
e293be
Author: Cong Wang <xiyou.wangcong@gmail.com>
e293be
Date:   Fri Jun 22 14:33:16 2018 -0700
e293be
e293be
    net_sched: remove a bogus warning in hfsc
e293be
    
e293be
    In update_vf():
e293be
    
e293be
      cftree_remove(cl);
e293be
      update_cfmin(cl->cl_parent);
e293be
    
e293be
    the cl_cfmin of cl->cl_parent is intentionally updated to 0
e293be
    when that parent only has one child. And if this parent is
e293be
    root qdisc, we could end up, in hfsc_schedule_watchdog(),
e293be
    that we can't decide the next schedule time for qdisc watchdog.
e293be
    But it seems safe that we can just skip it, as this watchdog is
e293be
    not always scheduled anyway.
e293be
    
e293be
    Thanks to Marco for testing all the cases, nothing is broken.
e293be
    
e293be
    Reported-by: Marco Berizzi <pupilla@libero.it>
e293be
    Tested-by: Marco Berizzi <pupilla@libero.it>
e293be
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
e293be
    Signed-off-by: David S. Miller <davem@davemloft.net>
e293be
e293be
Applied-by: Akemi Yagi <toracat@centos.org>
e293be
e293be
e293be
--- a/net/sched/sch_hfsc.c	2018-06-15 13:57:32.000000000 -0700
e293be
+++ b/net/sched/sch_hfsc.c	2018-07-14 10:42:59.460218077 -0700
e293be
@@ -1382,8 +1382,8 @@ hfsc_schedule_watchdog(struct Qdisc *sch
e293be
 		if (next_time == 0 || next_time > q->root.cl_cfmin)
e293be
 			next_time = q->root.cl_cfmin;
e293be
 	}
e293be
-	WARN_ON(next_time == 0);
e293be
-	qdisc_watchdog_schedule(&q->watchdog, next_time);
e293be
+	if (next_time)
e293be
+		qdisc_watchdog_schedule(&q->watchdog, next_time);
e293be
 }
e293be
 
e293be
 static int