PERFORCE change 149503 for review

Oleksandr Tymoshenko gonzo at FreeBSD.org
Wed Sep 10 00:46:56 UTC 2008


http://perforce.freebsd.org/chv.cgi?CH=149503

Change 149503 by gonzo at gonzo_jeeves on 2008/09/10 00:46:07

	One more IFC in order to generate new mips2 patchset

Affected files ...

.. //depot/projects/mips2/src/bin/cp/utils.c#5 integrate
.. //depot/projects/mips2/src/etc/rc.initdiskless#4 integrate
.. //depot/projects/mips2/src/include/rpc/svc_auth.h#2 integrate
.. //depot/projects/mips2/src/lib/libc/gen/arc4random.c#5 integrate
.. //depot/projects/mips2/src/lib/libc/rpc/svc.c#3 integrate
.. //depot/projects/mips2/src/lib/libc/rpc/svc_auth.c#3 integrate
.. //depot/projects/mips2/src/lib/libthr/thread/thr_exit.c#10 integrate
.. //depot/projects/mips2/src/sys/compat/linux/linux_file.c#12 integrate
.. //depot/projects/mips2/src/sys/compat/linux/linux_socket.c#7 integrate
.. //depot/projects/mips2/src/sys/dev/ath/if_athvar.h#6 integrate
.. //depot/projects/mips2/src/sys/dev/drm/ati_pcigart.c#4 integrate
.. //depot/projects/mips2/src/sys/dev/jme/if_jme.c#3 integrate
.. //depot/projects/mips2/src/sys/dev/jme/if_jmereg.h#2 integrate
.. //depot/projects/mips2/src/sys/dev/usb/usb_quirks.c#8 integrate
.. //depot/projects/mips2/src/sys/dev/usb/usbdevs#22 integrate
.. //depot/projects/mips2/src/sys/netinet/tcp_input.c#15 integrate

Differences ...

==== //depot/projects/mips2/src/bin/cp/utils.c#5 (text+ko) ====

@@ -33,7 +33,7 @@
 #endif
 #endif /* not lint */
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/bin/cp/utils.c,v 1.54 2008/08/07 07:29:26 trasz Exp $");
+__FBSDID("$FreeBSD: src/bin/cp/utils.c,v 1.55 2008/09/09 12:31:42 trasz Exp $");
 
 #include <sys/types.h>
 #include <sys/acl.h>
@@ -224,7 +224,6 @@
 			rval = 1;
 		if (pflag && preserve_fd_acls(from_fd, to_fd) != 0)
 			rval = 1;
