PERFORCE change 153551 for review
Ed Schouten
ed at FreeBSD.org
Tue Nov 25 11:31:35 PST 2008
http://perforce.freebsd.org/chv.cgi?CH=153551
Change 153551 by ed at 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 at 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
More information about the p4-projects
mailing list