DF-3386 / fix.diff
--- a/sys/net/altq/altq_cbq.c +++ b/sys/net/altq/altq_cbq.c @@ -190,6 +190,7 @@ static void get_class_stats(class_stats_t *statsp, struct rm_class *cl) { + statsp->handle = cl->stats_.handle; statsp->xmit_cnt = cl->stats_.xmit_cnt; statsp->drop_cnt = cl->stats_.drop_cnt; statsp->over = cl->stats_.over; @@ -477,6 +478,9 @@ if (*nbytes < sizeof(stats)) return (EINVAL); + /* red[3] is only filled for RED/RIO queues; do not leak stack */ + bzero(&stats, sizeof(stats)); + ifnet_lock(); /* XXX not MP safe */ |