-		(void)close(from_fd);
 		if (close(to_fd)) {
 			warn("%s", to.p_path);
 			rval = 1;

==== //depot/projects/mips2/src/etc/rc.initdiskless#4 (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/rc.initdiskless,v 1.53 2008/05/15 11:00:23 bms Exp $
+# $FreeBSD: src/etc/rc.initdiskless,v 1.54 2008/09/09 18:40:50 bms Exp $
 
 # On entry to this script the entire system consists of a read-only root
 # mounted via NFS. The kernel has run BOOTP and configured an interface
@@ -73,6 +73,16 @@
 #		If this file exists, then failure to execute the mount
 #		command contained in /conf/T/M/remount is non-fatal.
 #
+# /conf/T/M/remount_subdir
+#		If this file exists, then the behaviour of /conf/T/M/remount
+#		changes as follows:
+#		 1. /conf/T/M/remount is invoked to mount the root of the
+#		    filesystem where the configuration data exists on a
+#		    temporary mountpoint.
+#		 2. /conf/T/M/remount_subdir is then invoked to mount a
+#		    *subdirectory* of the filesystem mounted by
+#		    /conf/T/M/remount on /conf/T/M/.
+#
 # /conf/T/M/diskless_remount
 #		The contents of the file points to an NFS filesystem,
 #		possibly followed by mount_nfs options. If the server name
@@ -296,10 +306,33 @@
 
 	# remount. Beware, the command is in the file itself!
 	if [ -f $j/remount ]; then
-	    nfspt=`/bin/cat $j/remount`
-	    $nfspt $j
-	    chkerr $? "$nfspt $j"
-	    to_umount="$j ${to_umount}" # XXX hope it is really a mount!
+	    if [ -f $j/remount_subdir ]; then
+		k="/conf.tmp/$i/$subdir"
+		[ -d $k ] || continue
+
+		# Mount the filesystem root where the config data is
+		# on the temporary mount point.
+		nfspt=`/bin/cat $j/remount`
+		$nfspt $k
+		chkerr $? "$nfspt $k"
+
+		# Now use a nullfs mount to get the data where we
+		# really want to see it.
+		remount_subdir=`/bin/cat $j/remount_subdir`
+		remount_subdir_cmd="mount -t nullfs $k/$remount_subdir"
+
+		$remount_subdir_cmd $j
+		chkerr $? "$remount_subdir_cmd $j"
+
+		# XXX check order -- we must force $k to be unmounted
+		# after j, as j depends on k.
+		to_umount="$j $k ${to_umount}"
+	    else
+		nfspt=`/bin/cat $j/remount`
+		$nfspt $j
+		chkerr $? "$nfspt $j"
+		to_umount="$j ${to_umount}" # XXX hope it is really a mount!
+	    fi
 	fi
 
 	# NFS remount

==== //depot/projects/mips2/src/include/rpc/svc_auth.h#2 (text+ko) ====

@@ -30,7 +30,7 @@
  *
  *	from: @(#)svc_auth.h 1.6 86/07/16 SMI
  *	@(#)svc_auth.h	2.1 88/07/29 4.0 RPCSRC
- * $FreeBSD: src/include/rpc/svc_auth.h,v 1.14 2002/03/23 17:24:55 imp Exp $
+ * $FreeBSD: src/include/rpc/svc_auth.h,v 1.15 2008/09/09 14:15:55 dfr Exp $
  */
 
 /*
@@ -46,6 +46,8 @@
  * Server side authenticator
  */
 __BEGIN_DECLS
+extern struct svc_auth_ops svc_auth_null_ops;
+
 extern enum auth_stat _authenticate(struct svc_req *, struct rpc_msg *);
 extern int svc_auth_reg(int, enum auth_stat (*)(struct svc_req *,
 			  struct rpc_msg *));

==== //depot/projects/mips2/src/lib/libc/gen/arc4random.c#5 (text+ko) ====

@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libc/gen/arc4random.c,v 1.24 2008/08/03 20:15:22 ache Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/gen/arc4random.c,v 1.25 2008/09/09 09:46:36 ache Exp $");
 
 #include "namespace.h"
 #include <sys/types.h>
@@ -54,7 +54,7 @@
 
 static pthread_mutex_t	arc4random_mtx = PTHREAD_MUTEX_INITIALIZER;
 
-#define	RANDOMDEV	"/dev/urandom"
+#define	RANDOMDEV	"/dev/random"
 #define KEYSIZE		128
 #define	THREAD_LOCK()						\
 	do {							\
@@ -193,6 +193,7 @@
 	THREAD_LOCK();
 	arc4_check_init();
 	arc4_stir();
+	rs_stired = 1;
 	THREAD_UNLOCK();
 }
 

==== //depot/projects/mips2/src/lib/libc/rpc/svc.c#3 (text+ko) ====

@@ -34,7 +34,7 @@
 static char *sccsid = "@(#)svc.c	2.4 88/08/11 4.0 RPCSRC";
 #endif
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libc/rpc/svc.c,v 1.25 2008/08/06 14:02:05 dfr Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/rpc/svc.c,v 1.26 2008/09/09 14:15:55 dfr Exp $");
 
 /*
  * svc.c, Server-side remote procedure call interface.
@@ -569,6 +569,7 @@
 	ext = mem_alloc(sizeof(SVCXPRT_EXT));
 	memset(ext, 0, sizeof(SVCXPRT_EXT));
 	xprt->xp_p3 = ext;
+	ext->xp_auth.svc_ah_ops = &svc_auth_null_ops;
 
 	return (xprt);
 }

==== //depot/projects/mips2/src/lib/libc/rpc/svc_auth.c#3 (text+ko) ====

@@ -37,7 +37,7 @@
 static char sccsid[] = "@(#)svc_auth.c 1.26 89/02/07 Copyr 1984 Sun Micro";
 #endif
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libc/rpc/svc_auth.c,v 1.14 2008/08/06 14:02:05 dfr Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/rpc/svc_auth.c,v 1.15 2008/09/09 14:15:55 dfr Exp $");
 
 /*
  * svc_auth.c, Server-side rpc authenticator interface.
@@ -75,7 +75,7 @@
 };
 static struct authsvc *Auths = NULL;
 
-static struct svc_auth_ops svc_auth_null_ops;
+struct svc_auth_ops svc_auth_null_ops;
 
 /*
  * The call rpc message, msg has been obtained from the wire.  The msg contains
@@ -162,7 +162,7 @@
 	return (xdr_func(xdrs, xdr_ptr));
 }
 
-static struct svc_auth_ops svc_auth_null_ops = {
+struct svc_auth_ops svc_auth_null_ops = {
 	svcauth_null_wrap,
 	svcauth_null_wrap,
 };

==== //depot/projects/mips2/src/lib/libthr/thread/thr_exit.c#10 (text+ko) ====

@@ -26,7 +26,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/lib/libthr/thread/thr_exit.c,v 1.30 2008/08/27 02:00:53 jasone Exp $
+ * $FreeBSD: src/lib/libthr/thread/thr_exit.c,v 1.31 2008/09/09 17:14:32 jasone Exp $
  */
 
 #include "namespace.h"
@@ -96,9 +96,6 @@
 		_thread_cleanupspecific();
 	}
 
-	/* Tell malloc that the thread is exiting. */
-	_malloc_thread_cleanup();
-
 	if (!_thr_isthreaded())
 		exit(0);
 
@@ -109,6 +106,12 @@
 		exit(0);
 		/* Never reach! */
 	}
+	THREAD_LIST_UNLOCK(curthread);
+
+	/* Tell malloc that the thread is exiting. */
+	_malloc_thread_cleanup();
+
+	THREAD_LIST_LOCK(curthread);
 	THR_LOCK(curthread);
 	curthread->state = PS_DEAD;
 	if (curthread->flags & THR_FLAGS_NEED_SUSPEND) {

==== //depot/projects/mips2/src/sys/compat/linux/linux_file.c#12 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linux/linux_file.c,v 1.114 2008/06/08 11:09:25 rdivacky Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linux/linux_file.c,v 1.115 2008/09/09 16:00:17 rdivacky Exp $");
 
 #include "opt_compat.h"
 #include "opt_mac.h"
@@ -303,9 +303,20 @@
 	char		d_name[LINUX_NAME_MAX + 1];
 };
 
-#define LINUX_RECLEN(de,namlen) \
-    ALIGN((((char *)&(de)->d_name - (char *)de) + (namlen) + 1))
+/*
+ * Linux uses the last byte in the dirent buffer to store d_type,
+ * at least glibc-2.7 requires it. That is why l_dirent is padded with 2 bytes.
+ */
+#define LINUX_RECLEN(namlen)						\
+    roundup((offsetof(struct l_dirent, d_name) + (namlen) + 2),		\
+    sizeof(l_ulong))
+
+#define LINUX_RECLEN64(namlen)						\
+    roundup((offsetof(struct l_dirent64, d_name) + (namlen) + 1),	\
+    sizeof(uint64_t))
 
+#define LINUX_MAXRECLEN		max(LINUX_RECLEN(LINUX_NAME_MAX),	\
+				    LINUX_RECLEN64(LINUX_NAME_MAX))
 #define	LINUX_DIRBLKSIZ		512
 
 static int
