Date: Wed, 10 Sep 2008 00:46:55 GMT From: Oleksandr Tymoshenko <gonzo@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 149503 for review Message-ID: <200809100046.m8A0ktjl077719@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=149503 Change 149503 by gonzo@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) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200809100046.m8A0ktjl077719>