Module Name: src Committed By: mlelstv Date: Sun Nov 24 13:13:13 UTC 2013
Modified Files: src/usr.bin/systat: netstat.c src/usr.sbin/pstat: pstat.c Log Message: Fix fallout from circleq->tailq transition. To generate a diff of this commit: cvs rdiff -u -r1.28 -r1.29 src/usr.bin/systat/netstat.c cvs rdiff -u -r1.121 -r1.122 src/usr.sbin/pstat/pstat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/systat/netstat.c diff -u src/usr.bin/systat/netstat.c:1.28 src/usr.bin/systat/netstat.c:1.29 --- src/usr.bin/systat/netstat.c:1.28 Sun Oct 22 16:43:24 2006 +++ src/usr.bin/systat/netstat.c Sun Nov 24 13:13:12 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: netstat.c,v 1.28 2006/10/22 16:43:24 christos Exp $ */ +/* $NetBSD: netstat.c,v 1.29 2013/11/24 13:13:12 mlelstv Exp $ */ /*- * Copyright (c) 1980, 1992, 1993 @@ -34,7 +34,7 @@ #if 0 static char sccsid[] = "@(#)netstat.c 8.1 (Berkeley) 6/6/93"; #endif -__RCSID("$NetBSD: netstat.c,v 1.28 2006/10/22 16:43:24 christos Exp $"); +__RCSID("$NetBSD: netstat.c,v 1.29 2013/11/24 13:13:12 mlelstv Exp $"); #endif /* not lint */ /* @@ -214,25 +214,26 @@ static void fetchnetstat4(void *off, int istcp) { struct inpcbtable pcbtable; - struct inpcb *head, *prev, *next; + struct inpcb_hdr **pprev, *next; struct netinfo *p; - struct inpcb inpcb; + struct inpcb inpcb, *inpcbp; struct socket sockb; struct tcpcb tcpcb; KREAD(off, &pcbtable, sizeof pcbtable); - prev = head = (struct inpcb *)&((struct inpcbtable *)off)->inpt_queue; - next = (struct inpcb *)pcbtable.inpt_queue.cqh_first; - while (next != head) { - KREAD(next, &inpcb, sizeof (inpcb)); - if ((struct inpcb *)inpcb.inp_queue.cqe_prev != prev) { + pprev = &((struct inpcbtable *)off)->inpt_queue.tqh_first; + next = TAILQ_FIRST(&pcbtable.inpt_queue); + while (next != TAILQ_END(&pcbtable.inpt_queue)) { + inpcbp = (struct inpcb *)next; + KREAD(inpcbp, &inpcb, sizeof (inpcb)); + if (inpcb.inp_queue.tqe_prev != pprev) { for (p = netcb.ni_forw; p != nhead; p = p->ni_forw) p->ni_seen = 1; error("Kernel state in transition"); return; } - prev = next; - next = (struct inpcb *)inpcb.inp_queue.cqe_next; + pprev = &next->inph_queue.tqe_next; + next = inpcb.inp_queue.tqe_next; if (inpcb.inp_af != AF_INET) continue; @@ -256,25 +257,26 @@ static void fetchnetstat6(void *off, int istcp) { struct inpcbtable pcbtable; - struct in6pcb *head6, *prev6, *next6; + struct inpcb_hdr **pprev, *next; struct netinfo *p; struct socket sockb; struct tcpcb tcpcb; - struct in6pcb in6pcb; + struct in6pcb in6pcb, *in6pcbp; KREAD(off, &pcbtable, sizeof pcbtable); - prev6 = head6 = (struct in6pcb *)&((struct inpcbtable *)off)->inpt_queue; - next6 = (struct in6pcb *)pcbtable.inpt_queue.cqh_first; - while (next6 != head6) { - KREAD(next6, &in6pcb, sizeof (in6pcb)); - if ((struct in6pcb *)in6pcb.in6p_queue.cqe_prev != prev6) { + pprev = &((struct inpcbtable *)off)->inpt_queue.tqh_first; + next = TAILQ_FIRST(&pcbtable.inpt_queue); + while (next != TAILQ_END(&pcbtable.inpt_queue)) { + in6pcbp = (struct in6pcb *)next; + KREAD(in6pcbp, &in6pcb, sizeof (in6pcb)); + if (in6pcb.in6p_queue.tqe_prev != pprev) { for (p = netcb.ni_forw; p != nhead; p = p->ni_forw) p->ni_seen = 1; error("Kernel state in transition"); return; } - prev6 = next6; - next6 = (struct in6pcb *)in6pcb.in6p_queue.cqe_next; + pprev = &next->inph_queue.tqe_next; + next = in6pcb.in6p_queue.tqe_next; if (in6pcb.in6p_af != AF_INET6) continue; Index: src/usr.sbin/pstat/pstat.c diff -u src/usr.sbin/pstat/pstat.c:1.121 src/usr.sbin/pstat/pstat.c:1.122 --- src/usr.sbin/pstat/pstat.c:1.121 Sat Oct 19 17:16:38 2013 +++ src/usr.sbin/pstat/pstat.c Sun Nov 24 13:13:12 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: pstat.c,v 1.121 2013/10/19 17:16:38 christos Exp $ */ +/* $NetBSD: pstat.c,v 1.122 2013/11/24 13:13:12 mlelstv Exp $ */ /*- * Copyright (c) 1980, 1991, 1993, 1994 @@ -39,7 +39,7 @@ __COPYRIGHT("@(#) Copyright (c) 1980, 19 #if 0 static char sccsid[] = "@(#)pstat.c 8.16 (Berkeley) 5/9/95"; #else -__RCSID("$NetBSD: pstat.c,v 1.121 2013/10/19 17:16:38 christos Exp $"); +__RCSID("$NetBSD: pstat.c,v 1.122 2013/11/24 13:13:12 mlelstv Exp $"); #endif #endif /* not lint */ @@ -756,8 +756,7 @@ kinfo_vnodes(int *avnodes) beg = bp; ep = bp + (numvnodes + 20) * (VPTRSZ + VNODESZ); KGET(V_MOUNTLIST, mlist); - for (mp = mlist.cqh_first;; - mp = mount.mnt_list.cqe_next) { + TAILQ_FOREACH(mp, &mlist, mnt_list) { KGET2(mp, &mount, sizeof(mount), "mount entry"); TAILQ_FOREACH(vp, &mount.mnt_vnodelist, v_mntvnodes) { KGET2(vp, &vnode, sizeof(vnode), "vnode"); @@ -769,8 +768,6 @@ kinfo_vnodes(int *avnodes) memmove(bp, &vnode, VNODESZ); bp += VNODESZ; } - if (mp == mlist.cqh_last) - break; } *avnodes = (bp - beg) / (VPTRSZ + VNODESZ); return (beg);