From owner-p4-projects@FreeBSD.ORG Mon Feb 5 18:19:59 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8417B16A403; Mon, 5 Feb 2007 18:19:49 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 48BE216A400 for ; Mon, 5 Feb 2007 18:19:48 +0000 (UTC) (envelope-from imp@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id E48D113C4A7 for ; Mon, 5 Feb 2007 18:19:47 +0000 (UTC) (envelope-from imp@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l15IJlhw008658 for ; Mon, 5 Feb 2007 18:19:47 GMT (envelope-from imp@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l15IJkdV008641 for perforce@freebsd.org; Mon, 5 Feb 2007 18:19:46 GMT (envelope-from imp@freebsd.org) Date: Mon, 5 Feb 2007 18:19:46 GMT Message-Id: <200702051819.l15IJkdV008641@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to imp@freebsd.org using -f From: Warner Losh To: Perforce Change Reviews Cc: Subject: PERFORCE change 114067 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Feb 2007 18:19:59 -0000 http://perforce.freebsd.org/chv.cgi?CH=114067 Change 114067 by imp@imp_paco-paco on 2007/02/05 18:19:38 IFC @114060 Affected files ... .. //depot/projects/arm/src/etc/periodic/security/800.loginfail#2 integrate .. //depot/projects/arm/src/lib/libarchive/archive_read.c#8 integrate .. //depot/projects/arm/src/lib/libarchive/archive_read_support_compression_none.c#7 integrate .. //depot/projects/arm/src/sbin/ifconfig/af_inet6.c#3 integrate .. //depot/projects/arm/src/sbin/ifconfig/ifconfig.8#11 integrate .. //depot/projects/arm/src/sbin/init/init.c#2 integrate .. //depot/projects/arm/src/sbin/mount/Makefile#2 integrate .. //depot/projects/arm/src/sbin/mount/mount.c#5 integrate .. //depot/projects/arm/src/sbin/quotacheck/quotacheck.c#4 integrate .. //depot/projects/arm/src/share/man/man4/altq.4#4 integrate .. //depot/projects/arm/src/share/man/man4/aue.4#3 integrate .. //depot/projects/arm/src/share/man/man4/bce.4#5 integrate .. //depot/projects/arm/src/share/man/man4/ipw.4#3 integrate .. //depot/projects/arm/src/share/man/man4/iwi.4#2 integrate .. //depot/projects/arm/src/share/man/man4/man4.arm/npe.4#2 integrate .. //depot/projects/arm/src/share/man/man4/ral.4#3 integrate .. //depot/projects/arm/src/share/man/man4/tap.4#2 integrate .. //depot/projects/arm/src/share/man/man4/tun.4#3 integrate .. //depot/projects/arm/src/share/man/man4/ubsa.4#3 integrate .. //depot/projects/arm/src/share/man/man4/udav.4#2 integrate .. //depot/projects/arm/src/share/man/man4/ural.4#3 integrate .. //depot/projects/arm/src/share/man/man5/quota.user.5#2 integrate .. //depot/projects/arm/src/share/syscons/keymaps/hr.iso.kbd#2 integrate .. //depot/projects/arm/src/sys/arm/arm/pmap.c#31 integrate .. //depot/projects/arm/src/sys/arm/at91/if_ate.c#69 integrate .. //depot/projects/arm/src/sys/arm/xscale/ixp425/if_npe.c#28 integrate .. //depot/projects/arm/src/sys/boot/common/loader.8#7 integrate .. //depot/projects/arm/src/sys/boot/forth/loader.conf#12 integrate .. //depot/projects/arm/src/sys/conf/files#62 integrate .. //depot/projects/arm/src/sys/conf/kmod.mk#14 integrate .. //depot/projects/arm/src/sys/dev/ata/ata-chipset.c#32 integrate .. //depot/projects/arm/src/sys/dev/ata/ata-pci.c#9 integrate .. //depot/projects/arm/src/sys/dev/ata/ata-pci.h#18 integrate .. //depot/projects/arm/src/sys/dev/atkbdc/psm.c#6 integrate .. //depot/projects/arm/src/sys/dev/pccard/pccard.c#5 integrate .. //depot/projects/arm/src/sys/dev/sound/pcm/ac97_patch.c#4 integrate .. //depot/projects/arm/src/sys/dev/sound/pcm/ac97_patch.h#4 integrate .. //depot/projects/arm/src/sys/dev/usb/if_aue.c#11 integrate .. //depot/projects/arm/src/sys/dev/usb/ubsa.c#4 integrate .. //depot/projects/arm/src/sys/dev/usb/uhub.c#4 integrate .. //depot/projects/arm/src/sys/dev/usb/uipaq.c#2 integrate .. //depot/projects/arm/src/sys/dev/usb/usb_subr.c#12 integrate .. //depot/projects/arm/src/sys/dev/usb/usbdevs#25 integrate .. //depot/projects/arm/src/sys/dev/usb/uvisor.c#6 integrate .. //depot/projects/arm/src/sys/kern/kern_conf.c#9 integrate .. //depot/projects/arm/src/sys/kern/subr_firmware.c#8 integrate .. //depot/projects/arm/src/sys/kern/uipc_socket.c#31 integrate .. //depot/projects/arm/src/sys/net/if_tap.c#10 integrate .. //depot/projects/arm/src/sys/net/if_tun.c#9 integrate .. //depot/projects/arm/src/sys/net80211/ieee80211_input.c#14 integrate .. //depot/projects/arm/src/sys/netinet/in.c#7 integrate .. //depot/projects/arm/src/sys/netinet/ip_fastfwd.c#8 integrate .. //depot/projects/arm/src/sys/netinet/ip_fw2.c#27 integrate .. //depot/projects/arm/src/sys/netinet/ip_input.c#15 integrate .. //depot/projects/arm/src/sys/netinet6/ah_core.c#4 integrate .. //depot/projects/arm/src/sys/netinet6/nd6.c#13 integrate .. //depot/projects/arm/src/sys/sys/conf.h#7 integrate .. //depot/projects/arm/src/sys/sys/lock.h#9 integrate .. //depot/projects/arm/src/sys/ufs/ffs/ffs_rawread.c#5 integrate .. //depot/projects/arm/src/sys/ufs/ufs/ufs_quota.c#13 integrate .. //depot/projects/arm/src/sys/vm/vm_contig.c#12 integrate .. //depot/projects/arm/src/sys/vm/vm_page.c#24 integrate .. //depot/projects/arm/src/sys/vm/vm_pageq.c#11 integrate .. //depot/projects/arm/src/sys/vm/vm_zeroidle.c#9 integrate .. //depot/projects/arm/src/tools/regression/netinet/ipsockopt/ipsockopt.c#2 integrate .. //depot/projects/arm/src/usr.bin/ctags/C.c#2 integrate .. //depot/projects/arm/src/usr.bin/ctags/fortran.c#2 integrate .. //depot/projects/arm/src/usr.bin/ctags/tree.c#2 integrate .. //depot/projects/arm/src/usr.bin/getent/getent.c#2 integrate .. //depot/projects/arm/src/usr.bin/ncplist/ncplist.c#2 integrate .. //depot/projects/arm/src/usr.bin/ncplogin/ncplogin.c#2 integrate .. //depot/projects/arm/src/usr.bin/quota/quota.c#4 integrate .. //depot/projects/arm/src/usr.sbin/apmd/apmd.c#2 integrate .. //depot/projects/arm/src/usr.sbin/apmd/contrib/pccardq.c#2 integrate .. //depot/projects/arm/src/usr.sbin/bsnmpd/modules/snmp_bridge/bridge_sys.c#4 integrate .. //depot/projects/arm/src/usr.sbin/edquota/edquota.8#2 integrate .. //depot/projects/arm/src/usr.sbin/edquota/edquota.c#3 integrate .. //depot/projects/arm/src/usr.sbin/mountd/mountd.8#2 integrate .. //depot/projects/arm/src/usr.sbin/mountd/mountd.c#5 integrate .. //depot/projects/arm/src/usr.sbin/pciconf/Makefile#2 integrate .. //depot/projects/arm/src/usr.sbin/pciconf/cap.c#1 branch .. //depot/projects/arm/src/usr.sbin/pciconf/pciconf.8#2 integrate .. //depot/projects/arm/src/usr.sbin/pciconf/pciconf.c#2 integrate .. //depot/projects/arm/src/usr.sbin/pciconf/pciconf.h#1 branch .. //depot/projects/arm/src/usr.sbin/quotaon/quotaon.c#3 integrate .. //depot/projects/arm/src/usr.sbin/repquota/repquota.c#2 integrate Differences ... ==== //depot/projects/arm/src/etc/periodic/security/800.loginfail#2 (text+ko) ==== @@ -24,7 +24,7 @@ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # -# $FreeBSD: src/etc/periodic/security/800.loginfail,v 1.6 2006/03/05 15:45:38 matteo Exp $ +# $FreeBSD: src/etc/periodic/security/800.loginfail,v 1.7 2007/02/05 16:36:25 jdp Exp $ # # Show login failures @@ -59,7 +59,7 @@ [Yy][Ee][Ss]) echo "" echo "${host} login failures:" - n=$(catmsgs | grep -ia "^$yesterday.*(fail|invalid|bad|illegal)" | + n=$(catmsgs | egrep -ia "^$yesterday.*(fail|invalid|bad|illegal)" | tee /dev/stderr | wc -l) [ $n -gt 0 ] && rc=1 || rc=0;; *) rc=0;; ==== //depot/projects/arm/src/lib/libarchive/archive_read.c#8 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD: src/lib/libarchive/archive_read.c,v 1.28 2007/02/01 06:18:16 kientzle Exp $"); +__FBSDID("$FreeBSD: src/lib/libarchive/archive_read.c,v 1.29 2007/02/05 16:30:40 cperciva Exp $"); #ifdef HAVE_ERRNO_H #include @@ -65,10 +65,8 @@ unsigned char *nulls; a = (struct archive *)malloc(sizeof(*a)); - if (a == NULL) { - archive_set_error(a, ENOMEM, "Can't allocate archive object"); + if (a == NULL) return (NULL); - } memset(a, 0, sizeof(*a)); a->user_uid = geteuid(); ==== //depot/projects/arm/src/lib/libarchive/archive_read_support_compression_none.c#7 (text+ko) ==== @@ -24,7 +24,7 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_compression_none.c,v 1.13 2007/01/09 08:05:55 kientzle Exp $"); +__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_compression_none.c,v 1.14 2007/02/05 16:30:40 cperciva Exp $"); #include #ifdef HAVE_ERRNO_H @@ -301,7 +301,11 @@ /* * If a client_skipper was provided, try that first. */ +#if ARCHIVE_API_VERSION < 2 if ((a->client_skipper != NULL) && (request < SSIZE_MAX)) { +#else + if (a->client_skipper != NULL) { +#endif bytes_skipped = (a->client_skipper)(a, a->client_data, request); if (bytes_skipped < 0) { /* error */ @@ -333,7 +337,8 @@ if (bytes_read == 0) { /* We hit EOF before we satisfied the skip request. */ archive_set_error(a, ARCHIVE_ERRNO_MISC, - "Truncated input file (need to skip %d bytes)", (int)request); + "Truncated input file (need to skip %jd bytes)", + (intmax_t)request); return (ARCHIVE_FATAL); } assert(bytes_read >= 0); /* precondition for cast below */ ==== //depot/projects/arm/src/sbin/ifconfig/af_inet6.c#3 (text+ko) ==== @@ -29,7 +29,7 @@ #ifndef lint static const char rcsid[] = - "$FreeBSD: src/sbin/ifconfig/af_inet6.c,v 1.4 2006/09/25 18:20:56 bms Exp $"; + "$FreeBSD: src/sbin/ifconfig/af_inet6.c,v 1.5 2007/02/03 03:40:33 bms Exp $"; #endif /* not lint */ #include @@ -515,7 +515,7 @@ .af_settunnel = in6_set_tunnel, .af_difaddr = SIOCDIFADDR_IN6, .af_aifaddr = SIOCAIFADDR_IN6, - .af_ridreq = &in6_ridreq, + .af_ridreq = &in6_addreq, .af_addreq = &in6_addreq, }; ==== //depot/projects/arm/src/sbin/ifconfig/ifconfig.8#11 (text+ko) ==== @@ -26,9 +26,9 @@ .\" SUCH DAMAGE. .\" .\" From: @(#)ifconfig.8 8.3 (Berkeley) 1/5/94 -.\" $FreeBSD: src/sbin/ifconfig/ifconfig.8,v 1.131 2007/01/20 00:56:49 marius Exp $ +.\" $FreeBSD: src/sbin/ifconfig/ifconfig.8,v 1.133 2007/02/04 16:48:56 bms Exp $ .\" -.Dd January 20, 2007 +.Dd February 4, 2007 .Dt IFCONFIG 8 .Os .Sh NAME @@ -1567,6 +1567,62 @@ .Sh NOTES The media selection system is relatively new and only some drivers support it (or have need for it). +.Sh EXAMPLES +Assign the IPv4 address +.Li 192.0.2.10 , +with a network mask of +.Li 255.255.255.0 , +to the interface +.Li fxp0 : +.Dl # ifconfig fxp0 inet 192.0.2.10 netmask 255.255.255.0 +.Pp +Add the IPv4 address +.Li 192.0.2.45 , +with the CIDR network prefix +.Li /28 , +to the interface +.Li ed0 , +using +.Cm add +as a synonym for the canonical form of the option +.Cm alias : +.Dl # ifconfig ed0 inet 192.0.2.45/28 add +.Pp +Remove the IPv4 address +.Li 192.0.2.45 +from the interface +.Li ed0 : +.Dl # ifconfig ed0 inet 192.0.2.45 -alias +.Pp +Add the IPv6 address +.Li 2001:DB8:DBDB::123/48 +to the interface +.Li em0 : +.Dl # ifconfig em0 inet6 2001:db8:bdbd::123 prefixlen 48 alias +Note that lower case hexadecimal IPv6 addresses are acceptable. +.Pp +Remove the IPv6 address added in the above example, +using the +.Li / +character as shorthand for the network prefix, +and using +.Cm delete +as a synonym for the canonical form of the option +.Fl alias : +.Dl # ifconfig em0 inet6 2001:db8:bdbd::123/48 delete +.Pp +Configure the interface +.Li xl0 , +to use 100baseTX, full duplex Ethernet media options: +.Dl # ifconfig xl0 media 100baseTX mediaopt full-duplex +.Pp +Create the software network interface +.Li gif1 : +.Dl # ifconfig gif1 create +.Pp +Destroy the software network interface +.Li gif1 : +.Dl # ifconfig gif1 destroy .Sh DIAGNOSTICS Messages indicating the specified interface does not exist, the requested address is unknown, or the user is not privileged and ==== //depot/projects/arm/src/sbin/init/init.c#2 (text+ko) ==== @@ -41,7 +41,7 @@ static char sccsid[] = "@(#)init.c 8.1 (Berkeley) 7/15/93"; #endif static const char rcsid[] = - "$FreeBSD: src/sbin/init/init.c,v 1.62 2006/06/08 14:04:36 kib Exp $"; + "$FreeBSD: src/sbin/init/init.c,v 1.63 2007/02/04 06:33:13 imp Exp $"; #endif /* not lint */ #include @@ -55,6 +55,7 @@ #include #include #include +#include #include #include #include @@ -121,6 +122,8 @@ state_func_t catatonia(void); state_func_t death(void); +state_func_t run_script(const char *); + enum { AUTOBOOT, FASTBOOT } runcom_mode = AUTOBOOT; #define FALSE 0 #define TRUE 1 @@ -131,9 +134,11 @@ int devfs; void transition(state_t); -state_t requested_transition = runcom; +state_t requested_transition; void setctty(const char *); +const char *get_shell(void); +void write_stderr(const char *message); typedef struct init_session { int se_index; /* index of entry in ttys file */ @@ -187,6 +192,8 @@ int main(int argc, char *argv[]) { + state_t initial_transition = runcom; + char kenv_value[PATH_MAX]; int c; struct sigaction sa; sigset_t mask; @@ -262,7 +269,7 @@ devfs = 1; break; case 's': - requested_transition = single_user; + initial_transition = single_user; break; case 'f': runcom_mode = FASTBOOT; @@ -275,6 +282,63 @@ if (optind != argc) warning("ignoring excess arguments"); + /* + * We catch or block signals rather than ignore them, + * so that they get reset on exec. + */ + handle(badsys, SIGSYS, 0); + handle(disaster, SIGABRT, SIGFPE, SIGILL, SIGSEGV, + SIGBUS, SIGXCPU, SIGXFSZ, 0); + handle(transition_handler, SIGHUP, SIGINT, SIGTERM, SIGTSTP, + SIGUSR1, SIGUSR2, 0); + handle(alrm_handler, SIGALRM, 0); + sigfillset(&mask); + delset(&mask, SIGABRT, SIGFPE, SIGILL, SIGSEGV, SIGBUS, SIGSYS, + SIGXCPU, SIGXFSZ, SIGHUP, SIGINT, SIGTERM, SIGTSTP, SIGALRM, + SIGUSR1, SIGUSR2, 0); + sigprocmask(SIG_SETMASK, &mask, (sigset_t *) 0); + sigemptyset(&sa.sa_mask); + sa.sa_flags = 0; + sa.sa_handler = SIG_IGN; + (void) sigaction(SIGTTIN, &sa, (struct sigaction *)0); + (void) sigaction(SIGTTOU, &sa, (struct sigaction *)0); + + /* + * Paranoia. + */ + close(0); + close(1); + close(2); + + if (kenv(KENV_GET, "init_script", kenv_value, sizeof(kenv_value)) > 0) { + state_func_t next_transition; + + if ((next_transition = run_script(kenv_value)) != 0) + initial_transition = (state_t) next_transition; + } + + if (kenv(KENV_GET, "init_chroot", kenv_value, sizeof(kenv_value)) > 0) { + if (chdir(kenv_value) != 0 || chroot(".") != 0) + warning("Can't chroot to %s: %m", kenv_value); + } + + /* + * Additional check if devfs needs to be mounted: + * If "/" and "/dev" have the same device number, + * then it hasn't been mounted yet. + */ + if (!devfs) { + struct stat stst; + dev_t root_devno; + + stat("/", &stst); + root_devno = stst.st_dev; + if (stat("/dev", &stst) != 0) + warning("Can't stat /dev: %m"); + else if (stst.st_dev == root_devno) + devfs++; + } + if (devfs) { struct iovec iov[4]; char *s; @@ -312,37 +376,9 @@ } /* - * We catch or block signals rather than ignore them, - * so that they get reset on exec. - */ - handle(badsys, SIGSYS, 0); - handle(disaster, SIGABRT, SIGFPE, SIGILL, SIGSEGV, - SIGBUS, SIGXCPU, SIGXFSZ, 0); - handle(transition_handler, SIGHUP, SIGINT, SIGTERM, SIGTSTP, - SIGUSR1, SIGUSR2, 0); - handle(alrm_handler, SIGALRM, 0); - sigfillset(&mask); - delset(&mask, SIGABRT, SIGFPE, SIGILL, SIGSEGV, SIGBUS, SIGSYS, - SIGXCPU, SIGXFSZ, SIGHUP, SIGINT, SIGTERM, SIGTSTP, SIGALRM, - SIGUSR1, SIGUSR2, 0); - sigprocmask(SIG_SETMASK, &mask, (sigset_t *) 0); - sigemptyset(&sa.sa_mask); - sa.sa_flags = 0; - sa.sa_handler = SIG_IGN; - (void) sigaction(SIGTTIN, &sa, (struct sigaction *)0); - (void) sigaction(SIGTTOU, &sa, (struct sigaction *)0); - - /* - * Paranoia. - */ - close(0); - close(1); - close(2); - - /* * Start the state machine. */ - transition(requested_transition); + transition(initial_transition); /* * Should never reach here. @@ -558,6 +594,23 @@ } } +const char * +get_shell(void) +{ + static char kenv_value[PATH_MAX]; + + if (kenv(KENV_GET, "init_shell", kenv_value, sizeof(kenv_value)) > 0) + return kenv_value; + else + return _PATH_BSHELL; +} + +void +write_stderr(const char *message) +{ + write(STDERR_FILENO, message, strlen(message)); +} + /* * Bring the system up single user. */ @@ -567,7 +620,7 @@ pid_t pid, wpid; int status; sigset_t mask; - const char *shell = _PATH_BSHELL; + const char *shell; char *argv[2]; #ifdef SECURE struct ttyent *typ; @@ -589,6 +642,8 @@ _exit(0); } + shell = get_shell(); + if ((pid = fork()) == 0) { /* * Start the single user session. @@ -605,7 +660,7 @@ pp = getpwnam("root"); if (typ && (typ->ty_status & TTY_SECURE) == 0 && pp && *pp->pw_passwd) { - write(STDERR_FILENO, banner, sizeof banner - 1); + write_stderr(banner); for (;;) { clear = getpass("Password:"); if (clear == 0 || *clear == '\0') @@ -626,10 +681,10 @@ char *cp = altshell; int num; -#define SHREQUEST \ - "Enter full pathname of shell or RETURN for " _PATH_BSHELL ": " - (void)write(STDERR_FILENO, - SHREQUEST, sizeof(SHREQUEST) - 1); +#define SHREQUEST "Enter full pathname of shell or RETURN for " + write_stderr(SHREQUEST); + write_stderr(shell); + write_stderr(": "); while ((num = read(STDIN_FILENO, cp, 1)) != -1 && num != 0 && *cp != '\n' && cp < &altshell[127]) cp++; @@ -718,11 +773,35 @@ state_func_t runcom(void) { + state_func_t next_transition; + + if ((next_transition = run_script(_PATH_RUNCOM)) != 0) + return next_transition; + + runcom_mode = AUTOBOOT; /* the default */ + /* NB: should send a message to the session logger to avoid blocking. */ + logwtmp("~", "reboot", ""); + return (state_func_t) read_ttys; +} + +/* + * Run a shell script. + * Returns 0 on success, otherwise the next transition to enter: + * - single_user if fork/execv/waitpid failed, or if the script + * terminated with a signal or exit code != 0. + * - death if a SIGTERM was delivered to init(8). + */ +state_func_t +run_script(const char *script) +{ pid_t pid, wpid; int status; char *argv[4]; + const char *shell; struct sigaction sa; + shell = get_shell(); + if ((pid = fork()) == 0) { sigemptyset(&sa.sa_mask); sa.sa_flags = 0; @@ -733,11 +812,10 @@ setctty(_PATH_CONSOLE); char _sh[] = "sh"; - char _path_runcom[] = _PATH_RUNCOM; char _autoboot[] = "autoboot"; argv[0] = _sh; - argv[1] = _path_runcom; + argv[1] = __DECONST(char *, script); argv[2] = runcom_mode == AUTOBOOT ? _autoboot : 0; argv[3] = 0; @@ -746,14 +824,13 @@ #ifdef LOGIN_CAP setprocresources(RESOURCE_RC); #endif - execv(_PATH_BSHELL, argv); - stall("can't exec %s for %s: %m", _PATH_BSHELL, _PATH_RUNCOM); + execv(shell, argv); + stall("can't exec %s for %s: %m", shell, script); _exit(1); /* force single user mode */ } if (pid == -1) { - emergency("can't fork for %s on %s: %m", - _PATH_BSHELL, _PATH_RUNCOM); + emergency("can't fork for %s on %s: %m", shell, script); while (waitpid(-1, (int *) 0, WNOHANG) > 0) continue; sleep(STALL_TIMEOUT); @@ -772,13 +849,13 @@ return (state_func_t) death; if (errno == EINTR) continue; - warning("wait for %s on %s failed: %m; going to single user mode", - _PATH_BSHELL, _PATH_RUNCOM); + warning("wait for %s on %s failed: %m; going to " + "single user mode", shell, script); return (state_func_t) single_user; } if (wpid == pid && WIFSTOPPED(status)) { warning("init: %s on %s stopped, restarting\n", - _PATH_BSHELL, _PATH_RUNCOM); + shell, script); kill(pid, SIGCONT); wpid = -1; } @@ -795,18 +872,15 @@ } if (!WIFEXITED(status)) { - warning("%s on %s terminated abnormally, going to single user mode", - _PATH_BSHELL, _PATH_RUNCOM); + warning("%s on %s terminated abnormally, going to single " + "user mode", shell, script); return (state_func_t) single_user; } if (WEXITSTATUS(status)) return (state_func_t) single_user; - runcom_mode = AUTOBOOT; /* the default */ - /* NB: should send a message to the session logger to avoid blocking. */ - logwtmp("~", "reboot", ""); - return (state_func_t) read_ttys; + return (state_func_t) 0; } /* @@ -1465,6 +1539,7 @@ int shutdowntimeout; size_t len; char *argv[4]; + const char *shell; struct sigaction sa; struct stat sb; @@ -1477,6 +1552,8 @@ if (stat(_PATH_RUNDOWN, &sb) == -1 && errno == ENOENT) return 0; + shell = get_shell(); + if ((pid = fork()) == 0) { int fd; @@ -1517,14 +1594,13 @@ #ifdef LOGIN_CAP setprocresources(RESOURCE_RC); #endif - execv(_PATH_BSHELL, argv); - warning("can't exec %s for %s: %m", _PATH_BSHELL, _PATH_RUNDOWN); + execv(shell, argv); + warning("can't exec %s for %s: %m", shell, _PATH_RUNDOWN); _exit(1); /* force single user mode */ } if (pid == -1) { - emergency("can't fork for %s on %s: %m", - _PATH_BSHELL, _PATH_RUNDOWN); + emergency("can't fork for %s on %s: %m", shell, _PATH_RUNDOWN); while (waitpid(-1, (int *) 0, WNOHANG) > 0) continue; sleep(STALL_TIMEOUT); @@ -1548,20 +1624,20 @@ if (clang == 1) { /* we were waiting for the sub-shell */ kill(wpid, SIGTERM); - warning("timeout expired for %s on %s: %m; going to single user mode", - _PATH_BSHELL, _PATH_RUNDOWN); + warning("timeout expired for %s on %s: %m; going to " + "single user mode", shell, _PATH_RUNDOWN); return -1; } if (wpid == -1) { if (errno == EINTR) continue; - warning("wait for %s on %s failed: %m; going to single user mode", - _PATH_BSHELL, _PATH_RUNDOWN); + warning("wait for %s on %s failed: %m; going to " + "single user mode", shell, _PATH_RUNDOWN); return -1; } if (wpid == pid && WIFSTOPPED(status)) { warning("init: %s on %s stopped, restarting\n", - _PATH_BSHELL, _PATH_RUNDOWN); + shell, _PATH_RUNDOWN); kill(pid, SIGCONT); wpid = -1; } @@ -1584,8 +1660,8 @@ } if (!WIFEXITED(status)) { - warning("%s on %s terminated abnormally, going to single user mode", - _PATH_BSHELL, _PATH_RUNDOWN); + warning("%s on %s terminated abnormally, going to " + "single user mode", shell, _PATH_RUNDOWN); return -2; } ==== //depot/projects/arm/src/sbin/mount/Makefile#2 (text+ko) ==== @@ -1,5 +1,5 @@ # @(#)Makefile 8.6 (Berkeley) 5/8/95 -# $FreeBSD: src/sbin/mount/Makefile,v 1.18 2005/11/23 23:22:56 rodrigc Exp $ +# $FreeBSD: src/sbin/mount/Makefile,v 1.19 2007/02/02 23:58:10 pjd Exp $ PROG= mount SRCS= mount.c mount_fs.c getmntopts.c vfslist.c @@ -7,4 +7,7 @@ MAN= mount.8 # We do NOT install the getmntopts.3 man page. +DPADD= ${LIBUTIL} +LDADD= -lutil + .include ==== //depot/projects/arm/src/sbin/mount/mount.c#5 (text+ko) ==== @@ -38,7 +38,7 @@ static char sccsid[] = "@(#)mount.c 8.25 (Berkeley) 5/8/95"; #endif static const char rcsid[] = - "$FreeBSD: src/sbin/mount/mount.c,v 1.92 2006/11/14 01:07:42 rodrigc Exp $"; + "$FreeBSD: src/sbin/mount/mount.c,v 1.93 2007/02/02 23:58:10 pjd Exp $"; #endif /* not lint */ #include @@ -58,6 +58,7 @@ #include #include #include +#include #include "extern.h" #include "mntopts.h" @@ -204,14 +205,33 @@ return (ret); } +static void +restart_mountd(void) +{ + struct pidfh *pfh; + pid_t mountdpid; + + pfh = pidfile_open(_PATH_MOUNTDPID, 0600, &mountdpid); + if (pfh != NULL) { + /* Mountd is not running. */ + pidfile_remove(pfh); + return; + } + if (errno != EEXIST) { + /* Cannot open pidfile for some reason. */ + return; + } + /* We have mountd(8) PID in mountdpid varible, let's signal it. */ + if (kill(mountdpid, SIGHUP) == -1) + err(1, "signal mountd"); +} + int main(int argc, char *argv[]) { const char *mntfromname, **vfslist, *vfstype; struct fstab *fs; struct statfs *mntbuf; - FILE *mountdfp; - pid_t pid; int all, ch, i, init_flags, late, mntsize, rval, have_fstab, ro; char *cp, *ep, *options; @@ -411,15 +431,10 @@ /* * If the mount was successfully, and done by root, tell mountd the - * good news. Pid checks are probably unnecessary, but don't hurt. + * good news. */ - if (rval == 0 && getuid() == 0 && - (mountdfp = fopen(_PATH_MOUNTDPID, "r")) != NULL) { - if (fscanf(mountdfp, "%d", &pid) == 1 && - pid > 0 && kill(pid, SIGHUP) == -1 && errno != ESRCH) - err(1, "signal mountd"); - (void)fclose(mountdfp); - } + if (rval == 0 && getuid() == 0) + restart_mountd(); exit(rval); } ==== //depot/projects/arm/src/sbin/quotacheck/quotacheck.c#4 (text+ko) ==== @@ -42,13 +42,14 @@ #endif /* not lint */ #endif #include -__FBSDID("$FreeBSD: src/sbin/quotacheck/quotacheck.c,v 1.29 2007/01/23 02:13:00 mpp Exp $"); +__FBSDID("$FreeBSD: src/sbin/quotacheck/quotacheck.c,v 1.32 2007/02/04 06:33:14 mpp Exp $"); /* * Fix up / report on disk quotas & usage */ #include #include +#include #include #include @@ -488,13 +489,13 @@ * Reset time limit if have a soft limit and were * previously under it, but are now over it. */ - if (dqbuf.dqb_bsoftlimit && + if (dqbuf.dqb_bsoftlimit && id != 0 && dqbuf.dqb_curblocks < dqbuf.dqb_bsoftlimit && fup->fu_curblocks >= dqbuf.dqb_bsoftlimit) dqbuf.dqb_btime = 0; - if (dqbuf.dqb_isoftlimit && - dqbuf.dqb_curblocks < dqbuf.dqb_isoftlimit && - fup->fu_curblocks >= dqbuf.dqb_isoftlimit) + if (dqbuf.dqb_isoftlimit && id != 0 && + dqbuf.dqb_curinodes < dqbuf.dqb_isoftlimit && + fup->fu_curinodes >= dqbuf.dqb_isoftlimit) dqbuf.dqb_itime = 0; dqbuf.dqb_curinodes = fup->fu_curinodes; dqbuf.dqb_curblocks = fup->fu_curblocks; @@ -587,14 +588,15 @@ { char *opt; char *cp; + struct statfs sfb; static char initname, usrname[100], grpname[100]; static char buf[BUFSIZ]; if (!initname) { - (void)snprintf(usrname, sizeof(usrname), - "%s%s", qfextension[USRQUOTA], qfname); - (void)snprintf(grpname, sizeof(grpname), - "%s%s", qfextension[GRPQUOTA], qfname); + (void)snprintf(usrname, sizeof(usrname), "%s%s", + qfextension[USRQUOTA], qfname); + (void)snprintf(grpname, sizeof(grpname), "%s%s", + qfextension[GRPQUOTA], qfname); initname = 1; } strcpy(buf, fs->fs_mntops); @@ -611,10 +613,19 @@ if (cp) *qfnamep = cp; else { - (void)snprintf(buf, sizeof(buf), - "%s/%s.%s", fs->fs_file, qfname, qfextension[type]); + (void)snprintf(buf, sizeof(buf), "%s/%s.%s", fs->fs_file, + qfname, qfextension[type]); *qfnamep = buf; } + if (statfs(fs->fs_file, &sfb) != 0) { + warn("cannot statfs mount point %s", fs->fs_file); + return (0); + } + if (strcmp(fs->fs_file, sfb.f_mntonname)) { + warnx("%s not mounted for %s quotas", fs->fs_file, + type == USRQUOTA ? "user" : "group"); + return (0); + } return (1); } ==== //depot/projects/arm/src/share/man/man4/altq.4#4 (text+ko) ==== @@ -23,9 +23,9 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/share/man/man4/altq.4,v 1.24 2006/12/13 08:55:20 brueffer Exp $ +.\" $FreeBSD: src/share/man/man4/altq.4,v 1.27 2007/02/03 13:53:22 mlaier Exp $ .\" -.Dd December 13, 2006 +.Dd February 3, 2007 .Dt ALTQ 4 .Os .Sh NAME @@ -117,7 +117,9 @@ They have been applied to the following hardware drivers: .Xr an 4 , .Xr ath 4 , +.Xr aue 4 , .Xr awi 4 , +.Xr bce 4 , .Xr bfe 4 , .Xr bge 4 , .Xr dc 4 , @@ -127,11 +129,15 @@ .Xr ep 4 , .Xr fxp 4 , .Xr hme 4 , +.Xr ipw 4 , +.Xr iwi 4 , .Xr le 4 , .Xr msk 4 , .Xr mxge 4 , .Xr my 4 , +.Xr npe 4 , .Xr nve 4 , +.Xr ral 4 , .Xr re 4 , .Xr rl 4 , .Xr sf 4 , @@ -139,6 +145,8 @@ .Xr sk 4 , .Xr ste 4 , .Xr stge 4 , +.Xr udav 4 , +.Xr ural 4 , .Xr vr 4 , .Xr wi 4 , and ==== //depot/projects/arm/src/share/man/man4/aue.4#3 (text+ko) ==== @@ -28,7 +28,7 @@ .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF .\" THE POSSIBILITY OF SUCH DAMAGE. .\" -.\" $FreeBSD: src/share/man/man4/aue.4,v 1.25 2006/10/07 17:58:50 flz Exp $ +.\" $FreeBSD: src/share/man/man4/aue.4,v 1.26 2007/02/03 19:29:31 brueffer Exp $ .\" .Dd October 7, 2006 .Dt AUE 4 @@ -185,6 +185,7 @@ The driver failed to allocate an mbuf for the receiver ring. .El .Sh SEE ALSO +.Xr altq 4 , .Xr arp 4 , .Xr miibus 4 , .Xr netintro 4 , ==== //depot/projects/arm/src/share/man/man4/bce.4#5 (text) ==== @@ -26,7 +26,7 @@ .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF .\" THE POSSIBILITY OF SUCH DAMAGE. .\" -.\" $FreeBSD: src/share/man/man4/bce.4,v 1.5 2006/12/14 16:40:57 mpp Exp $ +.\" $FreeBSD: src/share/man/man4/bce.4,v 1.6 2007/02/03 19:29:31 brueffer Exp $ .\" .Dd December 2, 2006 .Dt BCE 4 @@ -286,6 +286,7 @@ If the problem continues replace the controller. .El .Sh SEE ALSO +.Xr altq 4 , .Xr arp 4 , .Xr miibus 4 , .Xr netintro 4 , ==== //depot/projects/arm/src/share/man/man4/ipw.4#3 (text+ko) ==== @@ -23,7 +23,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/share/man/man4/ipw.4,v 1.13 2006/07/28 08:43:49 brueffer Exp $ +.\" $FreeBSD: src/share/man/man4/ipw.4,v 1.14 2007/02/03 19:29:31 brueffer Exp $ .\" .Dd July 28, 2006 .Os @@ -119,6 +119,7 @@ This should not happen. .El .Sh SEE ALSO +.Xr altq 4 , .Xr an 4 , .Xr ath 4 , .Xr iwi 4 , ==== //depot/projects/arm/src/share/man/man4/iwi.4#2 (text+ko) ==== @@ -23,7 +23,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/share/man/man4/iwi.4,v 1.15 2006/07/17 18:56:27 mnag Exp $ +.\" $FreeBSD: src/share/man/man4/iwi.4,v 1.16 2007/02/03 19:29:31 brueffer Exp $ .\" .Dd July 17, 2006 .Os @@ -124,6 +124,7 @@ This should not happen. .El .Sh SEE ALSO +.Xr altq 4 , .Xr an 4 , .Xr ath 4 , .Xr ipw 4 , ==== //depot/projects/arm/src/share/man/man4/man4.arm/npe.4#2 (text+ko) ==== @@ -23,7 +23,7 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.\" $FreeBSD: src/share/man/man4/man4.arm/npe.4,v 1.1 2006/12/05 16:57:10 ru Exp $ +.\" $FreeBSD: src/share/man/man4/man4.arm/npe.4,v 1.2 2007/02/03 20:02:29 brueffer Exp $ .\" .Dd December 4, 2006 .Dt NPE 4 arm @@ -132,6 +132,7 @@ Other diagnostics exist and are not listed here; they should be self-explanatory. .Sh SEE ALSO +.Xr altq 4 , .Xr arp 4 , .Xr miibus 4 , >>> TRUNCATED FOR MAIL (1000 lines) <<<