@@ -318,12 +329,13 @@
 	int len, reclen;		/* BSD-format */
 	caddr_t outp;			/* Linux-format */
 	int resid, linuxreclen=0;	/* Linux-format */
+	caddr_t lbuf;			/* Linux-format */
 	struct file *fp;
 	struct uio auio;
 	struct iovec aiov;
 	off_t off;
-	struct l_dirent linux_dirent;
-	struct l_dirent64 linux_dirent64;
+	struct l_dirent *linux_dirent;
+	struct l_dirent64 *linux_dirent64;
 	int buflen, error, eofflag, nbytes, justone;
 	u_long *cookies = NULL, *cookiep;
 	int ncookies, vfslocked;
@@ -359,6 +371,7 @@
 	buflen = max(LINUX_DIRBLKSIZ, nbytes);
 	buflen = min(buflen, MAXBSIZE);
 	buf = malloc(buflen, M_TEMP, M_WAITOK);
+	lbuf = malloc(LINUX_MAXRECLEN, M_TEMP, M_WAITOK | M_ZERO);
 	vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
 
 again:
@@ -436,8 +449,8 @@
 		}
 
 		linuxreclen = (is64bit)
-		    ? LINUX_RECLEN(&linux_dirent64, bdp->d_namlen)
-		    : LINUX_RECLEN(&linux_dirent, bdp->d_namlen);
+		    ? LINUX_RECLEN64(bdp->d_namlen)
+		    : LINUX_RECLEN(bdp->d_namlen);
 
 		if (reclen > len || resid < linuxreclen) {
 			outp++;
@@ -446,34 +459,41 @@
 
 		if (justone) {
 			/* readdir(2) case. */
-			linux_dirent.d_ino = bdp->d_fileno;
-			linux_dirent.d_off = (l_off_t)linuxreclen;
-			linux_dirent.d_reclen = (l_ushort)bdp->d_namlen;
-			strcpy(linux_dirent.d_name, bdp->d_name);
-			error = copyout(&linux_dirent, outp, linuxreclen);
-		} else {
-			if (is64bit) {
-				linux_dirent64.d_ino = bdp->d_fileno;
-				linux_dirent64.d_off = (cookiep)
-				    ? (l_off_t)*cookiep
-				    : (l_off_t)(off + reclen);
-				linux_dirent64.d_reclen =
-				    (l_ushort)linuxreclen;
-				linux_dirent64.d_type = bdp->d_type;
-				strcpy(linux_dirent64.d_name, bdp->d_name);
-				error = copyout(&linux_dirent64, outp,
-				    linuxreclen);
-			} else {
-				linux_dirent.d_ino = bdp->d_fileno;
-				linux_dirent.d_off = (cookiep)
-				    ? (l_off_t)*cookiep
-				    : (l_off_t)(off + reclen);
-				linux_dirent.d_reclen = (l_ushort)linuxreclen;
-				strcpy(linux_dirent.d_name, bdp->d_name);
-				error = copyout(&linux_dirent, outp,
-				    linuxreclen);
-			}
+			linux_dirent = (struct l_dirent*)lbuf;
+			linux_dirent->d_ino = bdp->d_fileno;
+			linux_dirent->d_off = (l_off_t)linuxreclen;
+			linux_dirent->d_reclen = (l_ushort)bdp->d_namlen;
+			strlcpy(linux_dirent->d_name, bdp->d_name,
+			    linuxreclen - offsetof(struct l_dirent, d_name));
+			error = copyout(linux_dirent, outp, linuxreclen);
+		}
+		if (is64bit) {
+			linux_dirent64 = (struct l_dirent64*)lbuf;
+			linux_dirent64->d_ino = bdp->d_fileno;
+			linux_dirent64->d_off = (cookiep)
+			    ? (l_off_t)*cookiep
+			    : (l_off_t)(off + reclen);
+			linux_dirent64->d_reclen = (l_ushort)linuxreclen;
+			linux_dirent64->d_type = bdp->d_type;
+			strlcpy(linux_dirent64->d_name, bdp->d_name,
+			    linuxreclen - offsetof(struct l_dirent64, d_name));
+			error = copyout(linux_dirent64, outp, linuxreclen);
+		} else if (!justone) {
+			linux_dirent = (struct l_dirent*)lbuf;
+			linux_dirent->d_ino = bdp->d_fileno;
+			linux_dirent->d_off = (cookiep)
+			    ? (l_off_t)*cookiep
+			    : (l_off_t)(off + reclen);
+			linux_dirent->d_reclen = (l_ushort)linuxreclen;
+			/*
+			 * Copy d_type to last byte of l_dirent buffer
+			 */
+			lbuf[linuxreclen-1] = bdp->d_type;
+			strlcpy(linux_dirent->d_name, bdp->d_name,
+			    linuxreclen - offsetof(struct l_dirent, d_name)-1);
+			error = copyout(linux_dirent, outp, linuxreclen);
 		}
+
 		if (error)
 			goto out;
 
@@ -509,6 +529,7 @@
 	VFS_UNLOCK_GIANT(vfslocked);
 	fdrop(fp, td);
 	free(buf, M_TEMP);
+	free(lbuf, M_TEMP);
 	return (error);
 }
 

