PERFORCE change 125213 for review
Xin LI
delphij at FreeBSD.org
Thu Aug 16 05:34:40 PDT 2007
http://perforce.freebsd.org/chv.cgi?CH=125213
Change 125213 by delphij at tarsier on 2007/08/16 12:34:01
IFC
Affected files ...
.. //depot/projects/delphij_fork/sys/amd64/conf/NOTES#2 integrate
.. //depot/projects/delphij_fork/sys/amd64/include/specialreg.h#2 integrate
.. //depot/projects/delphij_fork/sys/compat/freebsd32/freebsd32_proto.h#3 integrate
.. //depot/projects/delphij_fork/sys/compat/freebsd32/freebsd32_syscall.h#3 integrate
.. //depot/projects/delphij_fork/sys/compat/freebsd32/freebsd32_syscalls.c#3 integrate
.. //depot/projects/delphij_fork/sys/compat/freebsd32/freebsd32_sysent.c#3 integrate
.. //depot/projects/delphij_fork/sys/compat/freebsd32/syscalls.master#3 integrate
.. //depot/projects/delphij_fork/sys/conf/files.amd64#3 integrate
.. //depot/projects/delphij_fork/sys/conf/files.i386#3 integrate
.. //depot/projects/delphij_fork/sys/dev/coretemp/coretemp.c#1 branch
.. //depot/projects/delphij_fork/sys/fs/msdosfs/msdosfs_vfsops.c#6 integrate
.. //depot/projects/delphij_fork/sys/fs/tmpfs/tmpfs_vnops.c#5 integrate
.. //depot/projects/delphij_fork/sys/gnu/fs/ext2fs/ext2_vfsops.c#3 integrate
.. //depot/projects/delphij_fork/sys/i386/conf/NOTES#2 integrate
.. //depot/projects/delphij_fork/sys/i386/include/specialreg.h#2 integrate
.. //depot/projects/delphij_fork/sys/kern/init_sysent.c#3 integrate
.. //depot/projects/delphij_fork/sys/kern/kern_thr.c#2 integrate
.. //depot/projects/delphij_fork/sys/kern/syscalls.c#3 integrate
.. //depot/projects/delphij_fork/sys/kern/syscalls.master#3 integrate
.. //depot/projects/delphij_fork/sys/kern/systrace_args.c#3 integrate
.. //depot/projects/delphij_fork/sys/kern/vfs_mount.c#4 integrate
.. //depot/projects/delphij_fork/sys/modules/Makefile#5 integrate
.. //depot/projects/delphij_fork/sys/modules/coretemp/Makefile#1 branch
.. //depot/projects/delphij_fork/sys/netinet/sctp_asconf.c#6 integrate
.. //depot/projects/delphij_fork/sys/netinet/sctp_input.c#7 integrate
.. //depot/projects/delphij_fork/sys/netinet/sctp_output.c#6 integrate
.. //depot/projects/delphij_fork/sys/netinet/sctp_pcb.c#6 integrate
.. //depot/projects/delphij_fork/sys/netinet/sctp_timer.c#5 integrate
.. //depot/projects/delphij_fork/sys/netinet/sctp_usrreq.c#7 integrate
.. //depot/projects/delphij_fork/sys/netinet/sctputil.c#6 integrate
.. //depot/projects/delphij_fork/sys/netinet/tcp_subr.c#5 integrate
.. //depot/projects/delphij_fork/sys/sys/syscall.h#3 integrate
.. //depot/projects/delphij_fork/sys/sys/syscall.mk#3 integrate
.. //depot/projects/delphij_fork/sys/sys/sysproto.h#3 integrate
.. //depot/projects/delphij_fork/sys/sys/thr.h#2 integrate
Differences ...
==== //depot/projects/delphij_fork/sys/amd64/conf/NOTES#2 (text+ko) ====
@@ -4,7 +4,7 @@
# This file contains machine dependent kernel configuration notes. For
# machine independent notes, look in /sys/conf/NOTES.
#
-# $FreeBSD: src/sys/amd64/conf/NOTES,v 1.68 2007/07/04 00:18:38 bz Exp $
+# $FreeBSD: src/sys/amd64/conf/NOTES,v 1.69 2007/08/15 19:26:02 des Exp $
#
#
@@ -446,6 +446,13 @@
#
device ichwd
+#
+# Temperature sensors:
+#
+# coretemp: on-die sensor on Intel Core and newer CPUs
+#
+device coretemp
+
#---------------------------------------------------------------------------
# ISDN4BSD
#
==== //depot/projects/delphij_fork/sys/amd64/include/specialreg.h#2 (text+ko) ====
@@ -27,7 +27,7 @@
* SUCH DAMAGE.
*
* from: @(#)specialreg.h 7.1 (Berkeley) 5/9/91
- * $FreeBSD: src/sys/amd64/include/specialreg.h,v 1.39 2007/05/31 11:26:44 des Exp $
+ * $FreeBSD: src/sys/amd64/include/specialreg.h,v 1.40 2007/08/15 19:26:01 des Exp $
*/
#ifndef _MACHINE_SPECIALREG_H_
@@ -179,6 +179,7 @@
#define MSR_BIOS_SIGN 0x08b
#define MSR_PERFCTR0 0x0c1
#define MSR_PERFCTR1 0x0c2
+#define MSR_IA32_EXT_CONFIG 0x0ee /* Undocumented. Core Solo/Duo only */
#define MSR_MTRRcap 0x0fe
#define MSR_BBL_CR_ADDR 0x116
#define MSR_BBL_CR_DECC 0x118
==== //depot/projects/delphij_fork/sys/compat/freebsd32/freebsd32_proto.h#3 (text+ko) ====
@@ -2,7 +2,7 @@
* System call prototypes.
*
* DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/compat/freebsd32/freebsd32_proto.h,v 1.77 2007/07/04 23:03:50 peter Exp $
+ * $FreeBSD: src/sys/compat/freebsd32/freebsd32_proto.h,v 1.78 2007/08/16 05:32:25 davidxu Exp $
* created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.90 2007/07/04 23:02:40 peter Exp
*/
==== //depot/projects/delphij_fork/sys/compat/freebsd32/freebsd32_syscall.h#3 (text+ko) ====
@@ -2,7 +2,7 @@
* System call numbers.
*
* DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscall.h,v 1.75 2007/07/04 23:03:50 peter Exp $
+ * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscall.h,v 1.76 2007/08/16 05:32:25 davidxu Exp $
* created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.90 2007/07/04 23:02:40 peter Exp
*/
@@ -337,4 +337,5 @@
#define FREEBSD32_SYS_freebsd32_lseek 478
#define FREEBSD32_SYS_freebsd32_truncate 479
#define FREEBSD32_SYS_freebsd32_ftruncate 480
-#define FREEBSD32_SYS_MAXSYSCALL 481
+#define FREEBSD32_SYS_thr_kill2 481
+#define FREEBSD32_SYS_MAXSYSCALL 482
==== //depot/projects/delphij_fork/sys/compat/freebsd32/freebsd32_syscalls.c#3 (text+ko) ====
@@ -2,7 +2,7 @@
* System call names.
*
* DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscalls.c,v 1.66 2007/07/04 23:03:50 peter Exp $
+ * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscalls.c,v 1.67 2007/08/16 05:32:25 davidxu Exp $
* created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.90 2007/07/04 23:02:40 peter Exp
*/
@@ -488,4 +488,5 @@
"freebsd32_lseek", /* 478 = freebsd32_lseek */
"freebsd32_truncate", /* 479 = freebsd32_truncate */
"freebsd32_ftruncate", /* 480 = freebsd32_ftruncate */
+ "thr_kill2", /* 481 = thr_kill2 */
};
==== //depot/projects/delphij_fork/sys/compat/freebsd32/freebsd32_sysent.c#3 (text+ko) ====
@@ -2,7 +2,7 @@
* System call switch table.
*
* DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/compat/freebsd32/freebsd32_sysent.c,v 1.76 2007/07/04 23:03:50 peter Exp $
+ * $FreeBSD: src/sys/compat/freebsd32/freebsd32_sysent.c,v 1.77 2007/08/16 05:32:25 davidxu Exp $
* created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.90 2007/07/04 23:02:40 peter Exp
*/
@@ -519,4 +519,5 @@
{ AS(freebsd32_lseek_args), (sy_call_t *)freebsd32_lseek, AUE_LSEEK, NULL, 0, 0 }, /* 478 = freebsd32_lseek */
{ AS(freebsd32_truncate_args), (sy_call_t *)freebsd32_truncate, AUE_TRUNCATE, NULL, 0, 0 }, /* 479 = freebsd32_truncate */
{ AS(freebsd32_ftruncate_args), (sy_call_t *)freebsd32_ftruncate, AUE_FTRUNCATE, NULL, 0, 0 }, /* 480 = freebsd32_ftruncate */
+ { AS(thr_kill2_args), (sy_call_t *)thr_kill2, AUE_KILL, NULL, 0, 0 }, /* 481 = thr_kill2 */
};
==== //depot/projects/delphij_fork/sys/compat/freebsd32/syscalls.master#3 (text+ko) ====
@@ -1,4 +1,4 @@
- $FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.90 2007/07/04 23:02:40 peter Exp $
+ $FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.91 2007/08/16 05:30:04 davidxu Exp $
; from: @(#)syscalls.master 8.2 (Berkeley) 1/13/94
; from: src/sys/kern/syscalls.master 1.107
;
@@ -794,3 +794,4 @@
u_int32_t lengthlo, u_int32_t lengthhi); }
480 AUE_FTRUNCATE STD { int freebsd32_ftruncate(int fd, \
u_int32_t lengthlo, u_int32_t lengthhi); }
+481 AUE_KILL NOPROTO { int thr_kill2(pid_t pid, long id, int sig); }
==== //depot/projects/delphij_fork/sys/conf/files.amd64#3 (text+ko) ====
@@ -1,7 +1,7 @@
# This file tells config what files go into building a kernel,
# files marked standard are always included.
#
-# $FreeBSD: src/sys/conf/files.amd64,v 1.106 2007/07/05 06:12:40 peter Exp $
+# $FreeBSD: src/sys/conf/files.amd64,v 1.107 2007/08/15 19:26:01 des Exp $
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
@@ -145,6 +145,7 @@
dev/atkbdc/atkbdc_isa.c optional atkbdc isa
dev/atkbdc/atkbdc_subr.c optional atkbdc
dev/atkbdc/psm.c optional psm atkbdc
+dev/coretemp/coretemp.c optional coretemp
# There are no systems with isa slots, so all ed isa entries should go..
dev/ed/if_ed_3c503.c optional ed isa ed_3c503
dev/ed/if_ed_isa.c optional ed isa
==== //depot/projects/delphij_fork/sys/conf/files.i386#3 (text+ko) ====
@@ -1,7 +1,7 @@
# This file tells config what files go into building a kernel,
# files marked standard are always included.
#
-# $FreeBSD: src/sys/conf/files.i386,v 1.579 2007/07/05 06:12:40 peter Exp $
+# $FreeBSD: src/sys/conf/files.i386,v 1.580 2007/08/15 19:26:01 des Exp $
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
@@ -158,6 +158,7 @@
dev/ce/if_ce.c optional ce
dev/ce/tau32-ddk.c optional ce
dev/cm/if_cm_isa.c optional cm isa
+dev/coretemp/coretemp.c optional coretemp
dev/cp/cpddk.c optional cp
dev/cp/if_cp.c optional cp
dev/ctau/ctau.c optional ctau
==== //depot/projects/delphij_fork/sys/fs/msdosfs/msdosfs_vfsops.c#6 (text+ko) ====
@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/fs/msdosfs/msdosfs_vfsops.c,v 1.173 2007/08/07 03:38:36 bde Exp $ */
+/* $FreeBSD: src/sys/fs/msdosfs/msdosfs_vfsops.c,v 1.174 2007/08/15 17:40:09 jhb Exp $ */
/* $NetBSD: msdosfs_vfsops.c,v 1.51 1997/11/17 15:36:58 ws Exp $ */
/*-
@@ -77,7 +77,7 @@
/* List of mount options we support */
static const char *msdosfs_opts[] = {
"from",
- "atime", "export", "force", "sync",
+ "noatime", "export", "force", "sync",
"uid", "gid", "mask", "dirmask",
"shortname", "shortnames", "longname", "longnames", "nowin95", "win95",
"kiconv", "cs_win", "cs_dos", "cs_local", "large",
==== //depot/projects/delphij_fork/sys/fs/tmpfs/tmpfs_vnops.c#5 (text+ko) ====
@@ -41,7 +41,7 @@
* tmpfs vnode interface.
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/fs/tmpfs/tmpfs_vnops.c,v 1.10 2007/08/10 11:00:30 delphij Exp $");
+__FBSDID("$FreeBSD: src/sys/fs/tmpfs/tmpfs_vnops.c,v 1.11 2007/08/16 11:00:07 delphij Exp $");
#include <sys/param.h>
#include <sys/fcntl.h>
@@ -1219,22 +1219,25 @@
startoff = uio->uio_offset;
- switch (startoff) {
- case TMPFS_DIRCOOKIE_DOT:
+ if (uio->uio_offset == TMPFS_DIRCOOKIE_DOT) {
error = tmpfs_dir_getdotdent(node, uio);
- if (error == 0)
- cnt++;
- break;
- case TMPFS_DIRCOOKIE_DOTDOT:
+ if (error != 0)
+ goto outok;
+ cnt++;
+ }
+
+ if (uio->uio_offset == TMPFS_DIRCOOKIE_DOTDOT) {
error = tmpfs_dir_getdotdotdent(node, uio);
- if (error == 0)
- cnt++;
- break;
- default:
- error = tmpfs_dir_getdents(node, uio, &cnt);
- MPASS(error >= -1);
+ if (error != 0)
+ goto outok;
+ cnt++;
}
+ error = tmpfs_dir_getdents(node, uio, &cnt);
+
+outok:
+ MPASS(error >= -1);
+
if (error == -1)
error = 0;
==== //depot/projects/delphij_fork/sys/gnu/fs/ext2fs/ext2_vfsops.c#3 (text+ko) ====
@@ -33,7 +33,7 @@
* SUCH DAMAGE.
*
* @(#)ffs_vfsops.c 8.8 (Berkeley) 4/18/94
- * $FreeBSD: src/sys/gnu/fs/ext2fs/ext2_vfsops.c,v 1.164 2007/07/14 21:18:19 rodrigc Exp $
+ * $FreeBSD: src/sys/gnu/fs/ext2fs/ext2_vfsops.c,v 1.165 2007/08/15 17:40:09 jhb Exp $
*/
/*-
@@ -118,8 +118,8 @@
struct ext2_super_block * es, struct ext2_sb_info * fs);
static const char *ext2_opts[] = { "from", "export", "union", "acls", "exec",
- "atime", "union", "suiddir", "multilabel", "symfollow", "clusterr",
- "clusterw", "force", NULL };
+ "noatime", "union", "suiddir", "multilabel", "nosymfollow",
+ "noclusterr", "noclusterw", "force", NULL };
/*
* VFS Operations.
==== //depot/projects/delphij_fork/sys/i386/conf/NOTES#2 (text+ko) ====
@@ -4,7 +4,7 @@
# This file contains machine dependent kernel configuration notes. For
# machine independent notes, look in /sys/conf/NOTES.
#
-# $FreeBSD: src/sys/i386/conf/NOTES,v 1.1243 2007/07/04 00:18:38 bz Exp $
+# $FreeBSD: src/sys/i386/conf/NOTES,v 1.1244 2007/08/15 19:26:03 des Exp $
#
#
@@ -853,6 +853,13 @@
#
device ichwd
+#
+# Temperature sensors:
+#
+# coretemp: on-die sensor on Intel Core and newer CPUs
+#
+device coretemp
+
#---------------------------------------------------------------------------
# ISDN4BSD
#
==== //depot/projects/delphij_fork/sys/i386/include/specialreg.h#2 (text+ko) ====
@@ -27,7 +27,7 @@
* SUCH DAMAGE.
*
* from: @(#)specialreg.h 7.1 (Berkeley) 5/9/91
- * $FreeBSD: src/sys/i386/include/specialreg.h,v 1.41 2007/05/31 11:26:45 des Exp $
+ * $FreeBSD: src/sys/i386/include/specialreg.h,v 1.42 2007/08/15 19:26:02 des Exp $
*/
#ifndef _MACHINE_SPECIALREG_H_
@@ -176,6 +176,7 @@
#define MSR_BIOS_SIGN 0x08b
#define MSR_PERFCTR0 0x0c1
#define MSR_PERFCTR1 0x0c2
+#define MSR_IA32_EXT_CONFIG 0x0ee /* Undocumented. Core Solo/Duo only */
#define MSR_MTRRcap 0x0fe
#define MSR_BBL_CR_ADDR 0x116
#define MSR_BBL_CR_DECC 0x118
==== //depot/projects/delphij_fork/sys/kern/init_sysent.c#3 (text+ko) ====
@@ -2,7 +2,7 @@
* System call switch table.
*
* DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/kern/init_sysent.c,v 1.229 2007/07/04 22:49:54 peter Exp $
+ * $FreeBSD: src/sys/kern/init_sysent.c,v 1.230 2007/08/16 05:32:25 davidxu Exp $
* created from FreeBSD: src/sys/kern/syscalls.master,v 1.232 2007/07/04 22:47:37 peter Exp
*/
@@ -510,4 +510,5 @@
{ AS(lseek_args), (sy_call_t *)lseek, AUE_LSEEK, NULL, 0, 0 }, /* 478 = lseek */
{ AS(truncate_args), (sy_call_t *)truncate, AUE_TRUNCATE, NULL, 0, 0 }, /* 479 = truncate */
{ AS(ftruncate_args), (sy_call_t *)ftruncate, AUE_FTRUNCATE, NULL, 0, 0 }, /* 480 = ftruncate */
+ { AS(thr_kill2_args), (sy_call_t *)thr_kill2, AUE_KILL, NULL, 0, 0 }, /* 481 = thr_kill2 */
};
==== //depot/projects/delphij_fork/sys/kern/kern_thr.c#2 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_thr.c,v 1.61 2007/06/07 19:45:19 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_thr.c,v 1.62 2007/08/16 05:26:41 davidxu Exp $");
#include "opt_compat.h"
#include "opt_posix.h"
@@ -53,6 +53,8 @@
#include <machine/frame.h>
+#include <security/audit/audit.h>
+
#ifdef COMPAT_IA32
extern struct sysentvec ia32_freebsd_sysvec;
@@ -337,6 +339,59 @@
}
int
+thr_kill2(struct thread *td, struct thr_kill2_args *uap)
+ /* pid_t pid, long id, int sig */
+{
+ struct thread *ttd;
+ struct proc *p;
+ int error;
+
+ AUDIT_ARG(signum, uap->sig);
+
+ if (uap->pid == td->td_proc->p_pid) {
+ p = td->td_proc;
+ PROC_LOCK(p);
+ } else if ((p = pfind(uap->pid)) == NULL) {
+ return (ESRCH);
+ }
+ AUDIT_ARG(process, p);
+
+ error = p_cansignal(td, p, uap->sig);
+ if (error == 0) {
+ if (uap->id == -1) {
+ if (uap->sig != 0 && !_SIG_VALID(uap->sig)) {
+ error = EINVAL;
+ } else {
+ error = ESRCH;
+ FOREACH_THREAD_IN_PROC(p, ttd) {
+ if (ttd != td) {
+ error = 0;
+ if (uap->sig == 0)
+ break;
+ tdsignal(p, ttd, uap->sig, NULL);
+ }
+ }
+ }
+ } else {
+ if (uap->id != td->td_tid)
+ ttd = thread_find(p, uap->id);
+ else
+ ttd = td;
+ if (ttd == NULL)
+ error = ESRCH;
+ else if (uap->sig == 0)
+ ;
+ else if (!_SIG_VALID(uap->sig))
+ error = EINVAL;
+ else
+ tdsignal(p, ttd, uap->sig, NULL);
+ }
+ }
+ PROC_UNLOCK(p);
+ return (error);
+}
+
+int
thr_suspend(struct thread *td, struct thr_suspend_args *uap)
/* const struct timespec *timeout */
{
==== //depot/projects/delphij_fork/sys/kern/syscalls.c#3 (text+ko) ====
@@ -2,7 +2,7 @@
* System call names.
*
* DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/kern/syscalls.c,v 1.213 2007/07/04 22:49:55 peter Exp $
+ * $FreeBSD: src/sys/kern/syscalls.c,v 1.214 2007/08/16 05:32:26 davidxu Exp $
* created from FreeBSD: src/sys/kern/syscalls.master,v 1.232 2007/07/04 22:47:37 peter Exp
*/
@@ -488,4 +488,5 @@
"lseek", /* 478 = lseek */
"truncate", /* 479 = truncate */
"ftruncate", /* 480 = ftruncate */
+ "thr_kill2", /* 481 = thr_kill2 */
};
==== //depot/projects/delphij_fork/sys/kern/syscalls.master#3 (text+ko) ====
@@ -1,4 +1,4 @@
- $FreeBSD: src/sys/kern/syscalls.master,v 1.232 2007/07/04 22:47:37 peter Exp $
+ $FreeBSD: src/sys/kern/syscalls.master,v 1.233 2007/08/16 05:26:41 davidxu Exp $
; from: @(#)syscalls.master 8.2 (Berkeley) 1/13/94
;
; System call name/number master file.
@@ -846,5 +846,6 @@
int whence); }
479 AUE_TRUNCATE STD { int truncate(char *path, off_t length); }
480 AUE_FTRUNCATE STD { int ftruncate(int fd, off_t length); }
+481 AUE_KILL STD { int thr_kill2(pid_t pid, long id, int sig); }
; Please copy any additions and changes to the following compatability tables:
; sys/compat/freebsd32/syscalls.master
==== //depot/projects/delphij_fork/sys/kern/systrace_args.c#3 (text+ko) ====
@@ -2,7 +2,7 @@
* System call argument to DTrace register array converstion.
*
* DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/kern/systrace_args.c,v 1.13 2007/07/04 22:49:55 peter Exp $
+ * $FreeBSD: src/sys/kern/systrace_args.c,v 1.14 2007/08/16 05:32:26 davidxu Exp $
* This file is part of the DTrace syscall provider.
*/
@@ -2862,6 +2862,15 @@
*n_args = 2;
break;
}
+ /* thr_kill2 */
+ case 481: {
+ struct thr_kill2_args *p = params;
+ iarg[0] = p->pid; /* pid_t */
+ iarg[1] = p->id; /* long */
+ iarg[2] = p->sig; /* int */
+ *n_args = 3;
+ break;
+ }
default:
*n_args = 0;
break;
==== //depot/projects/delphij_fork/sys/kern/vfs_mount.c#4 (text+ko) ====
@@ -35,7 +35,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/vfs_mount.c,v 1.263 2007/07/26 16:52:57 pjd Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/vfs_mount.c,v 1.264 2007/08/15 17:40:09 jhb Exp $");
#include <sys/param.h>
#include <sys/conf.h>
@@ -137,8 +137,8 @@
"rdonly",
"ro",
"rw",
- "suid",
- "exec",
+ "nosuid",
+ "noexec",
"update",
NULL
};
@@ -638,16 +638,40 @@
fsflags &= ~MNT_ASYNC;
else if (strcmp(opt->name, "noatime") == 0)
fsflags |= MNT_NOATIME;
+ else if (strcmp(opt->name, "atime") == 0) {
+ free(opt->name, M_MOUNT);
+ opt->name = strdup("nonoatime", M_MOUNT);
+ }
else if (strcmp(opt->name, "noclusterr") == 0)
fsflags |= MNT_NOCLUSTERR;
+ else if (strcmp(opt->name, "clusterr") == 0) {
+ free(opt->name, M_MOUNT);
+ opt->name = strdup("nonoclusterr", M_MOUNT);
+ }
else if (strcmp(opt->name, "noclusterw") == 0)
fsflags |= MNT_NOCLUSTERW;
+ else if (strcmp(opt->name, "clusterw") == 0) {
+ free(opt->name, M_MOUNT);
+ opt->name = strdup("nonoclusterw", M_MOUNT);
+ }
else if (strcmp(opt->name, "noexec") == 0)
fsflags |= MNT_NOEXEC;
+ else if (strcmp(opt->name, "exec") == 0) {
+ free(opt->name, M_MOUNT);
+ opt->name = strdup("nonoexec", M_MOUNT);
+ }
else if (strcmp(opt->name, "nosuid") == 0)
fsflags |= MNT_NOSUID;
+ else if (strcmp(opt->name, "suid") == 0) {
+ free(opt->name, M_MOUNT);
+ opt->name = strdup("nonosuid", M_MOUNT);
+ }
else if (strcmp(opt->name, "nosymfollow") == 0)
fsflags |= MNT_NOSYMFOLLOW;
+ else if (strcmp(opt->name, "symfollow") == 0) {
+ free(opt->name, M_MOUNT);
+ opt->name = strdup("nonosymfollow", M_MOUNT);
+ }
else if (strcmp(opt->name, "noro") == 0) {
fsflags &= ~MNT_RDONLY;
has_noro = 1;
@@ -1760,26 +1784,47 @@
vfs_filteropt(struct vfsoptlist *opts, const char **legal)
{
struct vfsopt *opt;
- const char **t, *p;
+ char errmsg[255];
+ const char **t, *p, *q;
+ int ret = 0;
TAILQ_FOREACH(opt, opts, link) {
p = opt->name;
+ q = NULL;
if (p[0] == 'n' && p[1] == 'o')
- p += 2;
- for(t = global_opts; *t != NULL; t++)
- if (!strcmp(*t, p))
+ q = p + 2;
+ for(t = global_opts; *t != NULL; t++) {
+ if (strcmp(*t, p) == 0)
break;
+ if (q != NULL) {
+ if (strcmp(*t, q) == 0)
+ break;
+ }
+ }
if (*t != NULL)
continue;
- for(t = legal; *t != NULL; t++)
- if (!strcmp(*t, p))
+ for(t = legal; *t != NULL; t++) {
+ if (strcmp(*t, p) == 0)
break;
+ if (q != NULL) {
+ if (strcmp(*t, q) == 0)
+ break;
+ }
+ }
if (*t != NULL)
continue;
- printf("mount option <%s> is unknown\n", p);
- return (EINVAL);
+ sprintf(errmsg, "mount option <%s> is unknown", p);
+ printf("%s\n", errmsg);
+ ret = EINVAL;
+ }
+ if (ret != 0) {
+ TAILQ_FOREACH(opt, opts, link) {
+ if (strcmp(opt->name, "errmsg") == 0) {
+ strncpy((char *)opt->value, errmsg, opt->len);
+ }
+ }
}
- return (0);
+ return (ret);
}
/*
==== //depot/projects/delphij_fork/sys/modules/Makefile#5 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/modules/Makefile,v 1.538 2007/07/24 16:58:18 scottl Exp $
+# $FreeBSD: src/sys/modules/Makefile,v 1.539 2007/08/15 19:26:02 des Exp $
.include <bsd.own.mk>
@@ -54,6 +54,7 @@
coda \
coda5 \
${_coff} \
+ ${_coretemp} \
${_cp} \
${_cpufreq} \
${_crypto} \
@@ -370,6 +371,7 @@
_cbb= cbb
_ce= ce
_coff= coff
+_coretemp= coretemp
_cp= cp
_cpufreq= cpufreq
_cs= cs
@@ -489,6 +491,7 @@
_cardbus= cardbus
_cbb= cbb
_ciss= ciss
+_coretemp= coretemp
_cpufreq= cpufreq
_digi= digi
_drm= drm
==== //depot/projects/delphij_fork/sys/netinet/sctp_asconf.c#6 (text+ko) ====
@@ -31,7 +31,7 @@
/* $KAME: sctp_asconf.c,v 1.24 2005/03/06 16:04:16 itojun Exp $ */
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/netinet/sctp_asconf.c,v 1.23 2007/07/24 20:06:01 rrs Exp $");
+__FBSDID("$FreeBSD: src/sys/netinet/sctp_asconf.c,v 1.24 2007/08/16 01:51:22 rrs Exp $");
#include <netinet/sctp_os.h>
#include <netinet/sctp_var.h>
#include <netinet/sctp_sysctl.h>
@@ -872,6 +872,47 @@
}
/*
+ * cleanup any cached source addresses that may be topologically
+ * incorrect after a new address has been added to this interface.
+ */
+static void
+sctp_asconf_nets_cleanup(struct sctp_tcb *stcb, struct sctp_ifn *ifn)
+{
+ struct sctp_nets *net;
+
+ /*
+ * Ideally, we want to only clear cached routes and source addresses
+ * that are topologically incorrect. But since there is no easy way
+ * to know whether the newly added address on the ifn would cause a
+ * routing change (i.e. a new egress interface would be chosen)
+ * without doing a new routing lookup and source address selection,
+ * we will (for now) just flush any cached route using a different
+ * ifn (and cached source addrs) and let output re-choose them
+ * during the next send on that net.
+ */
+ TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) {
+ /*
+ * clear any cached route (and cached source address) if the
+ * route's interface is NOT the same as the address change.
+ * If it's the same interface, just clear the cached source
+ * address.
+ */
+ if (SCTP_ROUTE_HAS_VALID_IFN(&net->ro) &&
+ SCTP_GET_IF_INDEX_FROM_ROUTE(&net->ro) != ifn->ifn_index) {
+ /* clear any cached route */
+ RTFREE(net->ro.ro_rt);
+ net->ro.ro_rt = NULL;
+ }
+ /* clear any cached source address */
+ if (net->src_addr_selected) {
+ sctp_free_ifa(net->ro._s_addr);
+ net->ro._s_addr = NULL;
+ net->src_addr_selected = 0;
+ }
+ }
+}
+
+/*
* process an ADD/DELETE IP ack from peer.
* addr: corresponding sctp_ifa to the address being added/deleted.
* type: SCTP_ADD_IP_ADDRESS or SCTP_DEL_IP_ADDRESS.
@@ -883,8 +924,8 @@
{
/*
* do the necessary asoc list work- if we get a failure indication,
- * leave the address on the "do not use" asoc list if we get a
- * success indication, remove the address from the list
+ * leave the address on the assoc's restricted list. If we get a
+ * success indication, remove the address from the restricted list.
*/
/*
* Note: this will only occur for ADD_IP_ADDRESS, since
@@ -893,6 +934,12 @@
if (flag) {
/* success case, so remove from the restricted list */
sctp_del_local_addr_restricted(stcb, addr);
+
+ /*
+ * clear any cached, topologically incorrect source
+ * addresses
+ */
+ sctp_asconf_nets_cleanup(stcb, addr->ifn_p);
}
/* else, leave it on the list */
}
==== //depot/projects/delphij_fork/sys/netinet/sctp_input.c#7 (text+ko) ====
@@ -31,7 +31,7 @@
/* $KAME: sctp_input.c,v 1.27 2005/03/06 16:04:17 itojun Exp $ */
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/netinet/sctp_input.c,v 1.55 2007/08/06 15:46:46 rrs Exp $");
+__FBSDID("$FreeBSD: src/sys/netinet/sctp_input.c,v 1.56 2007/08/16 01:51:22 rrs Exp $");
#include <netinet/sctp_os.h>
#include <netinet/sctp_var.h>
@@ -2186,16 +2186,13 @@
return (m);
}
oso = (*inp_p)->sctp_socket;
- /*
- * We do this to keep the sockets side happy durin
- * the sonewcon ONLY.
- */
+ atomic_add_int(&(*stcb)->asoc.refcnt, 1);
SCTP_TCB_UNLOCK((*stcb));
so = sonewconn(oso, 0
);
- SCTP_INP_WLOCK((*stcb)->sctp_ep);
SCTP_TCB_LOCK((*stcb));
- SCTP_INP_WUNLOCK((*stcb)->sctp_ep);
+ atomic_subtract_int(&(*stcb)->asoc.refcnt, 1);
+
if (so == NULL) {
struct mbuf *op_err;
@@ -3968,7 +3965,6 @@
SCTP_TCB_UNLOCK(locked_tcb);
}
return (NULL);
-
}
if (netp && *netp) {
int abort_flag = 0;
==== //depot/projects/delphij_fork/sys/netinet/sctp_output.c#6 (text+ko) ====
@@ -31,7 +31,7 @@
/* $KAME: sctp_output.c,v 1.46 2005/03/06 16:04:17 itojun Exp $ */
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/netinet/sctp_output.c,v 1.48 2007/07/24 20:06:01 rrs Exp $");
+__FBSDID("$FreeBSD: src/sys/netinet/sctp_output.c,v 1.49 2007/08/16 01:51:22 rrs Exp $");
#include <netinet/sctp_os.h>
#include <sys/proc.h>
@@ -2692,11 +2692,11 @@
uint32_t ifn_index;
struct sctp_vrf *vrf;
- /*
- * For boundall we can use any address in the association. If
- * non_asoc_addr_ok is set we can use any address (at least in
- * theory). So we look for preferred addresses first. If we find
- * one, we use it. Otherwise we next try to get an address on the
+ /*-
+ * For boundall we can use any address in the association.
+ * If non_asoc_addr_ok is set we can use any address (at least in
+ * theory). So we look for preferred addresses first. If we find one,
+ * we use it. Otherwise we next try to get an address on the
* interface, which we should be able to do (unless non_asoc_addr_ok
* is false and we are routed out that way). In these cases where we
* can't use the address of the interface we go through all the
@@ -2898,43 +2898,51 @@
struct sctp_nets *net,
int non_asoc_addr_ok, uint32_t vrf_id)
{
-
struct sockaddr_in *to = (struct sockaddr_in *)&ro->ro_dst;
struct sockaddr_in6 *to6 = (struct sockaddr_in6 *)&ro->ro_dst;
struct sctp_ifa *answer;
uint8_t dest_is_priv, dest_is_loop;
sa_family_t fam;
- /*
+ /*-
* Rules: - Find the route if needed, cache if I can. - Look at
* interface address in route, Is it in the bound list. If so we
* have the best source. - If not we must rotate amongst the
* addresses.
- *
+ *
* Cavets and issues
- *
+ *
* Do we need to pay attention to scope. We can have a private address
* or a global address we are sourcing or sending to. So if we draw
- * it out zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
- * For V4 ------------------------------------------ source *
- * dest * result ----------------------------------------- <a>
- * Private * Global * NAT
- * ----------------------------------------- <b> Private *
- * Private * No problem -----------------------------------------
- * <c> Global * Private * Huh, How will this work?
- * ----------------------------------------- <d> Global *
- * Global * No Problem ------------------------------------------
- * zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz For V6
- * ------------------------------------------ source * dest *
- * result ----------------------------------------- <a> Linklocal *
- * Global * ----------------------------------------- <b>
- * Linklocal * Linklocal * No problem
- * ----------------------------------------- <c> Global *
- * Linklocal * Huh, How will this work?
- * ----------------------------------------- <d> Global *
- * Global * No Problem ------------------------------------------
+ * it out
+ * zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
+ * For V4
+ *------------------------------------------
+ * source * dest * result
+ * -----------------------------------------
+ * <a> Private * Global * NAT
+ * -----------------------------------------
+ * <b> Private * Private * No problem
+ * -----------------------------------------
+ * <c> Global * Private * Huh, How will this work?
+ * -----------------------------------------
+ * <d> Global * Global * No Problem
+ *------------------------------------------
+ * zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
+ * For V6
+ *------------------------------------------
+ * source * dest * result
+ * -----------------------------------------
+ * <a> Linklocal * Global *
+ * -----------------------------------------
+ * <b> Linklocal * Linklocal * No problem
+ * -----------------------------------------
+ * <c> Global * Linklocal * Huh, How will this work?
+ * -----------------------------------------
+ * <d> Global * Global * No Problem
+ *------------------------------------------
* zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
- *
+ *
* And then we add to that what happens if there are multiple addresses
* assigned to an interface. Remember the ifa on a ifn is a linked
* list of addresses. So one interface can have more than one IP
@@ -2943,18 +2951,20 @@
* one is best? And what about NAT's sending P->G may get you a NAT
* translation, or should you select the G thats on the interface in
* preference.
- *
+ *
* Decisions:
- *
- * - count the number of addresses on the interface. - if it is one, no
- * problem except case <c>. For <a> we will assume a NAT out there.
+ *
+ * - count the number of addresses on the interface.
+ * - if it is one, no problem except case <c>.
+ * For <a> we will assume a NAT out there.
* - if there are more than one, then we need to worry about scope P
- * or G. We should prefer G -> G and P -> P if possible. Then as a
- * secondary fall back to mixed types G->P being a last ditch one. -
- * The above all works for bound all, but bound specific we need to
- * use the same concept but instead only consider the bound
- * addresses. If the bound set is NOT assigned to the interface then
- * we must use rotation amongst the bound addresses..
+ * or G. We should prefer G -> G and P -> P if possible.
+ * Then as a secondary fall back to mixed types G->P being a last
+ * ditch one.
+ * - The above all works for bound all, but bound specific we need to
+ * use the same concept but instead only consider the bound
+ * addresses. If the bound set is NOT assigned to the interface then
+ * we must use rotation amongst the bound addresses..
*/
if (ro->ro_rt == NULL) {
/*
@@ -11535,7 +11545,6 @@
if ((net->flight_size > net->cwnd) &&
(sctp_cmt_on_off == 0)) {
queue_only = 1;
-
} else if (asoc->ifp_had_enobuf) {
SCTP_STAT_INCR(sctps_ifnomemqueued);
if (net->flight_size > (net->mtu * 2)) {
@@ -11624,7 +11633,6 @@
sctp_chunk_output(inp,
stcb,
SCTP_OUTPUT_FROM_USR_SEND);
-
}
} else {
sctp_chunk_output(inp,
@@ -11835,7 +11843,6 @@
(stcb->asoc.total_flight > 0) &&
(un_sent < (int)(stcb->asoc.smallest_mtu - SCTP_MIN_OVERHEAD))
) {
-
/*-
* Ok, Nagle is set on and we have data outstanding.
* Don't send anything and let SACKs drive out the
==== //depot/projects/delphij_fork/sys/netinet/sctp_pcb.c#6 (text+ko) ====
@@ -31,7 +31,7 @@
/* $KAME: sctp_pcb.c,v 1.38 2005/03/06 16:04:18 itojun Exp $ */
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/netinet/sctp_pcb.c,v 1.51 2007/07/24 20:06:01 rrs Exp $");
+__FBSDID("$FreeBSD: src/sys/netinet/sctp_pcb.c,v 1.52 2007/08/16 01:51:22 rrs Exp $");
#include <netinet/sctp_os.h>
#include <sys/proc.h>
@@ -1263,7 +1263,6 @@
/* Find the head of the ALLADDR chain */
if (have_lock == 0) {
SCTP_INP_INFO_RLOCK();
-
}
head = &sctppcbinfo.sctp_ephash[SCTP_PCBHASH_ALLADDR(lport,
sctppcbinfo.hashmark)];
@@ -3785,7 +3784,7 @@
/* Held for PD-API clear that. */
sq->pdapi_aborted = 1;
sq->held_length = 0;
- if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_PDAPIEVNT)) {
+ if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_PDAPIEVNT) && (so != NULL)) {
/*
* Need to add a PD-API
* aborted indication.
@@ -3917,7 +3916,6 @@
LIST_REMOVE(stcb, sctp_asocs);
sctp_add_vtag_to_timewait(inp, asoc->my_vtag, SCTP_TIME_WAIT);
-
/*
* Now restop the timers to be sure - this is paranoia at is finest!
*/
@@ -3929,7 +3927,6 @@
(void)SCTP_OS_TIMER_STOP(&asoc->shut_guard_timer.timer);
(void)SCTP_OS_TIMER_STOP(&asoc->autoclose_timer.timer);
(void)SCTP_OS_TIMER_STOP(&asoc->delayed_event_timer.timer);
-
TAILQ_FOREACH(net, &asoc->nets, sctp_next) {
(void)SCTP_OS_TIMER_STOP(&net->fr_timer.timer);
(void)SCTP_OS_TIMER_STOP(&net->rxt_timer.timer);
==== //depot/projects/delphij_fork/sys/netinet/sctp_timer.c#5 (text+ko) ====
@@ -31,7 +31,7 @@
/* $KAME: sctp_timer.c,v 1.29 2005/03/06 16:04:18 itojun Exp $ */
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/netinet/sctp_timer.c,v 1.25 2007/07/24 20:06:02 rrs Exp $");
+__FBSDID("$FreeBSD: src/sys/netinet/sctp_timer.c,v 1.26 2007/08/16 01:51:22 rrs Exp $");
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list