Date: Tue, 25 Nov 2008 19:31:35 GMT From: Ed Schouten <ed@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 153551 for review Message-ID: <200811251931.mAPJVZ5Z001775@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=153551 Change 153551 by ed@ed_dull on 2008/11/25 19:30:53 IFC. Also revert utmpx-changes. Affected files ... .. //depot/projects/mpsafetty/ObsoleteFiles.inc#17 integrate .. //depot/projects/mpsafetty/include/Makefile#6 integrate .. //depot/projects/mpsafetty/include/utmp.h#3 branch .. //depot/projects/mpsafetty/include/utmpx.h#2 delete .. //depot/projects/mpsafetty/sys/arm/at91/at91_machdep.c#1 branch .. //depot/projects/mpsafetty/sys/arm/at91/at91board.h#1 branch .. //depot/projects/mpsafetty/sys/arm/at91/at91var.h#3 integrate .. //depot/projects/mpsafetty/sys/arm/at91/board_bwct.c#1 branch .. //depot/projects/mpsafetty/sys/arm/at91/board_hl200.c#1 branch .. //depot/projects/mpsafetty/sys/arm/at91/board_kb920x.c#1 branch .. //depot/projects/mpsafetty/sys/arm/at91/board_tsc4370.c#1 branch .. //depot/projects/mpsafetty/sys/arm/at91/files.at91#2 integrate .. //depot/projects/mpsafetty/sys/arm/at91/files.kb920x#2 delete .. //depot/projects/mpsafetty/sys/arm/at91/kb920x_machdep.c#4 delete .. //depot/projects/mpsafetty/sys/arm/at91/std.at91#2 integrate .. //depot/projects/mpsafetty/sys/arm/at91/std.bwct#1 branch .. //depot/projects/mpsafetty/sys/arm/at91/std.hl200#1 branch .. //depot/projects/mpsafetty/sys/arm/at91/std.kb920x#2 integrate .. //depot/projects/mpsafetty/sys/arm/at91/std.tsc4370#1 branch .. //depot/projects/mpsafetty/sys/arm/conf/BWCT#5 integrate .. //depot/projects/mpsafetty/sys/arm/conf/HL200#5 integrate .. //depot/projects/mpsafetty/sys/cddl/dev/cyclic/cyclic.c#2 integrate .. //depot/projects/mpsafetty/sys/cddl/dev/dtrace/i386/dtrace_subr.c#2 integrate .. //depot/projects/mpsafetty/sys/dev/acpica/acpi_pcib.c#2 integrate .. //depot/projects/mpsafetty/sys/geom/vinum/geom_vinum.c#3 integrate .. //depot/projects/mpsafetty/sys/geom/vinum/geom_vinum_list.c#2 integrate .. //depot/projects/mpsafetty/sys/geom/vinum/geom_vinum_move.c#2 integrate .. //depot/projects/mpsafetty/sys/geom/vinum/geom_vinum_rename.c#3 integrate .. //depot/projects/mpsafetty/sys/geom/vinum/geom_vinum_rm.c#4 integrate .. //depot/projects/mpsafetty/sys/i386/i386/identcpu.c#5 integrate .. //depot/projects/mpsafetty/sys/i386/i386/intr_machdep.c#3 integrate .. //depot/projects/mpsafetty/sys/kern/vfs_cache.c#7 integrate .. //depot/projects/mpsafetty/sys/modules/nfsserver/Makefile#4 integrate .. //depot/projects/mpsafetty/tools/regression/acltools/00.t#1 branch .. //depot/projects/mpsafetty/tools/regression/acltools/run#1 branch .. //depot/projects/mpsafetty/tools/regression/acltools/tools-posix.test#1 branch Differences ... ==== //depot/projects/mpsafetty/ObsoleteFiles.inc#17 (text+ko) ==== @@ -14,8 +14,6 @@ # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # -# 20081116: removal of utmp(5), replaced by utmpx(5) -OLD_FILES+=usr/include/utmp.h # 20080928: removal of inaccurate device_ids(9) manual page OLD_FILES+=usr/share/man/man9/device_ids.9.gz OLD_FILES+=usr/share/man/man9/major.9.gz ==== //depot/projects/mpsafetty/include/Makefile#6 (text+ko) ==== @@ -23,7 +23,7 @@ stdbool.h stddef.h stdio.h stdlib.h string.h stringlist.h \ strings.h sysexits.h tar.h tgmath.h \ time.h timeconv.h timers.h ttyent.h \ - ulimit.h unistd.h utime.h utmpx.h uuid.h varargs.h vis.h wchar.h \ + ulimit.h unistd.h utime.h utmp.h uuid.h varargs.h vis.h wchar.h \ wctype.h wordexp.h MHDRS= float.h floatingpoint.h stdarg.h ==== //depot/projects/mpsafetty/sys/arm/at91/at91var.h#3 (text) ==== @@ -23,7 +23,7 @@ * SUCH DAMAGE. */ -/* $FreeBSD: src/sys/arm/at91/at91var.h,v 1.2 2008/11/25 00:13:26 imp Exp $ */ +/* $FreeBSD: src/sys/arm/at91/at91var.h,v 1.3 2008/11/25 18:40:40 imp Exp $ */ #ifndef _AT91VAR_H_ #define _AT91VAR_H_ @@ -43,5 +43,4 @@ struct resource_list resources; }; - #endif /* _AT91VAR_H_ */ ==== //depot/projects/mpsafetty/sys/arm/at91/files.at91#2 (text) ==== @@ -1,6 +1,7 @@ -# $FreeBSD: src/sys/arm/at91/files.at91,v 1.7 2007/01/05 02:06:53 ticso Exp $ +# $FreeBSD: src/sys/arm/at91/files.at91,v 1.9 2008/11/25 19:05:46 imp Exp $ arm/arm/cpufunc_asm_arm9.S standard arm/arm/irq_dispatch.S standard +arm/at91/at91_machdep.c standard arm/at91/at91.c standard arm/at91/at91_st.c standard arm/at91/at91_mci.c optional at91_mci @@ -18,3 +19,10 @@ arm/at91/uart_bus_at91usart.c optional uart arm/at91/uart_cpu_at91rm9200usart.c optional uart arm/at91/uart_dev_at91usart.c optional uart +# +# All the boards we support +# +arm/at91/board_bwct.c optional at91_board_bwct +arm/at91/board_hl200.c optional at91_board_hl200 +arm/at91/board_kb920x.c optional at91_board_kb920x +arm/at91/board_tsc4370.c optional at91_board_tsc4370 ==== //depot/projects/mpsafetty/sys/arm/at91/std.at91#2 (text) ==== @@ -1,6 +1,6 @@ -# $FreeBSD: src/sys/arm/at91/std.at91,v 1.4 2007/10/25 22:57:19 cognet Exp $ +# $FreeBSD: src/sys/arm/at91/std.at91,v 1.5 2008/11/25 16:38:10 imp Exp $ files "../at91/files.at91" -cpu CPU_ARM9 +cpu CPU_ARM9 makeoptions CONF_CFLAGS=-mcpu=arm9 -options PHYSADDR=0x20000000 +options PHYSADDR=0x20000000 ==== //depot/projects/mpsafetty/sys/arm/at91/std.kb920x#2 (text) ==== @@ -1,9 +1,10 @@ -#$FreeBSD: src/sys/arm/at91/std.kb920x,v 1.5 2007/10/25 22:57:19 cognet Exp $ +#$FreeBSD: src/sys/arm/at91/std.kb920x,v 1.7 2008/11/25 19:05:46 imp Exp $ include "../at91/std.at91" -files "../at91/files.kb920x" options STARTUP_PAGETABLE_ADDR=0x20800000 makeoptions KERNPHYSADDR=0x20000000 +options KERNPHYSADDR=0x20000000 makeoptions KERNVIRTADDR=0xc0000000 -options KERNPHYSADDR=0x20000000 options KERNVIRTADDR=0xc0000000 + +device at91_board_kb920x ==== //depot/projects/mpsafetty/sys/arm/conf/BWCT#5 (text+ko) ==== @@ -15,14 +15,14 @@ # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES. # -# $FreeBSD: src/sys/arm/conf/BWCT,v 1.6 2008/10/23 01:51:55 marcel Exp $ +# $FreeBSD: src/sys/arm/conf/BWCT,v 1.7 2008/11/25 19:05:46 imp Exp $ ident BWCT options VERBOSE_INIT_ARM options AT91_BWCT -include "../at91/std.kb920x" +include "../at91/std.bwct" #To statically compile in device wiring instead of /boot/device.hints #hints "hints.at91rm9200" ==== //depot/projects/mpsafetty/sys/arm/conf/HL200#5 (text+ko) ==== @@ -1,5 +1,4 @@ -# KB920X -- Custom kernel configuration for the KB9200, 9201 and 9202 -# AT91RM9200 based Hot-e configuration file +# Kernel configuration for the AT91RM9200 based Hot-e configuration file # # For more information on this file, please read the handbook section on # Kernel Configuration Files: @@ -16,27 +15,18 @@ # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES. # -# $FreeBSD: src/sys/arm/conf/HL200,v 1.6 2008/10/23 01:51:55 marcel Exp $ +# $FreeBSD: src/sys/arm/conf/HL200,v 1.7 2008/11/25 19:05:46 imp Exp $ ident HL200 -include "../at91/std.at91" -files "../at91/files.kb920x" - -options STARTUP_PAGETABLE_ADDR=0x20000000 -makeoptions KERNPHYSADDR=0x20100000 -makeoptions KERNVIRTADDR=0xc0100000 -options KERNPHYSADDR=0x20100000 -options KERNVIRTADDR=0xc0100000 +include "../at91/std.hl200" #To statically compile in device wiring instead of /boot/device.hints -#hints "GENERIC.hints" #Default places to look for devices. hints "KB920X.hints" makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols options DDB options KDB -options AT91C_MASTER_CLOCK=45000000 options SCHED_4BSD #4BSD scheduler options INET #InterNETworking @@ -46,17 +36,17 @@ #options UFS_ACL #Support for access control lists #options UFS_DIRHASH #Improve performance on big directories #options MD_ROOT #MD is a potential root device -#options MD_ROOT_SIZE=4096 # 3MB ram disk +#options MD_ROOT_SIZE=4096 # 3MB ram disk #options ROOTDEVNAME=\"ufs:/dev/mmcsd0s1a\" options NFSCLIENT #Network Filesystem Client #options NFSSERVER #Network Filesystem Server #options NFSLOCKD #Network Lock Manager options NFS_ROOT #NFS usable as /, requires NFSCLIENT -options BOOTP_NFSROOT -options BOOTP -options BOOTP_NFSV3 -options BOOTP_WIRED_TO=ate0 -options BOOTP_COMPAT +options BOOTP_NFSROOT +options BOOTP +options BOOTP_NFSV3 +options BOOTP_WIRED_TO=ate0 +options BOOTP_COMPAT #options MSDOSFS #MSDOS Filesystem #options CD9660 #ISO 9660 Filesystem @@ -124,20 +114,20 @@ device rue # RealTek RTL8150 USB Ethernet device udav # usb serial -device ucom -device uark -device ubsa -device ubser -device uftdi -device uipaq -device uplcom -device uvisor -device uvscom +device ucom +device uark +device ubsa +#device ubser # not yet converted. +device uftdi +device uipaq +device uplcom +device uvisor +device uvscom # SCSI peripherals -device scbus # SCSI bus (required for SCSI) -device da # Direct Access (disks) -device cd # CD -device pass # Passthrough device (direct SCSI access) +device scbus # SCSI bus (required for SCSI) +device da # Direct Access (disks) +device cd # CD +device pass # Passthrough device (direct SCSI access) # Wireless NIC cards device wlan # 802.11 support device wlan_wep # 802.11 WEP support ==== //depot/projects/mpsafetty/sys/cddl/dev/cyclic/cyclic.c#2 (text+ko) ==== @@ -21,7 +21,7 @@ * * Portions Copyright 2008 John Birrell <jb@freebsd.org> * - * $FreeBSD: src/sys/cddl/dev/cyclic/cyclic.c,v 1.1 2008/05/23 22:21:58 jb Exp $ + * $FreeBSD: src/sys/cddl/dev/cyclic/cyclic.c,v 1.2 2008/11/25 19:25:54 ganbold Exp $ * * This is a simplified version of the cyclic timer subsystem from * OpenSolaris. In the FreeBSD version, we don't use interrupt levels. @@ -1341,12 +1341,11 @@ static void cyclic_uninit(void) { - struct pcpu *pc; cpu_t *c; int id; for (id = 0; id <= mp_maxid; id++) { - if ((pc = pcpu_find(id)) == NULL) + if (pcpu_find(id) == NULL) continue; c = &solaris_cpu[id]; ==== //depot/projects/mpsafetty/sys/cddl/dev/dtrace/i386/dtrace_subr.c#2 (text+ko) ==== @@ -19,7 +19,7 @@ * * CDDL HEADER END * - * $FreeBSD: src/sys/cddl/dev/dtrace/i386/dtrace_subr.c,v 1.1 2008/05/23 05:59:41 jb Exp $ + * $FreeBSD: src/sys/cddl/dev/dtrace/i386/dtrace_subr.c,v 1.2 2008/11/25 19:25:54 ganbold Exp $ * */ /* @@ -403,7 +403,6 @@ { cpumask_t map; int i; - struct pcpu *cp; /* The current CPU is the reference one. */ tsc_skew[curcpu] = 0; @@ -412,7 +411,7 @@ if (i == curcpu) continue; - if ((cp = pcpu_find(i)) == NULL) + if (pcpu_find(i) == NULL) continue; map = 0; ==== //depot/projects/mpsafetty/sys/dev/acpica/acpi_pcib.c#2 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_pcib.c,v 1.60 2005/12/03 21:17:17 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_pcib.c,v 1.61 2008/11/25 19:06:20 ganbold Exp $"); #include "opt_acpi.h" #include <sys/param.h> @@ -127,7 +127,6 @@ int acpi_pcib_attach(device_t dev, ACPI_BUFFER *prt, int busno) { - device_t child; ACPI_STATUS status; ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); @@ -157,7 +156,7 @@ /* * Attach the PCI bus proper. */ - if ((child = device_add_child(dev, "pci", busno)) == NULL) { + if (device_add_child(dev, "pci", busno) == NULL) { device_printf(device_get_parent(dev), "couldn't attach pci bus\n"); return_VALUE(ENXIO); } ==== //depot/projects/mpsafetty/sys/geom/vinum/geom_vinum.c#3 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/geom/vinum/geom_vinum.c,v 1.22 2008/10/26 17:20:37 lulf Exp $"); +__FBSDID("$FreeBSD: src/sys/geom/vinum/geom_vinum.c,v 1.23 2008/11/25 19:13:58 lulf Exp $"); #include <sys/param.h> #include <sys/bio.h> @@ -165,12 +165,20 @@ plexes = gctl_get_paraml(req, "plexes", sizeof(*plexes)); subdisks = gctl_get_paraml(req, "subdisks", sizeof(*subdisks)); drives = gctl_get_paraml(req, "drives", sizeof(*drives)); + if (volumes == NULL || plexes == NULL || subdisks == NULL || + drives == NULL) { + gctl_error(req, "number of objects not given"); + return (-1); + } /* First, handle drive definitions ... */ for (i = 0; i < *drives; i++) { snprintf(buf, sizeof(buf), "drive%d", i); d2 = gctl_get_paraml(req, buf, sizeof(*d2)); - + if (d2 == NULL) { + gctl_error(req, "no drive definition given"); + return (-1); + } d = gv_find_drive(sc, d2->name); if (d != NULL) { gctl_error(req, "drive '%s' is already known", @@ -205,7 +213,10 @@ error = 0; snprintf(buf, sizeof(buf), "volume%d", i); v2 = gctl_get_paraml(req, buf, sizeof(*v2)); - + if (v2 == NULL) { + gctl_error(req, "no volume definition given"); + return (-1); + } v = gv_find_vol(sc, v2->name); if (v != NULL) { gctl_error(req, "volume '%s' is already known", @@ -226,7 +237,10 @@ error = 0; snprintf(buf, sizeof(buf), "plex%d", i); p2 = gctl_get_paraml(req, buf, sizeof(*p2)); - + if (p2 == NULL) { + gctl_error(req, "no plex definition given"); + return (-1); + } p = gv_find_plex(sc, p2->name); if (p != NULL) { gctl_error(req, "plex '%s' is already known", p->name); @@ -260,7 +274,10 @@ error = 0; snprintf(buf, sizeof(buf), "sd%d", i); s2 = gctl_get_paraml(req, buf, sizeof(*s2)); - + if (s2 == NULL) { + gctl_error(req, "no subdisk definition given"); + return (-1); + } s = gv_find_sd(sc, s2->name); if (s != NULL) { gctl_error(req, "subdisk '%s' is already known", @@ -405,7 +422,10 @@ /* Return configuration in string form. */ } else if (!strcmp(verb, "getconfig")) { comment = gctl_get_param(req, "comment", NULL); - + if (comment == NULL) { + gctl_error(req, "no comment parameter given"); + return; + } sb = sbuf_new(NULL, NULL, GV_CFG_LEN, SBUF_FIXEDLEN); gv_format_config(sc, sb, 0, comment); sbuf_finish(sb); ==== //depot/projects/mpsafetty/sys/geom/vinum/geom_vinum_list.c#2 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/geom/vinum/geom_vinum_list.c,v 1.3 2005/01/06 18:27:30 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/geom/vinum/geom_vinum_list.c,v 1.4 2008/11/25 19:13:58 lulf Exp $"); #include <sys/param.h> #include <sys/libkern.h> @@ -62,6 +62,10 @@ } flags = gctl_get_paraml(req, "flags", sizeof(*flags)); + if (flags == NULL) { + gctl_error(req, "no flags given"); + return; + } sc = gp->softc; @@ -69,6 +73,10 @@ /* Figure out which command was given. */ cmd = gctl_get_param(req, "cmd", NULL); + if (cmd == NULL) { + gctl_error(req, "no command given"); + return; + } /* List specific objects or everything. */ if (!strcmp(cmd, "list") || !strcmp(cmd, "l")) { ==== //depot/projects/mpsafetty/sys/geom/vinum/geom_vinum_move.c#2 (text+ko) ==== @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/geom/vinum/geom_vinum_move.c,v 1.3 2006/02/08 21:32:45 le Exp $"); +__FBSDID("$FreeBSD: src/sys/geom/vinum/geom_vinum_move.c,v 1.4 2008/11/25 19:13:58 lulf Exp $"); #include <sys/param.h> #include <sys/libkern.h> @@ -56,7 +56,15 @@ sc = gp->softc; argc = gctl_get_paraml(req, "argc", sizeof(*argc)); + if (argc == NULL) { + gctl_error(req, "no arguments given"); + return; + } flags = gctl_get_paraml(req, "flags", sizeof(*flags)); + if (flags == NULL) { + gctl_error(req, "no flags given"); + return; + } destination = gctl_get_param(req, "destination", NULL); if (destination == NULL) { gctl_error(req, "no destination given"); ==== //depot/projects/mpsafetty/sys/geom/vinum/geom_vinum_rename.c#3 (text+ko) ==== @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/geom/vinum/geom_vinum_rename.c,v 1.4 2008/07/19 13:53:11 lulf Exp $"); +__FBSDID("$FreeBSD: src/sys/geom/vinum/geom_vinum_rename.c,v 1.5 2008/11/25 19:13:58 lulf Exp $"); #include <sys/param.h> #include <sys/libkern.h> @@ -65,6 +65,10 @@ sc = gp->softc; flags = gctl_get_paraml(req, "flags", sizeof(*flags)); + if (flags == NULL) { + gctl_error(req, "no flags given"); + return; + } newname = gctl_get_param(req, "newname", NULL); if (newname == NULL) { ==== //depot/projects/mpsafetty/sys/geom/vinum/geom_vinum_rm.c#4 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/geom/vinum/geom_vinum_rm.c,v 1.15 2008/10/26 17:20:37 lulf Exp $"); +__FBSDID("$FreeBSD: src/sys/geom/vinum/geom_vinum_rm.c,v 1.16 2008/11/25 19:13:58 lulf Exp $"); #include <sys/param.h> #include <sys/libkern.h> @@ -59,13 +59,18 @@ int i, type, err; argc = gctl_get_paraml(req, "argc", sizeof(*argc)); - flags = gctl_get_paraml(req, "flags", sizeof(*flags)); if (argc == NULL || *argc == 0) { gctl_error(req, "no arguments given"); return; } + flags = gctl_get_paraml(req, "flags", sizeof(*flags)); + if (flags == NULL) { + gctl_error(req, "no flags given"); + return; + } + sc = gp->softc; for (i = 0; i < *argc; i++) { ==== //depot/projects/mpsafetty/sys/i386/i386/identcpu.c#5 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/i386/i386/identcpu.c,v 1.193 2008/10/22 21:03:30 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/i386/i386/identcpu.c,v 1.194 2008/11/25 13:35:06 takawata Exp $"); #include "opt_cpu.h" @@ -846,7 +846,8 @@ * mention the capability. */ if (!tsc_is_invariant && - (strcmp(cpu_vendor, "AuthenticAMD") == 0 && + ((strcmp(cpu_vendor, "AuthenticAMD") == 0 || + (strcmp(cpu_vendor, "GenuineIntel") == 0))&& ((amd_pminfo & AMDPM_TSC_INVARIANT) != 0 || I386_CPU_FAMILY(cpu_id) >= 0x10 || cpu_id == 0x60fb2))) { ==== //depot/projects/mpsafetty/sys/i386/i386/intr_machdep.c#3 (text+ko) ==== @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/i386/i386/intr_machdep.c,v 1.37 2008/09/18 03:19:46 kmacy Exp $ + * $FreeBSD: src/sys/i386/i386/intr_machdep.c,v 1.38 2008/11/25 18:48:13 ganbold Exp $ */ /* @@ -230,11 +230,8 @@ intr_execute_handlers(struct intsrc *isrc, struct trapframe *frame) { struct intr_event *ie; - struct thread *td; int vector; - td = curthread; - /* * We count software interrupts when we process them. The * code here follows previous practice, but there's an ==== //depot/projects/mpsafetty/sys/kern/vfs_cache.c#7 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/kern/vfs_cache.c,v 1.126 2008/09/24 18:51:33 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/vfs_cache.c,v 1.127 2008/11/25 15:36:15 marcus Exp $"); #include <sys/param.h> #include <sys/filedesc.h> @@ -716,7 +716,8 @@ { char *bp, *tmpbuf; struct filedesc *fdp; - int error; + struct vnode *cdir, *rdir; + int error, vfslocked; if (disablecwd) return (ENODEV); @@ -728,9 +729,18 @@ tmpbuf = malloc(buflen, M_TEMP, M_WAITOK); fdp = td->td_proc->p_fd; FILEDESC_SLOCK(fdp); - error = vn_fullpath1(td, fdp->fd_cdir, fdp->fd_rdir, tmpbuf, - &bp, buflen); + cdir = fdp->fd_cdir; + VREF(cdir); + rdir = fdp->fd_rdir; + VREF(rdir); FILEDESC_SUNLOCK(fdp); + error = vn_fullpath1(td, cdir, rdir, tmpbuf, &bp, buflen); + vfslocked = VFS_LOCK_GIANT(rdir->v_mount); + vrele(rdir); + VFS_UNLOCK_GIANT(vfslocked); + vfslocked = VFS_LOCK_GIANT(cdir->v_mount); + vrele(cdir); + VFS_UNLOCK_GIANT(vfslocked); if (!error) { if (bufseg == UIO_SYSSPACE) @@ -771,7 +781,8 @@ { char *buf; struct filedesc *fdp; - int error; + struct vnode *rdir; + int error, vfslocked; if (disablefullpath) return (ENODEV); @@ -781,8 +792,13 @@ buf = malloc(MAXPATHLEN, M_TEMP, M_WAITOK); fdp = td->td_proc->p_fd; FILEDESC_SLOCK(fdp); - error = vn_fullpath1(td, vn, fdp->fd_rdir, buf, retbuf, MAXPATHLEN); + rdir = fdp->fd_rdir; + VREF(rdir); FILEDESC_SUNLOCK(fdp); + error = vn_fullpath1(td, vn, rdir, buf, retbuf, MAXPATHLEN); + vfslocked = VFS_LOCK_GIANT(rdir->v_mount); + vrele(rdir); + VFS_UNLOCK_GIANT(vfslocked); if (!error) *freebuf = buf; ==== //depot/projects/mpsafetty/sys/modules/nfsserver/Makefile#4 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/modules/nfsserver/Makefile,v 1.28 2008/11/06 10:53:35 des Exp $ +# $FreeBSD: src/sys/modules/nfsserver/Makefile,v 1.29 2008/11/25 16:11:41 dfr Exp $ .PATH: ${.CURDIR}/../../nfsserver ${.CURDIR}/../../nfs KMOD= nfsserver @@ -6,6 +6,7 @@ nfs_fha.c nfs_serv.c nfs_srvkrpc.c nfs_srvsock.c nfs_srvcache.c \ nfs_srvsubs.c nfs_syscalls.c nfs_common.c \ opt_mac.h \ + opt_kgssapi.h \ opt_nfs.h SRCS+= opt_inet6.h
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200811251931.mAPJVZ5Z001775>