==== //depot/projects/mips2/src/sys/compat/linux/linux_socket.c#7 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linux/linux_socket.c,v 1.75 2008/08/17 23:27:27 bz Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linux/linux_socket.c,v 1.76 2008/09/09 13:01:14 kib Exp $");
 
 /* XXX we use functions that might not exist. */
 #include "opt_compat.h"
@@ -546,21 +546,16 @@
 static int
 linux_socket(struct thread *td, struct linux_socket_args *args)
 {
-	struct linux_socket_args linux_args;
 	struct socket_args /* {
 		int domain;
 		int type;
 		int protocol;
 	} */ bsd_args;
-	int error;
 	int retval_socket;
 
-	if ((error = copyin(args, &linux_args, sizeof(linux_args))))
-		return (error);
-
-	bsd_args.protocol = linux_args.protocol;
-	bsd_args.type = linux_args.type;
-	bsd_args.domain = linux_to_bsd_domain(linux_args.domain);
+	bsd_args.protocol = args->protocol;
+	bsd_args.type = args->type;
+	bsd_args.domain = linux_to_bsd_domain(args->domain);
 	if (bsd_args.domain == -1)
 		return (EINVAL);
 
@@ -613,21 +608,17 @@
 static int
 linux_bind(struct thread *td, struct linux_bind_args *args)
 {
-	struct linux_bind_args linux_args;
 	struct sockaddr *sa;
 	int error;
 
-	if ((error = copyin(args, &linux_args, sizeof(linux_args))))
-		return (error);
-
-	error = linux_getsockaddr(&sa, PTRIN(linux_args.name),
-	    linux_args.namelen);
+	error = linux_getsockaddr(&sa, PTRIN(args->name),
+	    args->namelen);
 	if (error)
 		return (error);
 
-	error = kern_bind(td, linux_args.s, sa);
+	error = kern_bind(td, args->s, sa);
 	free(sa, M_SONAME);
-	if (error == EADDRNOTAVAIL && linux_args.namelen != sizeof(struct sockaddr_in))
+	if (error == EADDRNOTAVAIL && args->namelen != sizeof(struct sockaddr_in))
 	   	return (EINVAL);
 	return (error);
 }
@@ -642,22 +633,17 @@
 int
 linux_connect(struct thread *td, struct linux_connect_args *args)
 {
-	struct linux_connect_args linux_args;
 	struct socket *so;
 	struct sockaddr *sa;
 	u_int fflag;
 	int error;
 
-	if ((error = copyin(args, &linux_args, sizeof(linux_args))))
-		return (error);
-
-	error = linux_getsockaddr(&sa,
-	    (struct osockaddr *)PTRIN(linux_args.name),
-	    linux_args.namelen);
+	error = linux_getsockaddr(&sa, (struct osockaddr *)PTRIN(args->name),
+	    args->namelen);
 	if (error)
 		return (error);
 
-	error = kern_connect(td, linux_args.s, sa);
+	error = kern_connect(td, args->s, sa);
 	free(sa, M_SONAME);
 	if (error != EISCONN)
 		return (error);
@@ -671,7 +657,7 @@
 	 * socket and use the file descriptor reference instead of
 	 * creating a new one.
 	 */
-	error = fgetsock(td, linux_args.s, &so, &fflag);
+	error = fgetsock(td, args->s, &so, &fflag);
 	if (error == 0) {
 		error = EISCONN;
 		if (fflag & FNONBLOCK) {
@@ -694,18 +680,13 @@
 static int
 linux_listen(struct thread *td, struct linux_listen_args *args)
 {
-	struct linux_listen_args linux_args;
 	struct listen_args /* {
 		int s;
 		int backlog;
 	} */ bsd_args;
-	int error;
 
-	if ((error = copyin(args, &linux_args, sizeof(linux_args))))
-		return (error);
-
-	bsd_args.s = linux_args.s;
-	bsd_args.backlog = linux_args.backlog;
+	bsd_args.s = args->s;
+	bsd_args.backlog = args->backlog;
 	return (listen(td, &bsd_args));
 }
 
@@ -718,7 +699,6 @@
 static int
 linux_accept(struct thread *td, struct linux_accept_args *args)
 {
-	struct linux_accept_args linux_args;
 	struct accept_args /* {
 		int	s;
 		struct sockaddr * __restrict name;
@@ -726,22 +706,19 @@
 	} */ bsd_args;
 	int error, fd;
 
-	if ((error = copyin(args, &linux_args, sizeof(linux_args))))
-		return (error);
-
-	bsd_args.s = linux_args.s;
+	bsd_args.s = args->s;
 	/* XXX: */
-	bsd_args.name = (struct sockaddr * __restrict)PTRIN(linux_args.addr);
-	bsd_args.anamelen = PTRIN(linux_args.namelen);/* XXX */
+	bsd_args.name = (struct sockaddr * __restrict)PTRIN(args->addr);
+	bsd_args.anamelen = PTRIN(args->namelen);/* XXX */
 	error = accept(td, &bsd_args);
 	bsd_to_linux_sockaddr((struct sockaddr *)bsd_args.name);
 	if (error) {
-	   	if (error == EFAULT && linux_args.namelen != sizeof(struct sockaddr_in))
-		   	return (EINVAL);
+		if (error == EFAULT && args->namelen != sizeof(struct sockaddr_in))
+			return (EINVAL);
 		return (error);
 	}
-	if (linux_args.addr) {
-		error = linux_sa_put(PTRIN(linux_args.addr));
+	if (args->addr) {
+		error = linux_sa_put(PTRIN(args->addr));
 		if (error) {
 			(void)kern_close(td, td->td_retval[0]);
 			return (error);
@@ -768,7 +745,6 @@
 static int
 linux_getsockname(struct thread *td, struct linux_getsockname_args *args)
 {
-	struct linux_getsockname_args linux_args;
 	struct getsockname_args /* {
 		int	fdes;
 		struct sockaddr * __restrict asa;
@@ -776,18 +752,15 @@
 	} */ bsd_args;
 	int error;
 
-	if ((error = copyin(args, &linux_args, sizeof(linux_args))))
-		return (error);
-
-	bsd_args.fdes = linux_args.s;
+	bsd_args.fdes = args->s;
 	/* XXX: */
-	bsd_args.asa = (struct sockaddr * __restrict)PTRIN(linux_args.addr);
-	bsd_args.alen = PTRIN(linux_args.namelen);	/* XXX */
+	bsd_args.asa = (struct sockaddr * __restrict)PTRIN(args->addr);
+	bsd_args.alen = PTRIN(args->namelen);	/* XXX */
 	error = getsockname(td, &bsd_args);
 	bsd_to_linux_sockaddr((struct sockaddr *)bsd_args.asa);
 	if (error)
 		return (error);
-	error = linux_sa_put(PTRIN(linux_args.addr));
+	error = linux_sa_put(PTRIN(args->addr));
 	if (error)
 		return (error);
 	return (0);
@@ -802,7 +775,6 @@
 static int
 linux_getpeername(struct thread *td, struct linux_getpeername_args *args)
 {
-	struct linux_getpeername_args linux_args;
 	struct getpeername_args /* {
 		int fdes;
 		caddr_t asa;
@@ -810,17 +782,14 @@
 	} */ bsd_args;
 	int error;
 
-	if ((error = copyin(args, &linux_args, sizeof(linux_args))))
-		return (error);
-
-	bsd_args.fdes = linux_args.s;
-	bsd_args.asa = (struct sockaddr *)PTRIN(linux_args.addr);
-	bsd_args.alen = (int *)PTRIN(linux_args.namelen);
+	bsd_args.fdes = args->s;
+	bsd_args.asa = (struct sockaddr *)PTRIN(args->addr);
+	bsd_args.alen = (int *)PTRIN(args->namelen);
 	error = getpeername(td, &bsd_args);
 	bsd_to_linux_sockaddr((struct sockaddr *)bsd_args.asa);
 	if (error)
 		return (error);
-	error = linux_sa_put(PTRIN(linux_args.addr));
+	error = linux_sa_put(PTRIN(args->addr));
 	if (error)
 		return (error);
 	return (0);
@@ -836,25 +805,20 @@
 static int
 linux_socketpair(struct thread *td, struct linux_socketpair_args *args)
 {
-	struct linux_socketpair_args linux_args;
 	struct socketpair_args /* {
 		int domain;
 		int type;
 		int protocol;
 		int *rsv;
 	} */ bsd_args;
-	int error;
 
-	if ((error = copyin(args, &linux_args, sizeof(linux_args))))
-		return (error);
-
-	bsd_args.domain = linux_to_bsd_domain(linux_args.domain);
+	bsd_args.domain = linux_to_bsd_domain(args->domain);
 	if (bsd_args.domain == -1)
 		return (EINVAL);
 
-	bsd_args.type = linux_args.type;
-	bsd_args.protocol = linux_args.protocol;
-	bsd_args.rsv = (int *)PTRIN(linux_args.rsv);
+	bsd_args.type = args->type;
+	bsd_args.protocol = args->protocol;
+	bsd_args.rsv = (int *)PTRIN(args->rsv);
 	return (socketpair(td, &bsd_args));
 }
 
@@ -868,7 +832,6 @@
 static int
 linux_send(struct thread *td, struct linux_send_args *args)
 {
-	struct linux_send_args linux_args;
 	struct sendto_args /* {
 		int s;
 		caddr_t buf;
@@ -877,15 +840,11 @@
 		caddr_t to;
 		int tolen;
 	} */ bsd_args;
-	int error;
 
-	if ((error = copyin(args, &linux_args, sizeof(linux_args))))
-		return (error);
-
-	bsd_args.s = linux_args.s;
-	bsd_args.buf = (caddr_t)PTRIN(linux_args.msg);
-	bsd_args.len = linux_args.len;
-	bsd_args.flags = linux_args.flags;
+	bsd_args.s = args->s;
+	bsd_args.buf = (caddr_t)PTRIN(args->msg);
+	bsd_args.len = args->len;
+	bsd_args.flags = args->flags;
 	bsd_args.to = NULL;
 	bsd_args.tolen = 0;
 	return sendto(td, &bsd_args);
@@ -901,7 +860,6 @@
 static int
 linux_recv(struct thread *td, struct linux_recv_args *args)
 {
-	struct linux_recv_args linux_args;
 	struct recvfrom_args /* {
 		int s;
 		caddr_t buf;
@@ -910,15 +868,11 @@
 		struct sockaddr *from;
 		socklen_t fromlenaddr;
 	} */ bsd_args;
-	int error;
 
-	if ((error = copyin(args, &linux_args, sizeof(linux_args))))
-		return (error);
-
-	bsd_args.s = linux_args.s;
-	bsd_args.buf = (caddr_t)PTRIN(linux_args.msg);
-	bsd_args.len = linux_args.len;
-	bsd_args.flags = linux_args.flags;
+	bsd_args.s = args->s;
+	bsd_args.buf = (caddr_t)PTRIN(args->msg);
+	bsd_args.len = args->len;
+	bsd_args.flags = args->flags;
 	bsd_args.from = NULL;
 	bsd_args.fromlenaddr = 0;
 	return (recvfrom(td, &bsd_args));
@@ -927,28 +881,23 @@
 static int
 linux_sendto(struct thread *td, struct linux_sendto_args *args)
 {
-	struct linux_sendto_args linux_args;
 	struct msghdr msg;
 	struct iovec aiov;
 	int error;
 
-	if ((error = copyin(args, &linux_args, sizeof(linux_args))))
-		return (error);
-
-	if (linux_check_hdrincl(td, linux_args.s) == 0)
+	if (linux_check_hdrincl(td, args->s) == 0)
 		/* IP_HDRINCL set, tweak the packet before sending */
-		return (linux_sendto_hdrincl(td, &linux_args));
+		return (linux_sendto_hdrincl(td, args));
 
-	msg.msg_name = PTRIN(linux_args.to);
-	msg.msg_namelen = linux_args.tolen;
+	msg.msg_name = PTRIN(args->to);
+	msg.msg_namelen = args->tolen;
 	msg.msg_iov = &aiov;
 	msg.msg_iovlen = 1;
 	msg.msg_control = NULL;
 	msg.msg_flags = 0;
-	aiov.iov_base = PTRIN(linux_args.msg);
-	aiov.iov_len = linux_args.len;
-	error = linux_sendit(td, linux_args.s, &msg, linux_args.flags,
-	    UIO_USERSPACE);
+	aiov.iov_base = PTRIN(args->msg);
+	aiov.iov_len = args->len;
+	error = linux_sendit(td, args->s, &msg, args->flags, UIO_USERSPACE);
 	return (error);
 }
 
@@ -964,7 +913,6 @@
 static int
 linux_recvfrom(struct thread *td, struct linux_recvfrom_args *args)
 {
-	struct linux_recvfrom_args linux_args;
 	struct recvfrom_args /* {
 		int	s;
 		caddr_t	buf;
@@ -976,19 +924,16 @@
 	size_t len;
 	int error;
 
-	if ((error = copyin(args, &linux_args, sizeof(linux_args))))
+	if ((error = copyin(PTRIN(args->fromlen), &len, sizeof(size_t))))
 		return (error);
 
-	if ((error = copyin(PTRIN(linux_args.fromlen), &len, sizeof(size_t))))
-		return (error);
-
-	bsd_args.s = linux_args.s;
-	bsd_args.buf = PTRIN(linux_args.buf);
-	bsd_args.len = linux_args.len;
-	bsd_args.flags = linux_to_bsd_msg_flags(linux_args.flags);
+	bsd_args.s = args->s;
+	bsd_args.buf = PTRIN(args->buf);
+	bsd_args.len = args->len;
+	bsd_args.flags = linux_to_bsd_msg_flags(args->flags);
 	/* XXX: */
-	bsd_args.from = (struct sockaddr * __restrict)PTRIN(linux_args.from);
-	bsd_args.fromlenaddr = PTRIN(linux_args.fromlen);/* XXX */
+	bsd_args.from = (struct sockaddr * __restrict)PTRIN(args->from);
+	bsd_args.fromlenaddr = PTRIN(args->fromlen);/* XXX */
 	
 	linux_to_bsd_sockaddr((struct sockaddr *)bsd_args.from, len);
 	error = recvfrom(td, &bsd_args);
@@ -996,9 +941,9 @@
 	
 	if (error)
 		return (error);
-	if (linux_args.from) {
+	if (args->from) {
 		error = linux_sa_put((struct osockaddr *)
-		    PTRIN(linux_args.from));
+		    PTRIN(args->from));
 		if (error)
 			return (error);
 	}
@@ -1014,19 +959,15 @@
 static int
 linux_sendmsg(struct thread *td, struct linux_sendmsg_args *args)
 {
-	struct linux_sendmsg_args linux_args;
 	struct msghdr msg;
 	struct iovec *iov;
 	int error;
 
 	/* XXXTJR sendmsg is broken on amd64 */
 
-	error = copyin(args, &linux_args, sizeof(linux_args));
+	error = copyin(PTRIN(args->msg), &msg, sizeof(msg));
 	if (error)
 		return (error);
-	error = copyin(PTRIN(linux_args.msg), &msg, sizeof(msg));
-	if (error)
-		return (error);
 
 	/*
 	 * Some Linux applications (ping) define a non-NULL control data
@@ -1042,8 +983,7 @@
 		return (error);
 	msg.msg_iov = iov;
 	msg.msg_flags = 0;
-	error = linux_sendit(td, linux_args.s, &msg, linux_args.flags,
-	    UIO_USERSPACE);
+	error = linux_sendit(td, args->s, &msg, args->flags, UIO_USERSPACE);
 	free(iov, M_IOV);
 	return (error);
 }
@@ -1057,7 +997,6 @@
 static int
 linux_recvmsg(struct thread *td, struct linux_recvmsg_args *args)
 {
-	struct linux_recvmsg_args linux_args;
 	struct recvmsg_args /* {
 		int	s;
 		struct	msghdr *msg;
@@ -1069,15 +1008,12 @@
 
 	/* XXXTJR recvmsg is broken on amd64 */
 
-	if ((error = copyin(args, &linux_args, sizeof(linux_args))))
-		return (error);
-
 	if ((error = copyin(PTRIN(args->msg), &msg, sizeof (msg))))
 		return (error);
 
-	bsd_args.s = linux_args.s;
-	bsd_args.msg = PTRIN(linux_args.msg);
-	bsd_args.flags = linux_to_bsd_msg_flags(linux_args.flags);
+	bsd_args.s = args->s;
+	bsd_args.msg = PTRIN(args->msg);
+	bsd_args.flags = linux_to_bsd_msg_flags(args->flags);
 	if (msg.msg_name) {
 	   	linux_to_bsd_sockaddr((struct sockaddr *)msg.msg_name,
 		      msg.msg_namelen);
@@ -1094,7 +1030,7 @@
 		cmsg->cmsg_level = bsd_to_linux_sockopt_level(cmsg->cmsg_level);
 	}
 
-	error = copyin(PTRIN(linux_args.msg), &msg, sizeof(msg));
+	error = copyin(PTRIN(args->msg), &msg, sizeof(msg));
 	if (error)
 		return (error);
 	if (msg.msg_name && msg.msg_namelen > 2)
@@ -1110,18 +1046,13 @@
 static int
 linux_shutdown(struct thread *td, struct linux_shutdown_args *args)
 {
-	struct linux_shutdown_args linux_args;
 	struct shutdown_args /* {
 		int s;
 		int how;
 	} */ bsd_args;
-	int error;
 
-	if ((error = copyin(args, &linux_args, sizeof(linux_args))))
-		return (error);
-
-	bsd_args.s = linux_args.s;
-	bsd_args.how = linux_args.how;
+	bsd_args.s = args->s;
+	bsd_args.how = args->how;
 	return (shutdown(td, &bsd_args));
 }
 
@@ -1136,7 +1067,6 @@
 static int
 linux_setsockopt(struct thread *td, struct linux_setsockopt_args *args)
 {
-	struct linux_setsockopt_args linux_args;
 	struct setsockopt_args /* {
 		int s;
 		int level;
@@ -1146,21 +1076,18 @@
 	} */ bsd_args;
 	int error, name;
 
-	if ((error = copyin(args, &linux_args, sizeof(linux_args))))
-		return (error);
-
-	bsd_args.s = linux_args.s;
-	bsd_args.level = linux_to_bsd_sockopt_level(linux_args.level);
+	bsd_args.s = args->s;
+	bsd_args.level = linux_to_bsd_sockopt_level(args->level);
 	switch (bsd_args.level) {
 	case SOL_SOCKET:
-		name = linux_to_bsd_so_sockopt(linux_args.optname);
+		name = linux_to_bsd_so_sockopt(args->optname);
 		break;
 	case IPPROTO_IP:
-		name = linux_to_bsd_ip_sockopt(linux_args.optname);
+		name = linux_to_bsd_ip_sockopt(args->optname);
 		break;
 	case IPPROTO_TCP:
 		/* Linux TCP option values match BSD's */
-		name = linux_args.optname;
+		name = args->optname;
 		break;
 	default:
 		name = -1;
@@ -1170,8 +1097,8 @@
 		return (ENOPROTOOPT);
 
 	bsd_args.name = name;
-	bsd_args.val = PTRIN(linux_args.optval);
-	bsd_args.valsize = linux_args.optlen;
+	bsd_args.val = PTRIN(args->optval);
+	bsd_args.valsize = args->optlen;
 
 	if (name == IPV6_NEXTHOP) {
 		linux_to_bsd_sockaddr((struct sockaddr *)bsd_args.val,
@@ -1195,7 +1122,6 @@
 static int
 linux_getsockopt(struct thread *td, struct linux_getsockopt_args *args)
 {
-	struct linux_getsockopt_args linux_args;
 	struct getsockopt_args /* {
 		int s;
 		int level;
@@ -1205,21 +1131,18 @@
 	} */ bsd_args;
 	int error, name;
 
-	if ((error = copyin(args, &linux_args, sizeof(linux_args))))
-		return (error);
-
-	bsd_args.s = linux_args.s;
-	bsd_args.level = linux_to_bsd_sockopt_level(linux_args.level);
+	bsd_args.s = args->s;
+	bsd_args.level = linux_to_bsd_sockopt_level(args->level);
 	switch (bsd_args.level) {
 	case SOL_SOCKET:
-		name = linux_to_bsd_so_sockopt(linux_args.optname);
+		name = linux_to_bsd_so_sockopt(args->optname);
 		break;
 	case IPPROTO_IP:
-		name = linux_to_bsd_ip_sockopt(linux_args.optname);
+		name = linux_to_bsd_ip_sockopt(args->optname);
 		break;
 	case IPPROTO_TCP:
 		/* Linux TCP option values match BSD's */
-		name = linux_args.optname;
+		name = args->optname;
 		break;
 	default:
 		name = -1;
@@ -1229,8 +1152,8 @@
 		return (EINVAL);
 
 	bsd_args.name = name;
-	bsd_args.val = PTRIN(linux_args.optval);
-	bsd_args.avalsize = PTRIN(linux_args.optlen);
+	bsd_args.val = PTRIN(args->optval);
+	bsd_args.avalsize = PTRIN(args->optlen);
 
 	if (name == IPV6_NEXTHOP) {
 		error = getsockopt(td, &bsd_args);

==== //depot/projects/mips2/src/sys/dev/ath/if_athvar.h#6 (text+ko) ====

@@ -26,7 +26,7 @@
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
  * THE POSSIBILITY OF SUCH DAMAGES.
  *
- * $FreeBSD: src/sys/dev/ath/if_athvar.h,v 1.65 2008/05/29 00:10:48 sam Exp $
+ * $FreeBSD: src/sys/dev/ath/if_athvar.h,v 1.66 2008/09/09 16:21:25 rpaulo Exp $
  */
 
 /*
@@ -506,7 +506,7 @@
 #define	ath_hal_getregdomain(_ah, _prd) \
 	(ath_hal_getcapability(_ah, HAL_CAP_REG_DMN, 0, (_prd)) == HAL_OK)
 #define	ath_hal_setregdomain(_ah, _rd) \
-	(*(uint16_t *)(((uint8_t *)(_ah)) + 520) = (_rd))
+	(*(uint16_t *)(((uint8_t *)&(_ah)[1]) + 128) = (_rd))
 #define	ath_hal_getcountrycode(_ah, _pcc) \
 	(*(_pcc) = (_ah)->ah_countryCode)
 #define	ath_hal_gettkipmic(_ah) \

==== //depot/projects/mips2/src/sys/dev/drm/ati_pcigart.c#4 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/ati_pcigart.c,v 1.5 2008/09/09 02:05:03 rnoland Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/ati_pcigart.c,v 1.6 2008/09/09 02:18:37 rnoland Exp $");
 
 /** @file ati_pcigart.c
  * Implementation of ATI's PCIGART, which provides an aperture in card virtual
@@ -42,31 +42,86 @@
 #define ATI_PCIE_WRITE 0x4
 #define ATI_PCIE_READ 0x8
 
-static int drm_ati_alloc_pcigart_table(struct drm_device *dev,
-				       struct drm_ati_pcigart_info *gart_info)
+static void

>>> TRUNCATED FOR MAIL (1000 lines) <<<


More information about the p4-projects mailing list