From owner-freebsd-current Sat Apr 13 23:28:54 2002 Delivered-To: freebsd-current@freebsd.org Received: from smtp-send.myrealbox.com (smtp-send.myrealbox.com [192.108.102.143]) by hub.freebsd.org (Postfix) with ESMTP id BA0EA37B404; Sat, 13 Apr 2002 23:28:48 -0700 (PDT) Received: from localhost qhwt@smtp-send.myrealbox.com [61.198.168.55] by smtp-send.myrealbox.com with Novell NIMS $Revision: 2.88.1.1 $ on Novell NetWare; Sun, 14 Apr 2002 00:28:43 -0600 Date: Sun, 14 Apr 2002 15:29:28 +0900 From: qhwt@myrealbox.com To: brian@FreeBSD.org Cc: current@freebsd.org Subject: Re: cvs commit: src/usr.sbin/ppp Makefile async.c async.h atm.c bundle.c ccp.c ccp.h chap.c chap.h chat.c command.c datalink.c datalink.h defs.c defs.h ether.c exec.c i4b.c lcp.c lcp.h main.c mppe.c netgraph.c netgraph.h physical.c physical.h route.c tcp.c ... Message-ID: <20020414062928.GA378.qhwt@myrealbox.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="azLHFNyN32YCQGCU" Content-Disposition: inline In-Reply-To: <200203301230.g2UCUBK41067@freefall.freebsd.org> User-Agent: Mutt/1.5.0i X-Dispatcher: imput version 20000228(IM140) Lines: 107 Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG --azLHFNyN32YCQGCU Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hello. > brian 2002/03/30 04:30:11 PST > Modified files: > usr.sbin/ppp Makefile async.c async.h atm.c bundle.c > ccp.c ccp.h chap.c chap.h chat.c > command.c datalink.c datalink.h defs.c > defs.h ether.c exec.c i4b.c lcp.c lcp.h > main.c mppe.c physical.c physical.h > route.c tcp.c tty.c udp.c : > 1.126 +13 -17 src/usr.sbin/ppp/bundle.c In the 6th chunk, a decrement to bundle.unit after succeeding ID0kldload() is lost. This results in the unit number of tun device set to 1(tun1) instead of 0(tun0) when if_tun.ko is not yet kldload'ed() before ppp is invoked. If I exit from ppp and start it again, ppp uses tun0, leaving tun1 behind. After that and receiving a few megabytes, I've experienced a mysterious panic (getnewvnode: free vnode isn't). The panic itself, though, is something similar to that I'm always seeing whenever I didn't kill pccardd before doing acpiconf -s3, so it might be unrelated to this issue. Anyway, a patch is attached. Regards. --azLHFNyN32YCQGCU Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="ppp.diff" Index: usr.sbin/ppp/bundle.c =================================================================== RCS file: /home/cvs/freebsd/src/usr.sbin/ppp/bundle.c,v retrieving revision 1.127 diff -u -r1.127 bundle.c --- usr.sbin/ppp/bundle.c 30 Mar 2002 12:52:55 -0000 1.127 +++ usr.sbin/ppp/bundle.c 14 Apr 2002 05:46:37 -0000 @@ -711,7 +711,8 @@ * Attempt to load the tunnel interface KLD if it isn't loaded * already. */ - loadmodules(LOAD_VERBOSLY, "if_tun", NULL); + if (loadmodules(LOAD_VERBOSLY, "if_tun", NULL) > 0) + bundle.unit--; continue; } #endif Index: usr.sbin/ppp/defs.c =================================================================== RCS file: /home/cvs/freebsd/src/usr.sbin/ppp/defs.c,v retrieving revision 1.45 diff -u -r1.45 defs.c --- usr.sbin/ppp/defs.c 30 Mar 2002 12:30:09 -0000 1.45 +++ usr.sbin/ppp/defs.c 14 Apr 2002 05:46:13 -0000 @@ -420,19 +420,26 @@ } } -void +/* return: number of modules kldload'ed */ +int loadmodules(int how, const char *module, ...) { #if defined(__FreeBSD__) && !defined(NOKLDLOAD) va_list ap; + int loaded = 0; va_start(ap, module); while (module != NULL) { - if (modfind(module) == -1 && ID0kldload(module) == -1 && - how == LOAD_VERBOSLY) - log_Printf(LogWARN, "%s: Cannot load module\n", module); + if (modfind(module) == -1) { + if (ID0kldload(module) == -1) { + if (how == LOAD_VERBOSLY) + log_Printf(LogWARN, "%s: Cannot load module\n", module); + } else + ++loaded; + } module = va_arg(ap, const char *); } va_end(ap); #endif + return loaded; } Index: usr.sbin/ppp/defs.h =================================================================== RCS file: /home/cvs/freebsd/src/usr.sbin/ppp/defs.h,v retrieving revision 1.65 diff -u -r1.65 defs.h --- usr.sbin/ppp/defs.h 30 Mar 2002 12:30:09 -0000 1.65 +++ usr.sbin/ppp/defs.h 14 Apr 2002 05:31:00 -0000 @@ -139,4 +139,4 @@ extern fd_set *mkfdset(void); extern void zerofdset(fd_set *); extern void Concatinate(char *, size_t, int, const char *const *); -extern void loadmodules(int, const char *, ...); +extern int loadmodules(int, const char *, ...); --azLHFNyN32YCQGCU-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message