From owner-svn-src-user@FreeBSD.ORG Sun Jan 25 14:32:49 2015 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 59F72647; Sun, 25 Jan 2015 14:32:49 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 46032C19; Sun, 25 Jan 2015 14:32:49 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t0PEWnSx001903; Sun, 25 Jan 2015 14:32:49 GMT (envelope-from pho@FreeBSD.org) Received: (from pho@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0PEWnOR001902; Sun, 25 Jan 2015 14:32:49 GMT (envelope-from pho@FreeBSD.org) Message-Id: <201501251432.t0PEWnOR001902@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: pho set sender to pho@FreeBSD.org using -f From: Peter Holm Date: Sun, 25 Jan 2015 14:32:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r277702 - user/pho/stress2/misc X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jan 2015 14:32:49 -0000 Author: pho Date: Sun Jan 25 14:32:48 2015 New Revision: 277702 URL: https://svnweb.freebsd.org/changeset/base/277702 Log: Code cleanup. Sponsored by: EMC / Isilon storage division Modified: user/pho/stress2/misc/core.sh Modified: user/pho/stress2/misc/core.sh ============================================================================== --- user/pho/stress2/misc/core.sh Sun Jan 25 14:31:44 2015 (r277701) +++ user/pho/stress2/misc/core.sh Sun Jan 25 14:32:48 2015 (r277702) @@ -52,30 +52,28 @@ done rm -f core exit EOF -#include +#include #include -#include #include #include +#include #include -#include +#include #define SIZ 10*1024*1024 int main(int argc, char **argv) { - char *cp = 0; + char *cp; if ((cp = malloc(SIZ)) == NULL) err(1, "Could not malloc 10Mb!"); memset(cp, 1, SIZ); -// printf("sleep %d\n", (120 - (time(NULL) % 120))); fflush(stdout); sleep(120 - (time(NULL) % 120)); raise(SIGSEGV); -// printf(".\n"); return (0); } From owner-svn-src-user@FreeBSD.ORG Sun Jan 25 15:02:29 2015 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D9E11DA6; Sun, 25 Jan 2015 15:02:29 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id C54D8E79; Sun, 25 Jan 2015 15:02:29 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t0PF2TOD016033; Sun, 25 Jan 2015 15:02:29 GMT (envelope-from pho@FreeBSD.org) Received: (from pho@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0PF2TUq016032; Sun, 25 Jan 2015 15:02:29 GMT (envelope-from pho@FreeBSD.org) Message-Id: <201501251502.t0PF2TUq016032@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: pho set sender to pho@FreeBSD.org using -f From: Peter Holm Date: Sun, 25 Jan 2015 15:02:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r277704 - user/pho/stress2/misc X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jan 2015 15:02:29 -0000 Author: pho Date: Sun Jan 25 15:02:28 2015 New Revision: 277704 URL: https://svnweb.freebsd.org/changeset/base/277704 Log: Zero struct before use. Sponsored by: EMC / Isilon storage division Modified: user/pho/stress2/misc/callout_reset_on.sh Modified: user/pho/stress2/misc/callout_reset_on.sh ============================================================================== --- user/pho/stress2/misc/callout_reset_on.sh Sun Jan 25 14:50:49 2015 (r277703) +++ user/pho/stress2/misc/callout_reset_on.sh Sun Jan 25 15:02:28 2015 (r277704) @@ -239,6 +239,7 @@ writer(void) { err(1, "setsockopt(), %s:%d", __FILE__, __LINE__); hostent = gethostbyname ("localhost"); + bzero(&inetaddr, sizeof(inetaddr)); memcpy (&inetaddr.sin_addr.s_addr, hostent->h_addr, sizeof (struct in_addr)); From owner-svn-src-user@FreeBSD.ORG Sun Jan 25 15:09:54 2015 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 572B1EAC; Sun, 25 Jan 2015 15:09:54 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 38240E96; Sun, 25 Jan 2015 15:09:54 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t0PF9sFH016901; Sun, 25 Jan 2015 15:09:54 GMT (envelope-from pho@FreeBSD.org) Received: (from pho@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0PF9r3h016897; Sun, 25 Jan 2015 15:09:53 GMT (envelope-from pho@FreeBSD.org) Message-Id: <201501251509.t0PF9r3h016897@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: pho set sender to pho@FreeBSD.org using -f From: Peter Holm Date: Sun, 25 Jan 2015 15:09:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r277705 - user/pho/stress2/misc X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jan 2015 15:09:54 -0000 Author: pho Date: Sun Jan 25 15:09:52 2015 New Revision: 277705 URL: https://svnweb.freebsd.org/changeset/base/277705 Log: Added default.cfg, make test program name conform to script name and whitespace cleanup. Sponsored by: EMC / Isilon storage division Modified: user/pho/stress2/misc/datamove.sh user/pho/stress2/misc/datamove2.sh user/pho/stress2/misc/datamove3.sh user/pho/stress2/misc/datamove4.sh Modified: user/pho/stress2/misc/datamove.sh ============================================================================== --- user/pho/stress2/misc/datamove.sh Sun Jan 25 15:02:28 2015 (r277704) +++ user/pho/stress2/misc/datamove.sh Sun Jan 25 15:09:52 2015 (r277705) @@ -28,40 +28,42 @@ # $FreeBSD$ # -# There is a well-known problem in FreeBSD, caused by allowing page faults -# while doing filesystem data move to or from userspace during read(2) and -# write(2). The issue is that if the userspace address being read or write -# from/to is backed by the mapping of the same file we are doing i/o to, +# There is a well-known problem in FreeBSD, caused by allowing page faults +# while doing filesystem data move to or from userspace during read(2) and +# write(2). The issue is that if the userspace address being read or write +# from/to is backed by the mapping of the same file we are doing i/o to, # we deadlock. # Test scenario by ups [ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 +. ../default.cfg + here=`pwd` cd /tmp -sed '1,/^EOF/d' < $here/$0 > dl.c -cc -o dl -Wall dl.c -rm -f dl.c +sed '1,/^EOF/d' < $here/$0 > datamove.c +cc -o datamove -Wall datamove.c +rm -f datamove.c n=5 old=`sysctl vm.old_msync | awk '{print $NF}'` sysctl vm.old_msync=1 for i in `jot $n`; do - mkdir -p /tmp/dl.dir.$i - cd /tmp/dl.dir.$i - /tmp/dl & + mkdir -p /tmp/datamove.dir.$i + cd /tmp/datamove.dir.$i + /tmp/datamove & done cd /tmp for i in `jot $n`; do wait done for i in `jot $n`; do - rm -rf /tmp/dl.dir.$i + rm -rf /tmp/datamove.dir.$i done sysctl vm.old_msync=$old -rm -rf /tmp/dl +rm -rf /tmp/datamove exit 0 EOF /*- @@ -123,7 +125,7 @@ int prepareFile(char* filename,int* fdp) perror("Creating file"); return fd; } - + len = write(fd,wbuffer,FILESIZE); if (len < 0) { @@ -171,11 +173,11 @@ int mapBuffer(char** bufferp,int fd1,int perror("Mmap failed"); return 1; } - + buffer = addr; - addr = mmap(buffer + pagesize,pagesize, PROT_READ | PROT_WRITE , MAP_FIXED | -MAP_SHARED, fd2, 0); - + addr = mmap(buffer + pagesize,pagesize, PROT_READ | PROT_WRITE , MAP_FIXED | + MAP_SHARED, fd2, 0); + if (addr == MAP_FAILED) { perror("Mmap2 failed"); @@ -190,7 +192,7 @@ int startIO(int fd,char *buffer) { ssize_t len; len = write(fd,buffer,2*pagesize); - if (len == -1) + if (len == -1) { perror("write failed"); return 1; @@ -216,7 +218,7 @@ int main(int argc,char *argv[],char *env || (mapBuffer(&bufferA,fdDelayA,fdB)) || (mapBuffer(&bufferB,fdDelayB,fdA))) exit(1); - + pid = fork(); if (pid == 0) @@ -233,8 +235,3 @@ int main(int argc,char *argv[],char *env exit(status); } - - - - - Modified: user/pho/stress2/misc/datamove2.sh ============================================================================== --- user/pho/stress2/misc/datamove2.sh Sun Jan 25 15:02:28 2015 (r277704) +++ user/pho/stress2/misc/datamove2.sh Sun Jan 25 15:09:52 2015 (r277705) @@ -34,18 +34,20 @@ # Test scenario by ups +. ../default.cfg + here=`pwd` cd /tmp -sed '1,/^EOF/d' < $here/$0 > dl.c -cc -o dl -Wall dl.c -rm -f dl.c +sed '1,/^EOF/d' < $here/$0 > datamove2.c +cc -o datamove2 -Wall datamove2.c +rm -f datamove2.c for i in `jot 2`; do $here/../testcases/swap/swap -t 10m -i 200 -h & - /tmp/dl + /tmp/datamove2 ps | grep swap | grep -v swap | awk '{print $1}' | xargs kill done -rm -rf /tmp/dl +rm -rf /tmp/datamove2 exit 0 EOF /*- @@ -95,7 +97,7 @@ int pagesize; char wbuffer [FILESIZE]; /* Create a FILESIZE sized file - then remove file data from the cache */ -int +int prepareFile(char *filename, int *fdp) { int fd; @@ -139,7 +141,7 @@ prepareFile(char *filename, int *fdp) /* mmap a 2 page buffer - first page is from fd1, second page from fd2 */ -int +int mapBuffer(char **bufferp, int fd1, int fd2) { void *addr; @@ -171,7 +173,7 @@ unmapBuffer(char *bufferp) err(1, "unmap 2. buffer"); } -int +int startIO(int fd, char *buffer) { ssize_t len; @@ -185,7 +187,7 @@ startIO(int fd, char *buffer) } -int +int main(int argc, char *argv[], char *envp[]) { Modified: user/pho/stress2/misc/datamove3.sh ============================================================================== --- user/pho/stress2/misc/datamove3.sh Sun Jan 25 15:02:28 2015 (r277704) +++ user/pho/stress2/misc/datamove3.sh Sun Jan 25 15:09:52 2015 (r277705) @@ -34,30 +34,32 @@ [ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 +. ../default.cfg + here=`pwd` cd /tmp -sed '1,/^EOF/d' < $here/$0 > dl.c -cc -o dl -Wall dl.c -lpthread -rm -f dl.c +sed '1,/^EOF/d' < $here/$0 > datamove3.c +cc -o datamove3 -Wall datamove3.c -lpthread +rm -f datamove3.c n=5 old=`sysctl vm.old_msync | awk '{print $NF}'` sysctl vm.old_msync=1 for i in `jot $n`; do - mkdir -p /tmp/dl.dir.$i - cd /tmp/dl.dir.$i - /tmp/dl & + mkdir -p /tmp/datamove3.dir.$i + cd /tmp/datamove3.dir.$i + /tmp/datamove3 & done cd /tmp for i in `jot $n`; do wait done for i in `jot $n`; do - rm -rf /tmp/dl.dir.$i + rm -rf /tmp/datamove3.dir.$i done sysctl vm.old_msync=$old -rm -rf /tmp/dl +rm -rf /tmp/datamove3 exit 0 EOF /*- @@ -114,7 +116,7 @@ int pagesize; char wbuffer [FILESIZE]; /* Create a FILESIZE sized file - then remove file data from the cache */ -int +int prepareFile(char *filename, int *fdp) { int fd; @@ -180,7 +182,7 @@ mapBuffer(void *ar) } -int +int startIO(int fd, char *buffer) { ssize_t len; @@ -195,7 +197,7 @@ startIO(int fd, char *buffer) -int +int main(int argc, char *argv[], char *envp[]) { Modified: user/pho/stress2/misc/datamove4.sh ============================================================================== --- user/pho/stress2/misc/datamove4.sh Sun Jan 25 15:02:28 2015 (r277704) +++ user/pho/stress2/misc/datamove4.sh Sun Jan 25 15:09:52 2015 (r277705) @@ -37,22 +37,22 @@ here=`pwd` cd /tmp -sed '1,/^EOF/d' < $here/$0 > dl.c -cc -o dl -Wall -Wextra -O2 -g dl.c -rm -f dl.c +sed '1,/^EOF/d' < $here/$0 > datamove4.c +cc -o datamove4 -Wall -Wextra -O2 -g datamove4.c +rm -f datamove4.c mount | grep -q "$mntpoint " && umount $mntpoint mount -t tmpfs tmpfs $mntpoint chmod 777 $mntpoint for i in `jot 5`; do - su $testuser -c "cd $mntpoint; /tmp/dl" + su $testuser -c "cd $mntpoint; /tmp/datamove4" done while mount | grep -q $mntpoint; do umount -f $mntpoint > /dev/null 2>&1 done -rm -rf /tmp/dl +rm -rf /tmp/datamove4 exit 0 EOF /*- @@ -102,7 +102,7 @@ int pagesize; char wbuffer [FILESIZE]; /* Create a FILESIZE sized file - then remove file data from the cache */ -int +int prepareFile(char *filename, int *fdp) { int fd; @@ -146,7 +146,7 @@ prepareFile(char *filename, int *fdp) /* mmap a 2 page buffer - first page is from fd1, second page from fd2 */ -int +int mapBuffer(char **bufferp, int fd1, int fd2) { void *addr; @@ -178,7 +178,7 @@ unmapBuffer(char *bufferp) err(1, "unmap 2. buffer"); } -int +int startIO(int fd, char *buffer) { ssize_t len; @@ -192,7 +192,7 @@ startIO(int fd, char *buffer) } -int +int main() { From owner-svn-src-user@FreeBSD.ORG Sun Jan 25 21:16:25 2015 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0FF00E2E; Sun, 25 Jan 2015 21:16:25 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id F0C6D9E6; Sun, 25 Jan 2015 21:16:24 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t0PLGOvf089353; Sun, 25 Jan 2015 21:16:24 GMT (envelope-from pho@FreeBSD.org) Received: (from pho@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0PLGOen089352; Sun, 25 Jan 2015 21:16:24 GMT (envelope-from pho@FreeBSD.org) Message-Id: <201501252116.t0PLGOen089352@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: pho set sender to pho@FreeBSD.org using -f From: Peter Holm Date: Sun, 25 Jan 2015 21:16:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r277715 - user/pho/stress2/misc X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jan 2015 21:16:25 -0000 Author: pho Date: Sun Jan 25 21:16:24 2015 New Revision: 277715 URL: https://svnweb.freebsd.org/changeset/base/277715 Log: Ignore ENOTDIR error seen with fts_close() and whitespace cleanup. Sponsored by: EMC / Isilon storage division Modified: user/pho/stress2/misc/kevent7.sh Modified: user/pho/stress2/misc/kevent7.sh ============================================================================== --- user/pho/stress2/misc/kevent7.sh Sun Jan 25 20:37:32 2015 (r277714) +++ user/pho/stress2/misc/kevent7.sh Sun Jan 25 21:16:24 2015 (r277715) @@ -167,7 +167,8 @@ test(void *arg __unused) } if (fts_close(fts) == -1) - err(1, "fts_close()"); + if (errno != ENOTDIR) + warn("fts_close()"); if (pipe(fds) == -1) err(1, "pipe()"); if (socketpair(PF_UNIX, SOCK_SEQPACKET, 0, socketpr) == -1) @@ -249,11 +250,11 @@ main(void) if (pthread_create(&rp, NULL, test, NULL) != 0) perror("pthread_create"); usleep(1000); - for (j = 0; j < 50; j++) + for (j = 0; j < 50; j++) if (pthread_create(&cp[j], NULL, calls, NULL) != 0) perror("pthread_create"); - for (j = 0; j < 50; j++) + for (j = 0; j < 50; j++) pthread_join(cp[j], NULL); _exit(0); } From owner-svn-src-user@FreeBSD.ORG Tue Jan 27 06:50:02 2015 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 1E3B7D44; Tue, 27 Jan 2015 06:50:02 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 0BA5B894; Tue, 27 Jan 2015 06:50:02 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t0R6o1Jl053966; Tue, 27 Jan 2015 06:50:01 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0R6o1XX053965; Tue, 27 Jan 2015 06:50:01 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201501270650.t0R6o1XX053965@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Tue, 27 Jan 2015 06:50:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r277791 - user/dchagin/lemul/sys/amd64/linux32 X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jan 2015 06:50:02 -0000 Author: dchagin Date: Tue Jan 27 06:50:01 2015 New Revision: 277791 URL: https://svnweb.freebsd.org/changeset/base/277791 Log: Add forgotten thread_detach sysent method for linux32. Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_sysvec.c Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_sysvec.c ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/linux32_sysvec.c Tue Jan 27 06:24:33 2015 (r277790) +++ user/dchagin/lemul/sys/amd64/linux32/linux32_sysvec.c Tue Jan 27 06:50:01 2015 (r277791) @@ -1066,6 +1066,7 @@ struct sysentvec elf_linux_sysvec = { .sv_shared_page_base = LINUX32_SHAREDPAGE, .sv_shared_page_len = PAGE_SIZE, .sv_schedtail = linux_schedtail, + .sv_thread_detach = linux_thread_detach, .sv_trap = NULL, }; From owner-svn-src-user@FreeBSD.ORG Tue Jan 27 20:00:58 2015 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 40BD29C9; Tue, 27 Jan 2015 20:00:58 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 2AB12F7B; Tue, 27 Jan 2015 20:00:58 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t0RK0wCv028822; Tue, 27 Jan 2015 20:00:58 GMT (envelope-from delphij@FreeBSD.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0RK0uRF028516; Tue, 27 Jan 2015 20:00:56 GMT (envelope-from delphij@FreeBSD.org) Message-Id: <201501272000.t0RK0uRF028516@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: delphij set sender to delphij@FreeBSD.org using -f From: Xin LI Date: Tue, 27 Jan 2015 20:00:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r277813 - in user/cperciva/freebsd-update-build/patches: 10.0-RELEASE 10.1-RELEASE 8.4-RELEASE 9.3-RELEASE X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jan 2015 20:00:58 -0000 Author: delphij Date: Tue Jan 27 20:00:55 2015 New Revision: 277813 URL: https://svnweb.freebsd.org/changeset/base/277813 Log: Add patches for 2015-01-27 batch. Added: user/cperciva/freebsd-update-build/patches/10.0-RELEASE/17-SA-15:02.kmem user/cperciva/freebsd-update-build/patches/10.0-RELEASE/17-SA-15:03.sctp user/cperciva/freebsd-update-build/patches/10.1-RELEASE/5-SA-15:02.kmem user/cperciva/freebsd-update-build/patches/10.1-RELEASE/5-SA-15:03.sctp user/cperciva/freebsd-update-build/patches/8.4-RELEASE/23-SA-15:02.kmem user/cperciva/freebsd-update-build/patches/8.4-RELEASE/23-SA-15:03.sctp user/cperciva/freebsd-update-build/patches/9.3-RELEASE/9-SA-15:02.kmem user/cperciva/freebsd-update-build/patches/9.3-RELEASE/9-SA-15:03.sctp Added: user/cperciva/freebsd-update-build/patches/10.0-RELEASE/17-SA-15:02.kmem ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/cperciva/freebsd-update-build/patches/10.0-RELEASE/17-SA-15:02.kmem Tue Jan 27 20:00:55 2015 (r277813) @@ -0,0 +1,45 @@ +Index: sys/netinet/sctp_usrreq.c +=================================================================== +--- sys/netinet/sctp_usrreq.c (revision 277788) ++++ sys/netinet/sctp_usrreq.c (working copy) +@@ -1863,8 +1863,9 @@ flags_out: + SCTP_CHECK_AND_CAST(av, optval, struct sctp_stream_value, *optsize); + SCTP_FIND_STCB(inp, stcb, av->assoc_id); + if (stcb) { +- if (stcb->asoc.ss_functions.sctp_ss_get_value(stcb, &stcb->asoc, &stcb->asoc.strmout[av->stream_id], +- &av->stream_value) < 0) { ++ if ((av->stream_id >= stcb->asoc.streamoutcnt) || ++ (stcb->asoc.ss_functions.sctp_ss_get_value(stcb, &stcb->asoc, &stcb->asoc.strmout[av->stream_id], ++ &av->stream_value) < 0)) { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; + } else { +@@ -4032,8 +4033,9 @@ sctp_setopt(struct socket *so, int optname, void * + SCTP_CHECK_AND_CAST(av, optval, struct sctp_stream_value, optsize); + SCTP_FIND_STCB(inp, stcb, av->assoc_id); + if (stcb) { +- if (stcb->asoc.ss_functions.sctp_ss_set_value(stcb, &stcb->asoc, &stcb->asoc.strmout[av->stream_id], +- av->stream_value) < 0) { ++ if ((av->stream_id >= stcb->asoc.streamoutcnt) || ++ (stcb->asoc.ss_functions.sctp_ss_set_value(stcb, &stcb->asoc, &stcb->asoc.strmout[av->stream_id], ++ av->stream_value) < 0)) { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; + } +@@ -4043,10 +4045,12 @@ sctp_setopt(struct socket *so, int optname, void * + SCTP_INP_RLOCK(inp); + LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) { + SCTP_TCB_LOCK(stcb); +- stcb->asoc.ss_functions.sctp_ss_set_value(stcb, +- &stcb->asoc, +- &stcb->asoc.strmout[av->stream_id], +- av->stream_value); ++ if (av->stream_id < stcb->asoc.streamoutcnt) { ++ stcb->asoc.ss_functions.sctp_ss_set_value(stcb, ++ &stcb->asoc, ++ &stcb->asoc.strmout[av->stream_id], ++ av->stream_value); ++ } + SCTP_TCB_UNLOCK(stcb); + } + SCTP_INP_RUNLOCK(inp); Added: user/cperciva/freebsd-update-build/patches/10.0-RELEASE/17-SA-15:03.sctp ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/cperciva/freebsd-update-build/patches/10.0-RELEASE/17-SA-15:03.sctp Tue Jan 27 20:00:55 2015 (r277813) @@ -0,0 +1,119 @@ +Index: sys/netinet/sctp_input.c +=================================================================== +--- sys/netinet/sctp_input.c (revision 277788) ++++ sys/netinet/sctp_input.c (working copy) +@@ -3649,6 +3649,9 @@ sctp_handle_stream_reset_response(struct sctp_tcb + /* huh ? */ + return (0); + } ++ if (ntohs(respin->ph.param_length) < sizeof(struct sctp_stream_reset_response_tsn)) { ++ return (0); ++ } + if (action == SCTP_STREAM_RESET_RESULT_PERFORMED) { + resp = (struct sctp_stream_reset_response_tsn *)respin; + asoc->stream_reset_outstanding--; +@@ -4037,7 +4040,7 @@ __attribute__((noinline)) + sctp_handle_stream_reset(struct sctp_tcb *stcb, struct mbuf *m, int offset, + struct sctp_chunkhdr *ch_req) + { +- int chk_length, param_len, ptype; ++ uint16_t remaining_length, param_len, ptype; + struct sctp_paramhdr pstore; + uint8_t cstore[SCTP_CHUNK_BUFFER_SIZE]; + uint32_t seq = 0; +@@ -4050,7 +4053,7 @@ __attribute__((noinline)) + int num_param = 0; + + /* now it may be a reset or a reset-response */ +- chk_length = ntohs(ch_req->chunk_length); ++ remaining_length = ntohs(ch_req->chunk_length) - sizeof(struct sctp_chunkhdr); + + /* setup for adding the response */ + sctp_alloc_a_chunk(stcb, chk); +@@ -4088,20 +4091,27 @@ strres_nochunk: + ch->chunk_length = htons(chk->send_size); + SCTP_BUF_LEN(chk->data) = SCTP_SIZE32(chk->send_size); + offset += sizeof(struct sctp_chunkhdr); +- while ((size_t)chk_length >= sizeof(struct sctp_stream_reset_tsn_request)) { ++ while (remaining_length >= sizeof(struct sctp_paramhdr)) { + ph = (struct sctp_paramhdr *)sctp_m_getptr(m, offset, sizeof(pstore), (uint8_t *) & pstore); +- if (ph == NULL) ++ if (ph == NULL) { ++ /* TSNH */ + break; ++ } + param_len = ntohs(ph->param_length); +- if (param_len < (int)sizeof(struct sctp_stream_reset_tsn_request)) { +- /* bad param */ ++ if ((param_len > remaining_length) || ++ (param_len < (sizeof(struct sctp_paramhdr) + sizeof(uint32_t)))) { ++ /* bad parameter length */ + break; + } +- ph = (struct sctp_paramhdr *)sctp_m_getptr(m, offset, min(param_len, (int)sizeof(cstore)), ++ ph = (struct sctp_paramhdr *)sctp_m_getptr(m, offset, min(param_len, sizeof(cstore)), + (uint8_t *) & cstore); ++ if (ph == NULL) { ++ /* TSNH */ ++ break; ++ } + ptype = ntohs(ph->param_type); + num_param++; +- if (param_len > (int)sizeof(cstore)) { ++ if (param_len > sizeof(cstore)) { + trunc = 1; + } else { + trunc = 0; +@@ -4113,6 +4123,9 @@ strres_nochunk: + if (ptype == SCTP_STR_RESET_OUT_REQUEST) { + struct sctp_stream_reset_out_request *req_out; + ++ if (param_len < sizeof(struct sctp_stream_reset_out_request)) { ++ break; ++ } + req_out = (struct sctp_stream_reset_out_request *)ph; + num_req++; + if (stcb->asoc.stream_reset_outstanding) { +@@ -4126,6 +4139,9 @@ strres_nochunk: + } else if (ptype == SCTP_STR_RESET_ADD_OUT_STREAMS) { + struct sctp_stream_reset_add_strm *str_add; + ++ if (param_len < sizeof(struct sctp_stream_reset_add_strm)) { ++ break; ++ } + str_add = (struct sctp_stream_reset_add_strm *)ph; + num_req++; + sctp_handle_str_reset_add_strm(stcb, chk, str_add); +@@ -4132,6 +4148,9 @@ strres_nochunk: + } else if (ptype == SCTP_STR_RESET_ADD_IN_STREAMS) { + struct sctp_stream_reset_add_strm *str_add; + ++ if (param_len < sizeof(struct sctp_stream_reset_add_strm)) { ++ break; ++ } + str_add = (struct sctp_stream_reset_add_strm *)ph; + num_req++; + sctp_handle_str_reset_add_out_strm(stcb, chk, str_add); +@@ -4156,6 +4175,9 @@ strres_nochunk: + struct sctp_stream_reset_response *resp; + uint32_t result; + ++ if (param_len < sizeof(struct sctp_stream_reset_response)) { ++ break; ++ } + resp = (struct sctp_stream_reset_response *)ph; + seq = ntohl(resp->response_seq); + result = ntohl(resp->result); +@@ -4167,7 +4189,11 @@ strres_nochunk: + break; + } + offset += SCTP_SIZE32(param_len); +- chk_length -= SCTP_SIZE32(param_len); ++ if (remaining_length >= SCTP_SIZE32(param_len)) { ++ remaining_length -= SCTP_SIZE32(param_len); ++ } else { ++ remaining_length = 0; ++ } + } + if (num_req == 0) { + /* we have no response free the stuff */ Added: user/cperciva/freebsd-update-build/patches/10.1-RELEASE/5-SA-15:02.kmem ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/cperciva/freebsd-update-build/patches/10.1-RELEASE/5-SA-15:02.kmem Tue Jan 27 20:00:55 2015 (r277813) @@ -0,0 +1,45 @@ +Index: sys/netinet/sctp_usrreq.c +=================================================================== +--- sys/netinet/sctp_usrreq.c (revision 277788) ++++ sys/netinet/sctp_usrreq.c (working copy) +@@ -1863,8 +1863,9 @@ flags_out: + SCTP_CHECK_AND_CAST(av, optval, struct sctp_stream_value, *optsize); + SCTP_FIND_STCB(inp, stcb, av->assoc_id); + if (stcb) { +- if (stcb->asoc.ss_functions.sctp_ss_get_value(stcb, &stcb->asoc, &stcb->asoc.strmout[av->stream_id], +- &av->stream_value) < 0) { ++ if ((av->stream_id >= stcb->asoc.streamoutcnt) || ++ (stcb->asoc.ss_functions.sctp_ss_get_value(stcb, &stcb->asoc, &stcb->asoc.strmout[av->stream_id], ++ &av->stream_value) < 0)) { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; + } else { +@@ -4032,8 +4033,9 @@ sctp_setopt(struct socket *so, int optname, void * + SCTP_CHECK_AND_CAST(av, optval, struct sctp_stream_value, optsize); + SCTP_FIND_STCB(inp, stcb, av->assoc_id); + if (stcb) { +- if (stcb->asoc.ss_functions.sctp_ss_set_value(stcb, &stcb->asoc, &stcb->asoc.strmout[av->stream_id], +- av->stream_value) < 0) { ++ if ((av->stream_id >= stcb->asoc.streamoutcnt) || ++ (stcb->asoc.ss_functions.sctp_ss_set_value(stcb, &stcb->asoc, &stcb->asoc.strmout[av->stream_id], ++ av->stream_value) < 0)) { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; + } +@@ -4043,10 +4045,12 @@ sctp_setopt(struct socket *so, int optname, void * + SCTP_INP_RLOCK(inp); + LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) { + SCTP_TCB_LOCK(stcb); +- stcb->asoc.ss_functions.sctp_ss_set_value(stcb, +- &stcb->asoc, +- &stcb->asoc.strmout[av->stream_id], +- av->stream_value); ++ if (av->stream_id < stcb->asoc.streamoutcnt) { ++ stcb->asoc.ss_functions.sctp_ss_set_value(stcb, ++ &stcb->asoc, ++ &stcb->asoc.strmout[av->stream_id], ++ av->stream_value); ++ } + SCTP_TCB_UNLOCK(stcb); + } + SCTP_INP_RUNLOCK(inp); Added: user/cperciva/freebsd-update-build/patches/10.1-RELEASE/5-SA-15:03.sctp ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/cperciva/freebsd-update-build/patches/10.1-RELEASE/5-SA-15:03.sctp Tue Jan 27 20:00:55 2015 (r277813) @@ -0,0 +1,119 @@ +Index: sys/netinet/sctp_input.c +=================================================================== +--- sys/netinet/sctp_input.c (revision 277788) ++++ sys/netinet/sctp_input.c (working copy) +@@ -3649,6 +3649,9 @@ sctp_handle_stream_reset_response(struct sctp_tcb + /* huh ? */ + return (0); + } ++ if (ntohs(respin->ph.param_length) < sizeof(struct sctp_stream_reset_response_tsn)) { ++ return (0); ++ } + if (action == SCTP_STREAM_RESET_RESULT_PERFORMED) { + resp = (struct sctp_stream_reset_response_tsn *)respin; + asoc->stream_reset_outstanding--; +@@ -4037,7 +4040,7 @@ __attribute__((noinline)) + sctp_handle_stream_reset(struct sctp_tcb *stcb, struct mbuf *m, int offset, + struct sctp_chunkhdr *ch_req) + { +- int chk_length, param_len, ptype; ++ uint16_t remaining_length, param_len, ptype; + struct sctp_paramhdr pstore; + uint8_t cstore[SCTP_CHUNK_BUFFER_SIZE]; + uint32_t seq = 0; +@@ -4050,7 +4053,7 @@ __attribute__((noinline)) + int num_param = 0; + + /* now it may be a reset or a reset-response */ +- chk_length = ntohs(ch_req->chunk_length); ++ remaining_length = ntohs(ch_req->chunk_length) - sizeof(struct sctp_chunkhdr); + + /* setup for adding the response */ + sctp_alloc_a_chunk(stcb, chk); +@@ -4088,20 +4091,27 @@ strres_nochunk: + ch->chunk_length = htons(chk->send_size); + SCTP_BUF_LEN(chk->data) = SCTP_SIZE32(chk->send_size); + offset += sizeof(struct sctp_chunkhdr); +- while ((size_t)chk_length >= sizeof(struct sctp_stream_reset_tsn_request)) { ++ while (remaining_length >= sizeof(struct sctp_paramhdr)) { + ph = (struct sctp_paramhdr *)sctp_m_getptr(m, offset, sizeof(pstore), (uint8_t *) & pstore); +- if (ph == NULL) ++ if (ph == NULL) { ++ /* TSNH */ + break; ++ } + param_len = ntohs(ph->param_length); +- if (param_len < (int)sizeof(struct sctp_stream_reset_tsn_request)) { +- /* bad param */ ++ if ((param_len > remaining_length) || ++ (param_len < (sizeof(struct sctp_paramhdr) + sizeof(uint32_t)))) { ++ /* bad parameter length */ + break; + } +- ph = (struct sctp_paramhdr *)sctp_m_getptr(m, offset, min(param_len, (int)sizeof(cstore)), ++ ph = (struct sctp_paramhdr *)sctp_m_getptr(m, offset, min(param_len, sizeof(cstore)), + (uint8_t *) & cstore); ++ if (ph == NULL) { ++ /* TSNH */ ++ break; ++ } + ptype = ntohs(ph->param_type); + num_param++; +- if (param_len > (int)sizeof(cstore)) { ++ if (param_len > sizeof(cstore)) { + trunc = 1; + } else { + trunc = 0; +@@ -4113,6 +4123,9 @@ strres_nochunk: + if (ptype == SCTP_STR_RESET_OUT_REQUEST) { + struct sctp_stream_reset_out_request *req_out; + ++ if (param_len < sizeof(struct sctp_stream_reset_out_request)) { ++ break; ++ } + req_out = (struct sctp_stream_reset_out_request *)ph; + num_req++; + if (stcb->asoc.stream_reset_outstanding) { +@@ -4126,6 +4139,9 @@ strres_nochunk: + } else if (ptype == SCTP_STR_RESET_ADD_OUT_STREAMS) { + struct sctp_stream_reset_add_strm *str_add; + ++ if (param_len < sizeof(struct sctp_stream_reset_add_strm)) { ++ break; ++ } + str_add = (struct sctp_stream_reset_add_strm *)ph; + num_req++; + sctp_handle_str_reset_add_strm(stcb, chk, str_add); +@@ -4132,6 +4148,9 @@ strres_nochunk: + } else if (ptype == SCTP_STR_RESET_ADD_IN_STREAMS) { + struct sctp_stream_reset_add_strm *str_add; + ++ if (param_len < sizeof(struct sctp_stream_reset_add_strm)) { ++ break; ++ } + str_add = (struct sctp_stream_reset_add_strm *)ph; + num_req++; + sctp_handle_str_reset_add_out_strm(stcb, chk, str_add); +@@ -4156,6 +4175,9 @@ strres_nochunk: + struct sctp_stream_reset_response *resp; + uint32_t result; + ++ if (param_len < sizeof(struct sctp_stream_reset_response)) { ++ break; ++ } + resp = (struct sctp_stream_reset_response *)ph; + seq = ntohl(resp->response_seq); + result = ntohl(resp->result); +@@ -4167,7 +4189,11 @@ strres_nochunk: + break; + } + offset += SCTP_SIZE32(param_len); +- chk_length -= SCTP_SIZE32(param_len); ++ if (remaining_length >= SCTP_SIZE32(param_len)) { ++ remaining_length -= SCTP_SIZE32(param_len); ++ } else { ++ remaining_length = 0; ++ } + } + if (num_req == 0) { + /* we have no response free the stuff */ Added: user/cperciva/freebsd-update-build/patches/8.4-RELEASE/23-SA-15:02.kmem ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/cperciva/freebsd-update-build/patches/8.4-RELEASE/23-SA-15:02.kmem Tue Jan 27 20:00:55 2015 (r277813) @@ -0,0 +1,45 @@ +Index: sys/netinet/sctp_usrreq.c +=================================================================== +--- sys/netinet/sctp_usrreq.c (revision 277788) ++++ sys/netinet/sctp_usrreq.c (working copy) +@@ -1863,8 +1863,9 @@ flags_out: + SCTP_CHECK_AND_CAST(av, optval, struct sctp_stream_value, *optsize); + SCTP_FIND_STCB(inp, stcb, av->assoc_id); + if (stcb) { +- if (stcb->asoc.ss_functions.sctp_ss_get_value(stcb, &stcb->asoc, &stcb->asoc.strmout[av->stream_id], +- &av->stream_value) < 0) { ++ if ((av->stream_id >= stcb->asoc.streamoutcnt) || ++ (stcb->asoc.ss_functions.sctp_ss_get_value(stcb, &stcb->asoc, &stcb->asoc.strmout[av->stream_id], ++ &av->stream_value) < 0)) { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; + } else { +@@ -4032,8 +4033,9 @@ sctp_setopt(struct socket *so, int optname, void * + SCTP_CHECK_AND_CAST(av, optval, struct sctp_stream_value, optsize); + SCTP_FIND_STCB(inp, stcb, av->assoc_id); + if (stcb) { +- if (stcb->asoc.ss_functions.sctp_ss_set_value(stcb, &stcb->asoc, &stcb->asoc.strmout[av->stream_id], +- av->stream_value) < 0) { ++ if ((av->stream_id >= stcb->asoc.streamoutcnt) || ++ (stcb->asoc.ss_functions.sctp_ss_set_value(stcb, &stcb->asoc, &stcb->asoc.strmout[av->stream_id], ++ av->stream_value) < 0)) { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; + } +@@ -4043,10 +4045,12 @@ sctp_setopt(struct socket *so, int optname, void * + SCTP_INP_RLOCK(inp); + LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) { + SCTP_TCB_LOCK(stcb); +- stcb->asoc.ss_functions.sctp_ss_set_value(stcb, +- &stcb->asoc, +- &stcb->asoc.strmout[av->stream_id], +- av->stream_value); ++ if (av->stream_id < stcb->asoc.streamoutcnt) { ++ stcb->asoc.ss_functions.sctp_ss_set_value(stcb, ++ &stcb->asoc, ++ &stcb->asoc.strmout[av->stream_id], ++ av->stream_value); ++ } + SCTP_TCB_UNLOCK(stcb); + } + SCTP_INP_RUNLOCK(inp); Added: user/cperciva/freebsd-update-build/patches/8.4-RELEASE/23-SA-15:03.sctp ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/cperciva/freebsd-update-build/patches/8.4-RELEASE/23-SA-15:03.sctp Tue Jan 27 20:00:55 2015 (r277813) @@ -0,0 +1,119 @@ +Index: sys/netinet/sctp_input.c +=================================================================== +--- sys/netinet/sctp_input.c (revision 277788) ++++ sys/netinet/sctp_input.c (working copy) +@@ -3649,6 +3649,9 @@ sctp_handle_stream_reset_response(struct sctp_tcb + /* huh ? */ + return (0); + } ++ if (ntohs(respin->ph.param_length) < sizeof(struct sctp_stream_reset_response_tsn)) { ++ return (0); ++ } + if (action == SCTP_STREAM_RESET_RESULT_PERFORMED) { + resp = (struct sctp_stream_reset_response_tsn *)respin; + asoc->stream_reset_outstanding--; +@@ -4037,7 +4040,7 @@ __attribute__((noinline)) + sctp_handle_stream_reset(struct sctp_tcb *stcb, struct mbuf *m, int offset, + struct sctp_chunkhdr *ch_req) + { +- int chk_length, param_len, ptype; ++ uint16_t remaining_length, param_len, ptype; + struct sctp_paramhdr pstore; + uint8_t cstore[SCTP_CHUNK_BUFFER_SIZE]; + uint32_t seq = 0; +@@ -4050,7 +4053,7 @@ __attribute__((noinline)) + int num_param = 0; + + /* now it may be a reset or a reset-response */ +- chk_length = ntohs(ch_req->chunk_length); ++ remaining_length = ntohs(ch_req->chunk_length) - sizeof(struct sctp_chunkhdr); + + /* setup for adding the response */ + sctp_alloc_a_chunk(stcb, chk); +@@ -4088,20 +4091,27 @@ strres_nochunk: + ch->chunk_length = htons(chk->send_size); + SCTP_BUF_LEN(chk->data) = SCTP_SIZE32(chk->send_size); + offset += sizeof(struct sctp_chunkhdr); +- while ((size_t)chk_length >= sizeof(struct sctp_stream_reset_tsn_request)) { ++ while (remaining_length >= sizeof(struct sctp_paramhdr)) { + ph = (struct sctp_paramhdr *)sctp_m_getptr(m, offset, sizeof(pstore), (uint8_t *) & pstore); +- if (ph == NULL) ++ if (ph == NULL) { ++ /* TSNH */ + break; ++ } + param_len = ntohs(ph->param_length); +- if (param_len < (int)sizeof(struct sctp_stream_reset_tsn_request)) { +- /* bad param */ ++ if ((param_len > remaining_length) || ++ (param_len < (sizeof(struct sctp_paramhdr) + sizeof(uint32_t)))) { ++ /* bad parameter length */ + break; + } +- ph = (struct sctp_paramhdr *)sctp_m_getptr(m, offset, min(param_len, (int)sizeof(cstore)), ++ ph = (struct sctp_paramhdr *)sctp_m_getptr(m, offset, min(param_len, sizeof(cstore)), + (uint8_t *) & cstore); ++ if (ph == NULL) { ++ /* TSNH */ ++ break; ++ } + ptype = ntohs(ph->param_type); + num_param++; +- if (param_len > (int)sizeof(cstore)) { ++ if (param_len > sizeof(cstore)) { + trunc = 1; + } else { + trunc = 0; +@@ -4113,6 +4123,9 @@ strres_nochunk: + if (ptype == SCTP_STR_RESET_OUT_REQUEST) { + struct sctp_stream_reset_out_request *req_out; + ++ if (param_len < sizeof(struct sctp_stream_reset_out_request)) { ++ break; ++ } + req_out = (struct sctp_stream_reset_out_request *)ph; + num_req++; + if (stcb->asoc.stream_reset_outstanding) { +@@ -4126,6 +4139,9 @@ strres_nochunk: + } else if (ptype == SCTP_STR_RESET_ADD_OUT_STREAMS) { + struct sctp_stream_reset_add_strm *str_add; + ++ if (param_len < sizeof(struct sctp_stream_reset_add_strm)) { ++ break; ++ } + str_add = (struct sctp_stream_reset_add_strm *)ph; + num_req++; + sctp_handle_str_reset_add_strm(stcb, chk, str_add); +@@ -4132,6 +4148,9 @@ strres_nochunk: + } else if (ptype == SCTP_STR_RESET_ADD_IN_STREAMS) { + struct sctp_stream_reset_add_strm *str_add; + ++ if (param_len < sizeof(struct sctp_stream_reset_add_strm)) { ++ break; ++ } + str_add = (struct sctp_stream_reset_add_strm *)ph; + num_req++; + sctp_handle_str_reset_add_out_strm(stcb, chk, str_add); +@@ -4156,6 +4175,9 @@ strres_nochunk: + struct sctp_stream_reset_response *resp; + uint32_t result; + ++ if (param_len < sizeof(struct sctp_stream_reset_response)) { ++ break; ++ } + resp = (struct sctp_stream_reset_response *)ph; + seq = ntohl(resp->response_seq); + result = ntohl(resp->result); +@@ -4167,7 +4189,11 @@ strres_nochunk: + break; + } + offset += SCTP_SIZE32(param_len); +- chk_length -= SCTP_SIZE32(param_len); ++ if (remaining_length >= SCTP_SIZE32(param_len)) { ++ remaining_length -= SCTP_SIZE32(param_len); ++ } else { ++ remaining_length = 0; ++ } + } + if (num_req == 0) { + /* we have no response free the stuff */ Added: user/cperciva/freebsd-update-build/patches/9.3-RELEASE/9-SA-15:02.kmem ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/cperciva/freebsd-update-build/patches/9.3-RELEASE/9-SA-15:02.kmem Tue Jan 27 20:00:55 2015 (r277813) @@ -0,0 +1,45 @@ +Index: sys/netinet/sctp_usrreq.c +=================================================================== +--- sys/netinet/sctp_usrreq.c (revision 277788) ++++ sys/netinet/sctp_usrreq.c (working copy) +@@ -1863,8 +1863,9 @@ flags_out: + SCTP_CHECK_AND_CAST(av, optval, struct sctp_stream_value, *optsize); + SCTP_FIND_STCB(inp, stcb, av->assoc_id); + if (stcb) { +- if (stcb->asoc.ss_functions.sctp_ss_get_value(stcb, &stcb->asoc, &stcb->asoc.strmout[av->stream_id], +- &av->stream_value) < 0) { ++ if ((av->stream_id >= stcb->asoc.streamoutcnt) || ++ (stcb->asoc.ss_functions.sctp_ss_get_value(stcb, &stcb->asoc, &stcb->asoc.strmout[av->stream_id], ++ &av->stream_value) < 0)) { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; + } else { +@@ -4032,8 +4033,9 @@ sctp_setopt(struct socket *so, int optname, void * + SCTP_CHECK_AND_CAST(av, optval, struct sctp_stream_value, optsize); + SCTP_FIND_STCB(inp, stcb, av->assoc_id); + if (stcb) { +- if (stcb->asoc.ss_functions.sctp_ss_set_value(stcb, &stcb->asoc, &stcb->asoc.strmout[av->stream_id], +- av->stream_value) < 0) { ++ if ((av->stream_id >= stcb->asoc.streamoutcnt) || ++ (stcb->asoc.ss_functions.sctp_ss_set_value(stcb, &stcb->asoc, &stcb->asoc.strmout[av->stream_id], ++ av->stream_value) < 0)) { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; + } +@@ -4043,10 +4045,12 @@ sctp_setopt(struct socket *so, int optname, void * + SCTP_INP_RLOCK(inp); + LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) { + SCTP_TCB_LOCK(stcb); +- stcb->asoc.ss_functions.sctp_ss_set_value(stcb, +- &stcb->asoc, +- &stcb->asoc.strmout[av->stream_id], +- av->stream_value); ++ if (av->stream_id < stcb->asoc.streamoutcnt) { ++ stcb->asoc.ss_functions.sctp_ss_set_value(stcb, ++ &stcb->asoc, ++ &stcb->asoc.strmout[av->stream_id], ++ av->stream_value); ++ } + SCTP_TCB_UNLOCK(stcb); + } + SCTP_INP_RUNLOCK(inp); Added: user/cperciva/freebsd-update-build/patches/9.3-RELEASE/9-SA-15:03.sctp ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/cperciva/freebsd-update-build/patches/9.3-RELEASE/9-SA-15:03.sctp Tue Jan 27 20:00:55 2015 (r277813) @@ -0,0 +1,119 @@ +Index: sys/netinet/sctp_input.c +=================================================================== +--- sys/netinet/sctp_input.c (revision 277788) ++++ sys/netinet/sctp_input.c (working copy) +@@ -3649,6 +3649,9 @@ sctp_handle_stream_reset_response(struct sctp_tcb + /* huh ? */ + return (0); + } ++ if (ntohs(respin->ph.param_length) < sizeof(struct sctp_stream_reset_response_tsn)) { ++ return (0); ++ } + if (action == SCTP_STREAM_RESET_RESULT_PERFORMED) { + resp = (struct sctp_stream_reset_response_tsn *)respin; + asoc->stream_reset_outstanding--; +@@ -4037,7 +4040,7 @@ __attribute__((noinline)) + sctp_handle_stream_reset(struct sctp_tcb *stcb, struct mbuf *m, int offset, + struct sctp_chunkhdr *ch_req) + { +- int chk_length, param_len, ptype; ++ uint16_t remaining_length, param_len, ptype; + struct sctp_paramhdr pstore; + uint8_t cstore[SCTP_CHUNK_BUFFER_SIZE]; + uint32_t seq = 0; +@@ -4050,7 +4053,7 @@ __attribute__((noinline)) + int num_param = 0; + + /* now it may be a reset or a reset-response */ +- chk_length = ntohs(ch_req->chunk_length); ++ remaining_length = ntohs(ch_req->chunk_length) - sizeof(struct sctp_chunkhdr); + + /* setup for adding the response */ + sctp_alloc_a_chunk(stcb, chk); +@@ -4088,20 +4091,27 @@ strres_nochunk: + ch->chunk_length = htons(chk->send_size); + SCTP_BUF_LEN(chk->data) = SCTP_SIZE32(chk->send_size); + offset += sizeof(struct sctp_chunkhdr); +- while ((size_t)chk_length >= sizeof(struct sctp_stream_reset_tsn_request)) { ++ while (remaining_length >= sizeof(struct sctp_paramhdr)) { + ph = (struct sctp_paramhdr *)sctp_m_getptr(m, offset, sizeof(pstore), (uint8_t *) & pstore); +- if (ph == NULL) ++ if (ph == NULL) { ++ /* TSNH */ + break; ++ } + param_len = ntohs(ph->param_length); +- if (param_len < (int)sizeof(struct sctp_stream_reset_tsn_request)) { +- /* bad param */ ++ if ((param_len > remaining_length) || ++ (param_len < (sizeof(struct sctp_paramhdr) + sizeof(uint32_t)))) { ++ /* bad parameter length */ + break; + } +- ph = (struct sctp_paramhdr *)sctp_m_getptr(m, offset, min(param_len, (int)sizeof(cstore)), ++ ph = (struct sctp_paramhdr *)sctp_m_getptr(m, offset, min(param_len, sizeof(cstore)), + (uint8_t *) & cstore); ++ if (ph == NULL) { ++ /* TSNH */ ++ break; ++ } + ptype = ntohs(ph->param_type); + num_param++; +- if (param_len > (int)sizeof(cstore)) { ++ if (param_len > sizeof(cstore)) { + trunc = 1; + } else { + trunc = 0; +@@ -4113,6 +4123,9 @@ strres_nochunk: + if (ptype == SCTP_STR_RESET_OUT_REQUEST) { + struct sctp_stream_reset_out_request *req_out; + ++ if (param_len < sizeof(struct sctp_stream_reset_out_request)) { ++ break; ++ } + req_out = (struct sctp_stream_reset_out_request *)ph; + num_req++; + if (stcb->asoc.stream_reset_outstanding) { +@@ -4126,6 +4139,9 @@ strres_nochunk: + } else if (ptype == SCTP_STR_RESET_ADD_OUT_STREAMS) { + struct sctp_stream_reset_add_strm *str_add; + ++ if (param_len < sizeof(struct sctp_stream_reset_add_strm)) { ++ break; ++ } + str_add = (struct sctp_stream_reset_add_strm *)ph; + num_req++; + sctp_handle_str_reset_add_strm(stcb, chk, str_add); +@@ -4132,6 +4148,9 @@ strres_nochunk: + } else if (ptype == SCTP_STR_RESET_ADD_IN_STREAMS) { + struct sctp_stream_reset_add_strm *str_add; + ++ if (param_len < sizeof(struct sctp_stream_reset_add_strm)) { ++ break; ++ } + str_add = (struct sctp_stream_reset_add_strm *)ph; + num_req++; + sctp_handle_str_reset_add_out_strm(stcb, chk, str_add); +@@ -4156,6 +4175,9 @@ strres_nochunk: + struct sctp_stream_reset_response *resp; + uint32_t result; + ++ if (param_len < sizeof(struct sctp_stream_reset_response)) { ++ break; ++ } + resp = (struct sctp_stream_reset_response *)ph; + seq = ntohl(resp->response_seq); + result = ntohl(resp->result); +@@ -4167,7 +4189,11 @@ strres_nochunk: + break; + } + offset += SCTP_SIZE32(param_len); +- chk_length -= SCTP_SIZE32(param_len); ++ if (remaining_length >= SCTP_SIZE32(param_len)) { ++ remaining_length -= SCTP_SIZE32(param_len); ++ } else { ++ remaining_length = 0; ++ } + } + if (num_req == 0) { + /* we have no response free the stuff */ From owner-svn-src-user@FreeBSD.ORG Wed Jan 28 23:00:22 2015 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E3A66979; Wed, 28 Jan 2015 23:00:22 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id B5E3BF37; Wed, 28 Jan 2015 23:00:22 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t0SN0MI0012394; Wed, 28 Jan 2015 23:00:22 GMT (envelope-from delphij@FreeBSD.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0SN0M4D012393; Wed, 28 Jan 2015 23:00:22 GMT (envelope-from delphij@FreeBSD.org) Message-Id: <201501282300.t0SN0M4D012393@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: delphij set sender to delphij@FreeBSD.org using -f From: Xin LI Date: Wed, 28 Jan 2015 23:00:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r277864 - user/delphij/zfs-arc-rebase X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Jan 2015 23:00:23 -0000 Author: delphij Date: Wed Jan 28 23:00:22 2015 New Revision: 277864 URL: https://svnweb.freebsd.org/changeset/base/277864 Log: Copy head/ to a user branch where I can work on it without disturbing -HEAD. Added: - copied from r277863, head/ Directory Properties: user/delphij/zfs-arc-rebase/ (props changed) From owner-svn-src-user@FreeBSD.ORG Wed Jan 28 23:13:12 2015 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E0943D90; Wed, 28 Jan 2015 23:13:12 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id CAEA1173; Wed, 28 Jan 2015 23:13:12 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t0SNDCti020591; Wed, 28 Jan 2015 23:13:12 GMT (envelope-from delphij@FreeBSD.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0SNDC3B020590; Wed, 28 Jan 2015 23:13:12 GMT (envelope-from delphij@FreeBSD.org) Message-Id: <201501282313.t0SNDC3B020590@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: delphij set sender to delphij@FreeBSD.org using -f From: Xin LI Date: Wed, 28 Jan 2015 23:13:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r277865 - user/delphij/zfs-arc-rebase/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Jan 2015 23:13:13 -0000 Author: delphij Date: Wed Jan 28 23:13:12 2015 New Revision: 277865 URL: https://svnweb.freebsd.org/changeset/base/277865 Log: Undo portion of r205231 (kmacy) which breaks up ARC state locks into 16 as well as the related r272708 (avg). Upstream have implemented this differently and we will adopt the upstream implementation. Modified: user/delphij/zfs-arc-rebase/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Modified: user/delphij/zfs-arc-rebase/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c ============================================================================== --- user/delphij/zfs-arc-rebase/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Wed Jan 28 23:00:22 2015 (r277864) +++ user/delphij/zfs-arc-rebase/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Wed Jan 28 23:13:12 2015 (r277865) @@ -195,6 +195,9 @@ extern int zfs_prefetch_disable; */ static boolean_t arc_warm; +/* + * These tunables are for performance analysis. + */ uint64_t zfs_arc_max; uint64_t zfs_arc_min; uint64_t zfs_arc_meta_limit = 0; @@ -306,31 +309,13 @@ SYSCTL_PROC(_vfs_zfs, OID_AUTO, arc_meta * second level ARC benefit from these fast lookups. */ -#define ARCS_LOCK_PAD CACHE_LINE_SIZE -struct arcs_lock { - kmutex_t arcs_lock; -#ifdef _KERNEL - unsigned char pad[(ARCS_LOCK_PAD - sizeof (kmutex_t))]; -#endif -}; - -/* - * must be power of two for mask use to work - * - */ -#define ARC_BUFC_NUMDATALISTS 16 -#define ARC_BUFC_NUMMETADATALISTS 16 -#define ARC_BUFC_NUMLISTS (ARC_BUFC_NUMMETADATALISTS + ARC_BUFC_NUMDATALISTS) - typedef struct arc_state { + list_t arcs_list[ARC_BUFC_NUMTYPES]; /* list of evictable buffers */ uint64_t arcs_lsize[ARC_BUFC_NUMTYPES]; /* amount of evictable data */ uint64_t arcs_size; /* total amount of data in this state */ - list_t arcs_lists[ARC_BUFC_NUMLISTS]; /* list of evictable buffers */ - struct arcs_lock arcs_locks[ARC_BUFC_NUMLISTS] __aligned(CACHE_LINE_SIZE); + kmutex_t arcs_mtx; } arc_state_t; -#define ARCS_LOCK(s, i) (&((s)->arcs_locks[(i)].arcs_lock)) - /* The 6 states: */ static arc_state_t ARC_anon; static arc_state_t ARC_mru; @@ -1305,23 +1290,6 @@ arc_buf_freeze(arc_buf_t *buf) } static void -get_buf_info(arc_buf_hdr_t *hdr, arc_state_t *state, list_t **list, kmutex_t **lock) -{ - uint64_t buf_hashid = buf_hash(hdr->b_spa, &hdr->b_dva, hdr->b_birth); - - if (hdr->b_type == ARC_BUFC_METADATA) - buf_hashid &= (ARC_BUFC_NUMMETADATALISTS - 1); - else { - buf_hashid &= (ARC_BUFC_NUMDATALISTS - 1); - buf_hashid += ARC_BUFC_NUMMETADATALISTS; - } - - *list = &state->arcs_lists[buf_hashid]; - *lock = ARCS_LOCK(state, buf_hashid); -} - - -static void add_reference(arc_buf_hdr_t *hdr, kmutex_t *hash_lock, void *tag) { ASSERT(MUTEX_HELD(hash_lock)); @@ -1329,13 +1297,11 @@ add_reference(arc_buf_hdr_t *hdr, kmutex if ((refcount_add(&hdr->b_refcnt, tag) == 1) && (hdr->b_state != arc_anon)) { uint64_t delta = hdr->b_size * hdr->b_datacnt; + list_t *list = &hdr->b_state->arcs_list[hdr->b_type]; uint64_t *size = &hdr->b_state->arcs_lsize[hdr->b_type]; - list_t *list; - kmutex_t *lock; - get_buf_info(hdr, hdr->b_state, &list, &lock); - ASSERT(!MUTEX_HELD(lock)); - mutex_enter(lock); + ASSERT(!MUTEX_HELD(&hdr->b_state->arcs_mtx)); + mutex_enter(&hdr->b_state->arcs_mtx); ASSERT(list_link_active(&hdr->b_arc_node)); list_remove(list, hdr); if (GHOST_STATE(hdr->b_state)) { @@ -1346,7 +1312,7 @@ add_reference(arc_buf_hdr_t *hdr, kmutex ASSERT(delta > 0); ASSERT3U(*size, >=, delta); atomic_add_64(size, -delta); - mutex_exit(lock); + mutex_exit(&hdr->b_state->arcs_mtx); /* remove the prefetch flag if we get a reference */ if (hdr->b_flags & ARC_FLAG_PREFETCH) hdr->b_flags &= ~ARC_FLAG_PREFETCH; @@ -1365,17 +1331,14 @@ remove_reference(arc_buf_hdr_t *hdr, kmu if (((cnt = refcount_remove(&hdr->b_refcnt, tag)) == 0) && (state != arc_anon)) { uint64_t *size = &state->arcs_lsize[hdr->b_type]; - list_t *list; - kmutex_t *lock; - get_buf_info(hdr, state, &list, &lock); - ASSERT(!MUTEX_HELD(lock)); - mutex_enter(lock); + ASSERT(!MUTEX_HELD(&state->arcs_mtx)); + mutex_enter(&state->arcs_mtx); ASSERT(!list_link_active(&hdr->b_arc_node)); - list_insert_head(list, hdr); + list_insert_head(&state->arcs_list[hdr->b_type], hdr); ASSERT(hdr->b_datacnt > 0); atomic_add_64(size, hdr->b_size * hdr->b_datacnt); - mutex_exit(lock); + mutex_exit(&state->arcs_mtx); } return (cnt); } @@ -1391,8 +1354,6 @@ arc_change_state(arc_state_t *new_state, arc_state_t *old_state = hdr->b_state; int64_t refcnt = refcount_count(&hdr->b_refcnt); uint64_t from_delta, to_delta; - list_t *list; - kmutex_t *lock; ASSERT(MUTEX_HELD(hash_lock)); ASSERT3P(new_state, !=, old_state); @@ -1408,16 +1369,14 @@ arc_change_state(arc_state_t *new_state, */ if (refcnt == 0) { if (old_state != arc_anon) { - int use_mutex; + int use_mutex = !MUTEX_HELD(&old_state->arcs_mtx); uint64_t *size = &old_state->arcs_lsize[hdr->b_type]; - get_buf_info(hdr, old_state, &list, &lock); - use_mutex = !MUTEX_HELD(lock); if (use_mutex) - mutex_enter(lock); + mutex_enter(&old_state->arcs_mtx); ASSERT(list_link_active(&hdr->b_arc_node)); - list_remove(list, hdr); + list_remove(&old_state->arcs_list[hdr->b_type], hdr); /* * If prefetching out of the ghost cache, @@ -1432,18 +1391,17 @@ arc_change_state(arc_state_t *new_state, atomic_add_64(size, -from_delta); if (use_mutex) - mutex_exit(lock); + mutex_exit(&old_state->arcs_mtx); } if (new_state != arc_anon) { - int use_mutex; + int use_mutex = !MUTEX_HELD(&new_state->arcs_mtx); uint64_t *size = &new_state->arcs_lsize[hdr->b_type]; - get_buf_info(hdr, new_state, &list, &lock); - use_mutex = !MUTEX_HELD(lock); if (use_mutex) - mutex_enter(lock); + mutex_enter(&new_state->arcs_mtx); - list_insert_head(list, hdr); + list_insert_head(&new_state->arcs_list[hdr->b_type], + hdr); /* ghost elements have a ghost size */ if (GHOST_STATE(new_state)) { @@ -1454,7 +1412,7 @@ arc_change_state(arc_state_t *new_state, atomic_add_64(size, to_delta); if (use_mutex) - mutex_exit(lock); + mutex_exit(&new_state->arcs_mtx); } } @@ -2028,52 +1986,49 @@ arc_evict(arc_state_t *state, uint64_t s { arc_state_t *evicted_state; uint64_t bytes_evicted = 0, skipped = 0, missed = 0; - int64_t bytes_remaining; arc_buf_hdr_t *hdr, *hdr_prev = NULL; - list_t *evicted_list, *list, *evicted_list_start, *list_start; - kmutex_t *lock, *evicted_lock; kmutex_t *hash_lock; boolean_t have_lock; void *stolen = NULL; arc_buf_hdr_t marker = { 0 }; int count = 0; - static int evict_metadata_offset, evict_data_offset; - int i, idx, offset, list_count, lists; ASSERT(state == arc_mru || state == arc_mfu); evicted_state = (state == arc_mru) ? arc_mru_ghost : arc_mfu_ghost; + mutex_enter(&state->arcs_mtx); + mutex_enter(&evicted_state->arcs_mtx); + /* * Decide which "type" (data vs metadata) to recycle from. * * If we are over the metadata limit, recycle from metadata. * If we are under the metadata minimum, recycle from data. * Otherwise, recycle from whichever type has the oldest (least - * recently accessed) header. This is not yet implemented. + * recently accessed) header. */ if (recycle) { + arc_buf_hdr_t *data_hdr = + list_tail(&state->arcs_list[ARC_BUFC_DATA]); + arc_buf_hdr_t *metadata_hdr = + list_tail(&state->arcs_list[ARC_BUFC_METADATA]); arc_buf_contents_t realtype; - if (state->arcs_lsize[ARC_BUFC_DATA] == 0) { + if (data_hdr == NULL) { realtype = ARC_BUFC_METADATA; - } else if (state->arcs_lsize[ARC_BUFC_METADATA] == 0) { + } else if (metadata_hdr == NULL) { realtype = ARC_BUFC_DATA; } else if (arc_meta_used >= arc_meta_limit) { realtype = ARC_BUFC_METADATA; } else if (arc_meta_used <= arc_meta_min) { realtype = ARC_BUFC_DATA; } else { -#ifdef illumos if (data_hdr->b_arc_access < metadata_hdr->b_arc_access) { realtype = ARC_BUFC_DATA; } else { realtype = ARC_BUFC_METADATA; } -#else - /* TODO */ - realtype = type; -#endif } if (realtype != type) { /* @@ -2087,34 +2042,10 @@ arc_evict(arc_state_t *state, uint64_t s } } - if (type == ARC_BUFC_METADATA) { - offset = 0; - list_count = ARC_BUFC_NUMMETADATALISTS; - list_start = &state->arcs_lists[0]; - evicted_list_start = &evicted_state->arcs_lists[0]; - idx = evict_metadata_offset; - } else { - offset = ARC_BUFC_NUMMETADATALISTS; - list_start = &state->arcs_lists[offset]; - evicted_list_start = &evicted_state->arcs_lists[offset]; - list_count = ARC_BUFC_NUMDATALISTS; - idx = evict_data_offset; - } - bytes_remaining = evicted_state->arcs_lsize[type]; - lists = 0; - -evict_start: - list = &list_start[idx]; - evicted_list = &evicted_list_start[idx]; - lock = ARCS_LOCK(state, (offset + idx)); - evicted_lock = ARCS_LOCK(evicted_state, (offset + idx)); - - mutex_enter(lock); - mutex_enter(evicted_lock); + list_t *list = &state->arcs_list[type]; for (hdr = list_tail(list); hdr; hdr = hdr_prev) { hdr_prev = list_prev(list, hdr); - bytes_remaining -= (hdr->b_size * hdr->b_datacnt); /* prefetch buffers have a minimum lifespan */ if (HDR_IO_IN_PROGRESS(hdr) || (spa && hdr->b_spa != spa) || @@ -2144,11 +2075,11 @@ evict_start: */ if (!recycle && count++ > arc_evict_iterations) { list_insert_after(list, hdr, &marker); - mutex_exit(evicted_lock); - mutex_exit(lock); + mutex_exit(&evicted_state->arcs_mtx); + mutex_exit(&state->arcs_mtx); kpreempt(KPREEMPT_SYNC); - mutex_enter(lock); - mutex_enter(evicted_lock); + mutex_enter(&state->arcs_mtx); + mutex_enter(&evicted_state->arcs_mtx); hdr_prev = list_prev(list, &marker); list_remove(list, &marker); count = 0; @@ -2217,35 +2148,17 @@ evict_start: mutex_exit(hash_lock); if (bytes >= 0 && bytes_evicted >= bytes) break; - if (bytes_remaining > 0) { - mutex_exit(evicted_lock); - mutex_exit(lock); - idx = ((idx + 1) & (list_count - 1)); - lists++; - goto evict_start; - } } else { missed += 1; } } - mutex_exit(evicted_lock); - mutex_exit(lock); + mutex_exit(&evicted_state->arcs_mtx); + mutex_exit(&state->arcs_mtx); - idx = ((idx + 1) & (list_count - 1)); - lists++; - - if (bytes_evicted < bytes) { - if (lists < list_count) - goto evict_start; - else - dprintf("only evicted %lld bytes from %x", - (longlong_t)bytes_evicted, state); - } - if (type == ARC_BUFC_METADATA) - evict_metadata_offset = idx; - else - evict_data_offset = idx; + if (bytes_evicted < bytes) + dprintf("only evicted %lld bytes from %x", + (longlong_t)bytes_evicted, state); if (skipped) ARCSTAT_INCR(arcstat_evict_skip, skipped); @@ -2274,29 +2187,15 @@ arc_evict_ghost(arc_state_t *state, uint { arc_buf_hdr_t *hdr, *hdr_prev; arc_buf_hdr_t marker = { 0 }; - list_t *list, *list_start; - kmutex_t *hash_lock, *lock; + list_t *list = &state->arcs_list[ARC_BUFC_DATA]; + kmutex_t *hash_lock; uint64_t bytes_deleted = 0; uint64_t bufs_skipped = 0; int count = 0; - static int evict_offset; - int list_count, idx = evict_offset; - int offset, lists = 0; ASSERT(GHOST_STATE(state)); - - /* - * data lists come after metadata lists - */ - list_start = &state->arcs_lists[ARC_BUFC_NUMMETADATALISTS]; - list_count = ARC_BUFC_NUMDATALISTS; - offset = ARC_BUFC_NUMMETADATALISTS; - -evict_start: - list = &list_start[idx]; - lock = ARCS_LOCK(state, idx + offset); - - mutex_enter(lock); +top: + mutex_enter(&state->arcs_mtx); for (hdr = list_tail(list); hdr; hdr = hdr_prev) { hdr_prev = list_prev(list, hdr); if (hdr->b_type > ARC_BUFC_NUMTYPES) @@ -2321,9 +2220,9 @@ evict_start: */ if (count++ > arc_evict_iterations) { list_insert_after(list, hdr, &marker); - mutex_exit(lock); + mutex_exit(&state->arcs_mtx); kpreempt(KPREEMPT_SYNC); - mutex_enter(lock); + mutex_enter(&state->arcs_mtx); hdr_prev = list_prev(list, &marker); list_remove(list, &marker); count = 0; @@ -2358,10 +2257,10 @@ evict_start: * available, restart from where we left off. */ list_insert_after(list, hdr, &marker); - mutex_exit(lock); + mutex_exit(&state->arcs_mtx); mutex_enter(hash_lock); mutex_exit(hash_lock); - mutex_enter(lock); + mutex_enter(&state->arcs_mtx); hdr_prev = list_prev(list, &marker); list_remove(list, &marker); } else { @@ -2369,20 +2268,12 @@ evict_start: } } - mutex_exit(lock); - idx = ((idx + 1) & (ARC_BUFC_NUMDATALISTS - 1)); - lists++; + mutex_exit(&state->arcs_mtx); - if (lists < list_count) - goto evict_start; - - evict_offset = idx; - if ((uintptr_t)list > (uintptr_t)&state->arcs_lists[ARC_BUFC_NUMMETADATALISTS] && + if (list == &state->arcs_list[ARC_BUFC_DATA] && (bytes < 0 || bytes_deleted < bytes)) { - list_start = &state->arcs_lists[0]; - list_count = ARC_BUFC_NUMMETADATALISTS; - offset = lists = 0; - goto evict_start; + list = &state->arcs_list[ARC_BUFC_METADATA]; + goto top; } if (bufs_skipped) { @@ -2537,7 +2428,6 @@ arc_flush(spa_t *spa) void arc_shrink(void) { - if (arc_c > arc_c_min) { uint64_t to_free; @@ -2571,9 +2461,17 @@ arc_shrink(void) static int needfree = 0; +/* + * Determine if the system is under memory pressure and is asking + * to reclaim memory. A return value of 1 indicates that the system + * is under memory pressure and that the arc should adjust accordingly. + */ static int arc_reclaim_needed(void) { +#ifdef illumos + uint64_t extra; +#endif #ifdef _KERNEL @@ -3293,7 +3191,7 @@ arc_read_done(zio_t *zio) } /* - * "Read" the block block at the specified DVA (in bp) via the + * "Read" the block at the specified DVA (in bp) via the * cache. If the block is found in the cache, invoke the provided * callback immediately and return. Note that the `zio' parameter * in the callback will be NULL in this case, since no IO was @@ -3677,8 +3575,6 @@ arc_clear_callback(arc_buf_t *buf) kmutex_t *hash_lock; arc_evict_func_t *efunc = buf->b_efunc; void *private = buf->b_private; - list_t *list, *evicted_list; - kmutex_t *lock, *evicted_lock; mutex_enter(&buf->b_evict_lock); hdr = buf->b_hdr; @@ -4258,33 +4154,33 @@ arc_init(void) arc_l2c_only = &ARC_l2c_only; arc_size = 0; - for (i = 0; i < ARC_BUFC_NUMLISTS; i++) { - mutex_init(&arc_anon->arcs_locks[i].arcs_lock, - NULL, MUTEX_DEFAULT, NULL); - mutex_init(&arc_mru->arcs_locks[i].arcs_lock, - NULL, MUTEX_DEFAULT, NULL); - mutex_init(&arc_mru_ghost->arcs_locks[i].arcs_lock, - NULL, MUTEX_DEFAULT, NULL); - mutex_init(&arc_mfu->arcs_locks[i].arcs_lock, - NULL, MUTEX_DEFAULT, NULL); - mutex_init(&arc_mfu_ghost->arcs_locks[i].arcs_lock, - NULL, MUTEX_DEFAULT, NULL); - mutex_init(&arc_l2c_only->arcs_locks[i].arcs_lock, - NULL, MUTEX_DEFAULT, NULL); - - list_create(&arc_mru->arcs_lists[i], - sizeof (arc_buf_hdr_t), offsetof(arc_buf_hdr_t, b_arc_node)); - list_create(&arc_mru_ghost->arcs_lists[i], - sizeof (arc_buf_hdr_t), offsetof(arc_buf_hdr_t, b_arc_node)); - list_create(&arc_mfu->arcs_lists[i], - sizeof (arc_buf_hdr_t), offsetof(arc_buf_hdr_t, b_arc_node)); - list_create(&arc_mfu_ghost->arcs_lists[i], - sizeof (arc_buf_hdr_t), offsetof(arc_buf_hdr_t, b_arc_node)); - list_create(&arc_mfu_ghost->arcs_lists[i], - sizeof (arc_buf_hdr_t), offsetof(arc_buf_hdr_t, b_arc_node)); - list_create(&arc_l2c_only->arcs_lists[i], - sizeof (arc_buf_hdr_t), offsetof(arc_buf_hdr_t, b_arc_node)); - } + mutex_init(&arc_anon->arcs_mtx, NULL, MUTEX_DEFAULT, NULL); + mutex_init(&arc_mru->arcs_mtx, NULL, MUTEX_DEFAULT, NULL); + mutex_init(&arc_mru_ghost->arcs_mtx, NULL, MUTEX_DEFAULT, NULL); + mutex_init(&arc_mfu->arcs_mtx, NULL, MUTEX_DEFAULT, NULL); + mutex_init(&arc_mfu_ghost->arcs_mtx, NULL, MUTEX_DEFAULT, NULL); + mutex_init(&arc_l2c_only->arcs_mtx, NULL, MUTEX_DEFAULT, NULL); + + list_create(&arc_mru->arcs_list[ARC_BUFC_METADATA], + sizeof (arc_buf_hdr_t), offsetof(arc_buf_hdr_t, b_arc_node)); + list_create(&arc_mru->arcs_list[ARC_BUFC_DATA], + sizeof (arc_buf_hdr_t), offsetof(arc_buf_hdr_t, b_arc_node)); + list_create(&arc_mru_ghost->arcs_list[ARC_BUFC_METADATA], + sizeof (arc_buf_hdr_t), offsetof(arc_buf_hdr_t, b_arc_node)); + list_create(&arc_mru_ghost->arcs_list[ARC_BUFC_DATA], + sizeof (arc_buf_hdr_t), offsetof(arc_buf_hdr_t, b_arc_node)); + list_create(&arc_mfu->arcs_list[ARC_BUFC_METADATA], + sizeof (arc_buf_hdr_t), offsetof(arc_buf_hdr_t, b_arc_node)); + list_create(&arc_mfu->arcs_list[ARC_BUFC_DATA], + sizeof (arc_buf_hdr_t), offsetof(arc_buf_hdr_t, b_arc_node)); + list_create(&arc_mfu_ghost->arcs_list[ARC_BUFC_METADATA], + sizeof (arc_buf_hdr_t), offsetof(arc_buf_hdr_t, b_arc_node)); + list_create(&arc_mfu_ghost->arcs_list[ARC_BUFC_DATA], + sizeof (arc_buf_hdr_t), offsetof(arc_buf_hdr_t, b_arc_node)); + list_create(&arc_l2c_only->arcs_list[ARC_BUFC_METADATA], + sizeof (arc_buf_hdr_t), offsetof(arc_buf_hdr_t, b_arc_node)); + list_create(&arc_l2c_only->arcs_list[ARC_BUFC_DATA], + sizeof (arc_buf_hdr_t), offsetof(arc_buf_hdr_t, b_arc_node)); buf_init(); @@ -4367,8 +4263,6 @@ arc_init(void) void arc_fini(void) { - int i; - mutex_enter(&arc_reclaim_thr_lock); arc_thread_exit = 1; cv_signal(&arc_reclaim_thr_cv); @@ -4389,20 +4283,21 @@ arc_fini(void) mutex_destroy(&arc_reclaim_thr_lock); cv_destroy(&arc_reclaim_thr_cv); - for (i = 0; i < ARC_BUFC_NUMLISTS; i++) { - list_destroy(&arc_mru->arcs_lists[i]); - list_destroy(&arc_mru_ghost->arcs_lists[i]); - list_destroy(&arc_mfu->arcs_lists[i]); - list_destroy(&arc_mfu_ghost->arcs_lists[i]); - list_destroy(&arc_l2c_only->arcs_lists[i]); - - mutex_destroy(&arc_anon->arcs_locks[i].arcs_lock); - mutex_destroy(&arc_mru->arcs_locks[i].arcs_lock); - mutex_destroy(&arc_mru_ghost->arcs_locks[i].arcs_lock); - mutex_destroy(&arc_mfu->arcs_locks[i].arcs_lock); - mutex_destroy(&arc_mfu_ghost->arcs_locks[i].arcs_lock); - mutex_destroy(&arc_l2c_only->arcs_locks[i].arcs_lock); - } + list_destroy(&arc_mru->arcs_list[ARC_BUFC_METADATA]); + list_destroy(&arc_mru_ghost->arcs_list[ARC_BUFC_METADATA]); + list_destroy(&arc_mfu->arcs_list[ARC_BUFC_METADATA]); + list_destroy(&arc_mfu_ghost->arcs_list[ARC_BUFC_METADATA]); + list_destroy(&arc_mru->arcs_list[ARC_BUFC_DATA]); + list_destroy(&arc_mru_ghost->arcs_list[ARC_BUFC_DATA]); + list_destroy(&arc_mfu->arcs_list[ARC_BUFC_DATA]); + list_destroy(&arc_mfu_ghost->arcs_list[ARC_BUFC_DATA]); + + mutex_destroy(&arc_anon->arcs_mtx); + mutex_destroy(&arc_mru->arcs_mtx); + mutex_destroy(&arc_mru_ghost->arcs_mtx); + mutex_destroy(&arc_mfu->arcs_mtx); + mutex_destroy(&arc_mfu_ghost->arcs_mtx); + mutex_destroy(&arc_l2c_only->arcs_mtx); buf_fini(); @@ -4916,27 +4811,26 @@ static list_t * l2arc_list_locked(int list_num, kmutex_t **lock) { list_t *list = NULL; - int idx; - ASSERT(list_num >= 0 && list_num < 2 * ARC_BUFC_NUMLISTS); + ASSERT(list_num >= 0 && list_num <= 3); - if (list_num < ARC_BUFC_NUMMETADATALISTS) { - idx = list_num; - list = &arc_mfu->arcs_lists[idx]; - *lock = ARCS_LOCK(arc_mfu, idx); - } else if (list_num < ARC_BUFC_NUMMETADATALISTS * 2) { - idx = list_num - ARC_BUFC_NUMMETADATALISTS; - list = &arc_mru->arcs_lists[idx]; - *lock = ARCS_LOCK(arc_mru, idx); - } else if (list_num < (ARC_BUFC_NUMMETADATALISTS * 2 + - ARC_BUFC_NUMDATALISTS)) { - idx = list_num - ARC_BUFC_NUMMETADATALISTS; - list = &arc_mfu->arcs_lists[idx]; - *lock = ARCS_LOCK(arc_mfu, idx); - } else { - idx = list_num - ARC_BUFC_NUMLISTS; - list = &arc_mru->arcs_lists[idx]; - *lock = ARCS_LOCK(arc_mru, idx); + switch (list_num) { + case 0: + list = &arc_mfu->arcs_list[ARC_BUFC_METADATA]; + *lock = &arc_mfu->arcs_mtx; + break; + case 1: + list = &arc_mru->arcs_list[ARC_BUFC_METADATA]; + *lock = &arc_mru->arcs_mtx; + break; + case 2: + list = &arc_mfu->arcs_list[ARC_BUFC_DATA]; + *lock = &arc_mfu->arcs_mtx; + break; + case 3: + list = &arc_mru->arcs_list[ARC_BUFC_DATA]; + *lock = &arc_mru->arcs_mtx; + break; } ASSERT(!(MUTEX_HELD(*lock))); @@ -5133,7 +5027,7 @@ l2arc_write_buffers(spa_t *spa, l2arc_de * Copy buffers for L2ARC writing. */ mutex_enter(&l2arc_buflist_mtx); - for (try = 0; try < 2 * ARC_BUFC_NUMLISTS; try++) { + for (int try = 0; try <= 3; try++) { uint64_t passed_sz = 0; list = l2arc_list_locked(try, &list_lock); @@ -5152,7 +5046,7 @@ l2arc_write_buffers(spa_t *spa, l2arc_de if (hdr == NULL) ARCSTAT_BUMP(arcstat_l2_write_buffer_list_null_iter); - headroom = target_sz * l2arc_headroom * 2 / ARC_BUFC_NUMLISTS; + headroom = target_sz * l2arc_headroom; if (do_headroom_boost) headroom = (headroom * l2arc_headroom_boost) / 100; From owner-svn-src-user@FreeBSD.ORG Fri Jan 30 12:05:40 2015 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7F73DB78; Fri, 30 Jan 2015 12:05:40 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 6CD18F08; Fri, 30 Jan 2015 12:05:40 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t0UC5eT7092734; Fri, 30 Jan 2015 12:05:40 GMT (envelope-from pho@FreeBSD.org) Received: (from pho@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0UC5ebe092733; Fri, 30 Jan 2015 12:05:40 GMT (envelope-from pho@FreeBSD.org) Message-Id: <201501301205.t0UC5ebe092733@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: pho set sender to pho@FreeBSD.org using -f From: Peter Holm Date: Fri, 30 Jan 2015 12:05:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r277923 - user/pho/stress2/misc X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 30 Jan 2015 12:05:40 -0000 Author: pho Date: Fri Jan 30 12:05:39 2015 New Revision: 277923 URL: https://svnweb.freebsd.org/changeset/base/277923 Log: Whitespace cleanup. Sponsored by: EMC / Isilon storage division Modified: user/pho/stress2/misc/devfs2.sh Modified: user/pho/stress2/misc/devfs2.sh ============================================================================== --- user/pho/stress2/misc/devfs2.sh Fri Jan 30 11:41:46 2015 (r277922) +++ user/pho/stress2/misc/devfs2.sh Fri Jan 30 12:05:39 2015 (r277923) @@ -53,7 +53,7 @@ rm -f devfs2.c rm devfs2 -exit +exit EOF #include @@ -94,7 +94,7 @@ main() pthread_t threads[2]; int i; int r; - + if ((r = pthread_create(&threads[0], NULL, thr1, 0)) != 0) err(1, "pthread_create(): %s\n", strerror(r)); if ((r = pthread_create(&threads[1], NULL, thr2, 0)) != 0) From owner-svn-src-user@FreeBSD.ORG Fri Jan 30 12:07:44 2015 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 97EA6C71; Fri, 30 Jan 2015 12:07:44 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 85208F1E; Fri, 30 Jan 2015 12:07:44 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t0UC7i7a093044; Fri, 30 Jan 2015 12:07:44 GMT (envelope-from pho@FreeBSD.org) Received: (from pho@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0UC7ioM093043; Fri, 30 Jan 2015 12:07:44 GMT (envelope-from pho@FreeBSD.org) Message-Id: <201501301207.t0UC7ioM093043@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: pho set sender to pho@FreeBSD.org using -f From: Peter Holm Date: Fri, 30 Jan 2015 12:07:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r277924 - user/pho/stress2/misc X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 30 Jan 2015 12:07:44 -0000 Author: pho Date: Fri Jan 30 12:07:43 2015 New Revision: 277924 URL: https://svnweb.freebsd.org/changeset/base/277924 Log: Verify that perl is installed and whitespace cleanup. Sponsored by: EMC / Isilon storage division Modified: user/pho/stress2/misc/fullpath.sh Modified: user/pho/stress2/misc/fullpath.sh ============================================================================== --- user/pho/stress2/misc/fullpath.sh Fri Jan 30 12:05:39 2015 (r277923) +++ user/pho/stress2/misc/fullpath.sh Fri Jan 30 12:07:43 2015 (r277924) @@ -31,6 +31,7 @@ # Test scenario by marcus@freebsd.org [ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 +[ -z "`type perl 2>/dev/null`" ] && exit 0 . ../default.cfg @@ -103,7 +104,7 @@ test(void) { int main(int argc, char **argv) { int i; - + i = 0; signal(SIGALRM, handler); alarm(60); From owner-svn-src-user@FreeBSD.ORG Fri Jan 30 14:10:12 2015 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 396B66B9; Fri, 30 Jan 2015 14:10:12 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 26A46E12; Fri, 30 Jan 2015 14:10:12 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t0UEACPs053151; Fri, 30 Jan 2015 14:10:12 GMT (envelope-from pho@FreeBSD.org) Received: (from pho@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0UEACQC053150; Fri, 30 Jan 2015 14:10:12 GMT (envelope-from pho@FreeBSD.org) Message-Id: <201501301410.t0UEACQC053150@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: pho set sender to pho@FreeBSD.org using -f From: Peter Holm Date: Fri, 30 Jan 2015 14:10:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r277929 - user/pho/stress2/misc X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 30 Jan 2015 14:10:12 -0000 Author: pho Date: Fri Jan 30 14:10:11 2015 New Revision: 277929 URL: https://svnweb.freebsd.org/changeset/base/277929 Log: Replace killall with pkill. Sponsored by: EMC / Isilon storage division Modified: user/pho/stress2/misc/kevent8.sh Modified: user/pho/stress2/misc/kevent8.sh ============================================================================== --- user/pho/stress2/misc/kevent8.sh Fri Jan 30 14:09:07 2015 (r277928) +++ user/pho/stress2/misc/kevent8.sh Fri Jan 30 14:10:11 2015 (r277929) @@ -54,7 +54,7 @@ chmod 777 $mntpoint su $testuser -c "(cd $mntpoint; /tmp/kevent8)" & sleep 99 umount -f $mntpoint -killall kevent8 +pkill kevent8 wait while mount | grep -q $mntpoint; do From owner-svn-src-user@FreeBSD.ORG Fri Jan 30 14:13:30 2015 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 54F6A8FF; Fri, 30 Jan 2015 14:13:30 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 421DBF35; Fri, 30 Jan 2015 14:13:30 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t0UEDU6Y057049; Fri, 30 Jan 2015 14:13:30 GMT (envelope-from pho@FreeBSD.org) Received: (from pho@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0UEDUeX057048; Fri, 30 Jan 2015 14:13:30 GMT (envelope-from pho@FreeBSD.org) Message-Id: <201501301413.t0UEDUeX057048@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: pho set sender to pho@FreeBSD.org using -f From: Peter Holm Date: Fri, 30 Jan 2015 14:13:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r277930 - user/pho/stress2/misc X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 30 Jan 2015 14:13:30 -0000 Author: pho Date: Fri Jan 30 14:13:29 2015 New Revision: 277930 URL: https://svnweb.freebsd.org/changeset/base/277930 Log: Whitespace cleanup. Sponsored by: EMC / Isilon storage division Modified: user/pho/stress2/misc/ldt.sh Modified: user/pho/stress2/misc/ldt.sh ============================================================================== --- user/pho/stress2/misc/ldt.sh Fri Jan 30 14:10:11 2015 (r277929) +++ user/pho/stress2/misc/ldt.sh Fri Jan 30 14:13:29 2015 (r277930) @@ -29,9 +29,9 @@ # # Test the amd64 implementation of: -# 1. Per-process private ldt and corresponding i386 arch syscalls. -# 2. Per-process private io permission bitmap and corresponding -# i386 arch syscalls. +# 1. Per-process private ldt and corresponding i386 arch syscalls. +# 2. Per-process private io permission bitmap and corresponding +# i386 arch syscalls. # 3. Sigcontext # The tests must be compiled on i386 and run on amd64 @@ -274,7 +274,7 @@ main(int argc, char *argv[]) return (1); } inb(port_num); - + return (0); } EOF From owner-svn-src-user@FreeBSD.ORG Fri Jan 30 15:02:17 2015 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id ACFE4AB4; Fri, 30 Jan 2015 15:02:17 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 9A18C7EB; Fri, 30 Jan 2015 15:02:17 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t0UF2Hhh081616; Fri, 30 Jan 2015 15:02:17 GMT (envelope-from pho@FreeBSD.org) Received: (from pho@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0UF2H52081615; Fri, 30 Jan 2015 15:02:17 GMT (envelope-from pho@FreeBSD.org) Message-Id: <201501301502.t0UF2H52081615@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: pho set sender to pho@FreeBSD.org using -f From: Peter Holm Date: Fri, 30 Jan 2015 15:02:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r277935 - user/pho/stress2/misc X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 30 Jan 2015 15:02:17 -0000 Author: pho Date: Fri Jan 30 15:02:16 2015 New Revision: 277935 URL: https://svnweb.freebsd.org/changeset/base/277935 Log: Fix copy/paste error and add a timeout. Sponsored by: EMC / Isilon storage division Modified: user/pho/stress2/misc/mmap10.sh Modified: user/pho/stress2/misc/mmap10.sh ============================================================================== --- user/pho/stress2/misc/mmap10.sh Fri Jan 30 14:37:59 2015 (r277934) +++ user/pho/stress2/misc/mmap10.sh Fri Jan 30 15:02:16 2015 (r277935) @@ -126,8 +126,7 @@ tmmap(void *arg __unused) len = 1LL * 1024 * 1024 * 1024; for (i = 0; i < 100; i++) { - if ((fd = open("/dev/zero", O_CREAT | O_TRUNC | O_RDWR, - 0622)) == -1) + if ((fd = open("/dev/zero", O_RDWR)) == -1) err(1,"open()"); if ((p = mmap(NULL, len, PROT_READ | PROT_WRITE, MAP_PRIVATE, @@ -254,6 +253,7 @@ main(void) for (i = 0; i < N; i++) r[i] = arc4random(); + alarm(1200); for (i = 0; i < LOOPS; i++) { for (j = 0; j < PARALLEL; j++) { if (fork() == 0) From owner-svn-src-user@FreeBSD.ORG Fri Jan 30 23:38:09 2015 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5BE079C5; Fri, 30 Jan 2015 23:38:09 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 2D99192B; Fri, 30 Jan 2015 23:38:09 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t0UNc9HN048848; Fri, 30 Jan 2015 23:38:09 GMT (envelope-from np@FreeBSD.org) Received: (from np@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0UNc9Zk048847; Fri, 30 Jan 2015 23:38:09 GMT (envelope-from np@FreeBSD.org) Message-Id: <201501302338.t0UNc9Zk048847@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: np set sender to np@FreeBSD.org using -f From: Navdeep Parhar Date: Fri, 30 Jan 2015 23:38:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r277955 - user/np/cxl_tuning X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 30 Jan 2015 23:38:09 -0000 Author: np Date: Fri Jan 30 23:38:08 2015 New Revision: 277955 URL: https://svnweb.freebsd.org/changeset/base/277955 Log: Retire old branch. All significant changes were folded into the main tree a long time ago. Deleted: user/np/cxl_tuning/ From owner-svn-src-user@FreeBSD.ORG Sat Jan 31 11:24:41 2015 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 89944879; Sat, 31 Jan 2015 11:24:41 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 71263F12; Sat, 31 Jan 2015 11:24:41 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t0VBOfm7003832; Sat, 31 Jan 2015 11:24:41 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0VBOSL5003769; Sat, 31 Jan 2015 11:24:28 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201501311124.t0VBOSL5003769@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sat, 31 Jan 2015 11:24:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r277967 - in user/dchagin/lemul: . bin/cp bin/expr bin/mv cddl/contrib/opensolaris/cmd/dtrace/test/cmd/scripts cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/inline cddl/contrib/op... X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 31 Jan 2015 11:24:41 -0000 Author: dchagin Date: Sat Jan 31 11:24:26 2015 New Revision: 277967 URL: https://svnweb.freebsd.org/changeset/base/277967 Log: Merge from HEAD. Added: user/dchagin/lemul/contrib/llvm/patches/patch-29-llvm-r226664-aarch64-x18.diff - copied unchanged from r277966, head/contrib/llvm/patches/patch-29-llvm-r226664-aarch64-x18.diff user/dchagin/lemul/contrib/llvm/patches/patch-30-clang-r227062-fixes-x18.diff - copied unchanged from r277966, head/contrib/llvm/patches/patch-30-clang-r227062-fixes-x18.diff user/dchagin/lemul/etc/tests/rc.d/ - copied from r277966, head/etc/tests/rc.d/ user/dchagin/lemul/sys/arm/arm/pmu.c - copied unchanged from r277966, head/sys/arm/arm/pmu.c user/dchagin/lemul/sys/arm/freescale/imx/imx6_audmux.c - copied unchanged from r277966, head/sys/arm/freescale/imx/imx6_audmux.c user/dchagin/lemul/sys/arm/freescale/imx/imx6_sdma.c - copied unchanged from r277966, head/sys/arm/freescale/imx/imx6_sdma.c user/dchagin/lemul/sys/arm/freescale/imx/imx6_sdma.h - copied unchanged from r277966, head/sys/arm/freescale/imx/imx6_sdma.h user/dchagin/lemul/sys/arm/freescale/imx/imx6_ssi.c - copied unchanged from r277966, head/sys/arm/freescale/imx/imx6_ssi.c user/dchagin/lemul/sys/dev/hwpmc/hwpmc_armv7.c - copied unchanged from r277966, head/sys/dev/hwpmc/hwpmc_armv7.c user/dchagin/lemul/sys/dev/hwpmc/hwpmc_armv7.h - copied unchanged from r277966, head/sys/dev/hwpmc/hwpmc_armv7.h user/dchagin/lemul/sys/dev/iscsi/icl_conn_if.m - copied unchanged from r277966, head/sys/dev/iscsi/icl_conn_if.m user/dchagin/lemul/sys/dev/iscsi/icl_soft.c - copied unchanged from r277966, head/sys/dev/iscsi/icl_soft.c user/dchagin/lemul/sys/dev/iscsi/icl_wrappers.h - copied unchanged from r277966, head/sys/dev/iscsi/icl_wrappers.h user/dchagin/lemul/tools/build/options/WITHOUT_AUTOFS - copied unchanged from r277966, head/tools/build/options/WITHOUT_AUTOFS user/dchagin/lemul/tools/build/options/WITHOUT_BHYVE - copied unchanged from r277966, head/tools/build/options/WITHOUT_BHYVE user/dchagin/lemul/tools/build/options/WITHOUT_BSDINSTALL - copied unchanged from r277966, head/tools/build/options/WITHOUT_BSDINSTALL user/dchagin/lemul/tools/build/options/WITHOUT_CCD - copied unchanged from r277966, head/tools/build/options/WITHOUT_CCD user/dchagin/lemul/tools/build/options/WITHOUT_EE - copied unchanged from r277966, head/tools/build/options/WITHOUT_EE user/dchagin/lemul/tools/build/options/WITHOUT_HAST - copied unchanged from r277966, head/tools/build/options/WITHOUT_HAST user/dchagin/lemul/tools/build/options/WITHOUT_ISCSI - copied unchanged from r277966, head/tools/build/options/WITHOUT_ISCSI user/dchagin/lemul/tools/build/options/WITHOUT_TALK - copied unchanged from r277966, head/tools/build/options/WITHOUT_TALK Replaced: user/dchagin/lemul/sys/dev/iscsi/icl.c - copied unchanged from r277966, head/sys/dev/iscsi/icl.c Deleted: user/dchagin/lemul/share/man/man9/spl.9 Modified: user/dchagin/lemul/Makefile.inc1 user/dchagin/lemul/ObsoleteFiles.inc user/dchagin/lemul/bin/cp/utils.c user/dchagin/lemul/bin/expr/expr.y user/dchagin/lemul/bin/mv/mv.c user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/scripts/dtest.pl user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/inline/err.D_OP_INCOMPAT.baddef1.d user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/inline/err.D_OP_INCOMPAT.badxlate.d user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/json/tst.usdt.c user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/lexer/err.D_CHR_NL.char.d user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/lexer/err.D_CHR_NULL.char.d user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/lexer/err.D_STR_NL.string.d user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/misc/tst.roch.d user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/nfs/tst.call3.c user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/offsetof/err.D_UNKNOWN.badmemb.d user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.args1.c user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.fork.d user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.gcc.c user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret1.c user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret2.c user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.vfork.d user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak1.c user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak2.c user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/err.D_PRINT_VOID.bad.d user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/tst.xlate.d user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/tst.xlate.d.out user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/probes/tst.probestar.d user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/proc/tst.discard.ksh user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/proc/tst.signal.ksh user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/profile-n/tst.func.ksh user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/profile-n/tst.mod.ksh user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/profile-n/tst.sym.ksh user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/scalars/tst.selfarray2.d user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/syscall/tst.args.c user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.dlclose1.ksh user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.forker.c user/dchagin/lemul/contrib/amd/amd/amfs_generic.c user/dchagin/lemul/contrib/amd/amd/amfs_program.c user/dchagin/lemul/contrib/amd/amd/readdir.c user/dchagin/lemul/contrib/amd/hlfsd/homedir.c user/dchagin/lemul/contrib/amd/hlfsd/stubs.c user/dchagin/lemul/contrib/elftoolchain/elfcopy/main.c user/dchagin/lemul/contrib/gdb/gdb/corelow.c user/dchagin/lemul/contrib/gdb/gdb/dwarf2expr.c user/dchagin/lemul/contrib/libcxxrt/stdexcept.cc user/dchagin/lemul/contrib/llvm/lib/Target/AArch64/AArch64RegisterInfo.cpp user/dchagin/lemul/contrib/llvm/tools/clang/include/clang/Driver/Options.td user/dchagin/lemul/contrib/llvm/tools/clang/lib/Driver/Tools.cpp user/dchagin/lemul/contrib/netbsd-tests/bin/expr/t_expr.sh user/dchagin/lemul/contrib/netbsd-tests/lib/libc/c063/t_utimensat.c user/dchagin/lemul/contrib/sendmail/cf/m4/cfhead.m4 user/dchagin/lemul/contrib/tcpdump/print-ip.c user/dchagin/lemul/contrib/tcpdump/print-sl.c user/dchagin/lemul/contrib/tcpdump/tcpdump.c user/dchagin/lemul/etc/Makefile user/dchagin/lemul/etc/defaults/Makefile user/dchagin/lemul/etc/devd/Makefile user/dchagin/lemul/etc/mtree/BSD.tests.dist user/dchagin/lemul/etc/pam.d/Makefile user/dchagin/lemul/etc/rc.d/Makefile user/dchagin/lemul/etc/rc.d/ipfilter user/dchagin/lemul/etc/rc.d/local_unbound user/dchagin/lemul/etc/sendmail/Makefile user/dchagin/lemul/etc/tests/Makefile user/dchagin/lemul/games/fortune/fortune/fortune.6 user/dchagin/lemul/include/Makefile user/dchagin/lemul/lib/Makefile user/dchagin/lemul/lib/libc/gen/sem_new.c user/dchagin/lemul/lib/libc/gen/sem_post.3 user/dchagin/lemul/lib/libc/mips/gen/sigsetjmp.S user/dchagin/lemul/lib/libc/tests/c063/Makefile user/dchagin/lemul/lib/libnv/Makefile user/dchagin/lemul/lib/libnv/nv.3 user/dchagin/lemul/lib/libnv/nv.h user/dchagin/lemul/lib/libnv/nvlist.c user/dchagin/lemul/lib/libnv/nvpair.c user/dchagin/lemul/lib/libpmc/libpmc.c user/dchagin/lemul/lib/libproc/proc_sym.c user/dchagin/lemul/lib/libproc/tests/proc_test.c user/dchagin/lemul/lib/libthread_db/arch/i386/libpthread_md.c user/dchagin/lemul/lib/libutil/gr_util.c user/dchagin/lemul/lib/msun/src/s_scalbln.c user/dchagin/lemul/libexec/Makefile user/dchagin/lemul/libexec/rtld-elf/rtld.c user/dchagin/lemul/release/Makefile user/dchagin/lemul/release/picobsd/build/picobsd user/dchagin/lemul/release/scripts/make-manifest.sh user/dchagin/lemul/rescue/rescue/Makefile user/dchagin/lemul/sbin/Makefile user/dchagin/lemul/sbin/geom/class/mountver/gmountver.8 user/dchagin/lemul/sbin/ipfw/nat.c user/dchagin/lemul/sbin/rcorder/Makefile user/dchagin/lemul/sbin/rcorder/rcorder.c user/dchagin/lemul/share/Makefile user/dchagin/lemul/share/examples/Makefile user/dchagin/lemul/share/man/man3/tree.3 user/dchagin/lemul/share/man/man4/Makefile user/dchagin/lemul/share/man/man4/sfxge.4 user/dchagin/lemul/share/man/man5/Makefile user/dchagin/lemul/share/man/man5/src.conf.5 user/dchagin/lemul/share/man/man7/release.7 user/dchagin/lemul/share/man/man9/Makefile user/dchagin/lemul/share/man/man9/SYSCALL_MODULE.9 user/dchagin/lemul/share/man/man9/contigmalloc.9 user/dchagin/lemul/share/man/man9/pmap_enter.9 user/dchagin/lemul/share/misc/committers-src.dot user/dchagin/lemul/share/mk/src.opts.mk user/dchagin/lemul/sys/amd64/amd64/machdep.c user/dchagin/lemul/sys/amd64/conf/GENERIC user/dchagin/lemul/sys/amd64/vmm/amd/svm.c user/dchagin/lemul/sys/arm/arm/intr.c user/dchagin/lemul/sys/arm/arm/mem.c user/dchagin/lemul/sys/arm/broadcom/bcm2835/bcm2835_gpio.c user/dchagin/lemul/sys/arm/freescale/imx/files.imx6 user/dchagin/lemul/sys/arm/freescale/imx/imx6_anatop.c user/dchagin/lemul/sys/arm/freescale/imx/imx6_anatopreg.h user/dchagin/lemul/sys/arm/freescale/imx/imx6_anatopvar.h user/dchagin/lemul/sys/arm/freescale/imx/imx6_ccm.c user/dchagin/lemul/sys/arm/freescale/imx/imx6_ccmreg.h user/dchagin/lemul/sys/arm/freescale/imx/imx_ccmvar.h user/dchagin/lemul/sys/arm/include/pmc_mdep.h user/dchagin/lemul/sys/arm/ti/am335x/am335x_lcd.c user/dchagin/lemul/sys/arm/ti/am335x/am335x_prcm.c user/dchagin/lemul/sys/arm/ti/am335x/files.am335x user/dchagin/lemul/sys/arm/ti/files.ti user/dchagin/lemul/sys/arm/ti/ti_i2c.c user/dchagin/lemul/sys/arm/ti/ti_pruss.c user/dchagin/lemul/sys/arm/xilinx/zy7_gpio.c user/dchagin/lemul/sys/arm/xscale/ixp425/avila_gpio.c user/dchagin/lemul/sys/arm/xscale/ixp425/cambria_gpio.c user/dchagin/lemul/sys/boot/common/load_elf.c user/dchagin/lemul/sys/boot/efi/libefi/efinet.c user/dchagin/lemul/sys/boot/fdt/dts/arm/am335x.dtsi user/dchagin/lemul/sys/boot/fdt/dts/arm/apalis-imx6.dts user/dchagin/lemul/sys/boot/fdt/dts/arm/imx6.dtsi user/dchagin/lemul/sys/boot/forth/beastie.4th user/dchagin/lemul/sys/boot/forth/brand.4th user/dchagin/lemul/sys/boot/i386/libfirewire/firewire.c user/dchagin/lemul/sys/boot/i386/libi386/libi386.h user/dchagin/lemul/sys/boot/i386/libi386/smbios.c user/dchagin/lemul/sys/cam/ctl/ctl.c user/dchagin/lemul/sys/cam/ctl/ctl_frontend_iscsi.c user/dchagin/lemul/sys/cam/ctl/ctl_tpc.c user/dchagin/lemul/sys/cam/scsi/scsi_all.h user/dchagin/lemul/sys/cam/scsi/scsi_da.c user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c user/dchagin/lemul/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c user/dchagin/lemul/sys/conf/files user/dchagin/lemul/sys/conf/files.amd64 user/dchagin/lemul/sys/conf/files.arm user/dchagin/lemul/sys/conf/kern.mk user/dchagin/lemul/sys/conf/kern.opts.mk user/dchagin/lemul/sys/dev/acpica/acpi.c user/dchagin/lemul/sys/dev/alc/if_alc.c user/dchagin/lemul/sys/dev/ath/ath_hal/ah_internal.h user/dchagin/lemul/sys/dev/ath/ath_rate/sample/sample.c user/dchagin/lemul/sys/dev/ath/ath_rate/sample/sample.h user/dchagin/lemul/sys/dev/cxgbe/t4_main.c user/dchagin/lemul/sys/dev/cxgbe/tom/t4_ddp.c user/dchagin/lemul/sys/dev/drm2/i915/intel_display.c user/dchagin/lemul/sys/dev/fb/fbd.c user/dchagin/lemul/sys/dev/fdt/fdt_clock.c user/dchagin/lemul/sys/dev/hwpmc/hwpmc_arm.c user/dchagin/lemul/sys/dev/hwpmc/pmc_events.h user/dchagin/lemul/sys/dev/iscsi/icl.h user/dchagin/lemul/sys/dev/iscsi/iscsi.c user/dchagin/lemul/sys/dev/mem/memdev.c user/dchagin/lemul/sys/dev/mps/mps.c user/dchagin/lemul/sys/dev/mps/mps_user.c user/dchagin/lemul/sys/dev/netmap/netmap.c user/dchagin/lemul/sys/dev/ofw/openfirm.c user/dchagin/lemul/sys/dev/pci/pci_pci.c user/dchagin/lemul/sys/dev/sfxge/common/efsys.h user/dchagin/lemul/sys/dev/sfxge/common/efx_ev.c user/dchagin/lemul/sys/dev/sfxge/common/efx_tx.c user/dchagin/lemul/sys/dev/sfxge/sfxge.c user/dchagin/lemul/sys/dev/sfxge/sfxge.h user/dchagin/lemul/sys/dev/sfxge/sfxge_dma.c user/dchagin/lemul/sys/dev/sfxge/sfxge_ev.c user/dchagin/lemul/sys/dev/sfxge/sfxge_intr.c user/dchagin/lemul/sys/dev/sfxge/sfxge_port.c user/dchagin/lemul/sys/dev/sfxge/sfxge_tx.c user/dchagin/lemul/sys/dev/sfxge/sfxge_tx.h user/dchagin/lemul/sys/dev/syscons/syscons.c user/dchagin/lemul/sys/dev/virtio/block/virtio_blk.c user/dchagin/lemul/sys/dev/vt/hw/fb/vt_fb.c user/dchagin/lemul/sys/dev/vt/hw/fb/vt_fb.h user/dchagin/lemul/sys/dev/vt/vt.h user/dchagin/lemul/sys/dev/vt/vt_core.c user/dchagin/lemul/sys/fs/cd9660/cd9660_util.c user/dchagin/lemul/sys/fs/fdescfs/fdesc_vfsops.c user/dchagin/lemul/sys/fs/msdosfs/msdosfs_conv.c user/dchagin/lemul/sys/fs/smbfs/smbfs_subr.c user/dchagin/lemul/sys/fs/tmpfs/tmpfs.h user/dchagin/lemul/sys/fs/tmpfs/tmpfs_subr.c user/dchagin/lemul/sys/fs/tmpfs/tmpfs_vfsops.c user/dchagin/lemul/sys/fs/tmpfs/tmpfs_vnops.c user/dchagin/lemul/sys/fs/udf/udf_vnops.c user/dchagin/lemul/sys/i386/i386/mem.c user/dchagin/lemul/sys/kern/kern_jail.c user/dchagin/lemul/sys/kern/kern_timeout.c user/dchagin/lemul/sys/kern/subr_sglist.c user/dchagin/lemul/sys/kern/vfs_subr.c user/dchagin/lemul/sys/libkern/strtol.c user/dchagin/lemul/sys/libkern/strtoq.c user/dchagin/lemul/sys/libkern/strtoul.c user/dchagin/lemul/sys/libkern/strtouq.c user/dchagin/lemul/sys/mips/mips/mem.c user/dchagin/lemul/sys/modules/Makefile user/dchagin/lemul/sys/modules/aesni/Makefile user/dchagin/lemul/sys/modules/ctl/Makefile user/dchagin/lemul/sys/modules/cxgbe/if_cxgbe/Makefile user/dchagin/lemul/sys/modules/geom/Makefile user/dchagin/lemul/sys/modules/iscsi/Makefile user/dchagin/lemul/sys/netgraph/ng_parse.c user/dchagin/lemul/sys/netinet/sctp_input.c user/dchagin/lemul/sys/netinet/sctp_usrreq.c user/dchagin/lemul/sys/netinet/tcp_hostcache.c user/dchagin/lemul/sys/netinet/tcp_syncache.c user/dchagin/lemul/sys/netipsec/key.c user/dchagin/lemul/sys/powerpc/aim/machdep.c user/dchagin/lemul/sys/powerpc/pseries/plpar_iommu.c user/dchagin/lemul/sys/sparc64/sparc64/mem.c user/dchagin/lemul/sys/sys/cdefs.h user/dchagin/lemul/sys/sys/conf.h user/dchagin/lemul/sys/sys/eventhandler.h user/dchagin/lemul/sys/sys/jail.h user/dchagin/lemul/sys/sys/param.h user/dchagin/lemul/sys/sys/pmc.h user/dchagin/lemul/sys/sys/proc.h user/dchagin/lemul/sys/sys/tree.h user/dchagin/lemul/sys/ufs/ffs/ffs_softdep.c user/dchagin/lemul/sys/ufs/ffs/softdep.h user/dchagin/lemul/sys/ufs/ufs/ufs_quota.c user/dchagin/lemul/sys/ufs/ufs/ufs_vfsops.c user/dchagin/lemul/sys/vm/vm_fault.c user/dchagin/lemul/sys/vm/vm_map.c user/dchagin/lemul/sys/vm/vm_object.c user/dchagin/lemul/sys/vm/vm_object.h user/dchagin/lemul/sys/vm/vm_pageout.c user/dchagin/lemul/sys/x86/x86/tsc.c user/dchagin/lemul/tools/build/mk/OptionalObsoleteFiles.inc user/dchagin/lemul/tools/tools/nanobsd/rescue/build.sh user/dchagin/lemul/tools/tools/nanobsd/rescue/common user/dchagin/lemul/usr.bin/Makefile user/dchagin/lemul/usr.bin/grep/Makefile user/dchagin/lemul/usr.bin/kdump/kdump.c user/dchagin/lemul/usr.bin/sed/main.c user/dchagin/lemul/usr.bin/sed/process.c user/dchagin/lemul/usr.bin/touch/touch.c user/dchagin/lemul/usr.sbin/Makefile user/dchagin/lemul/usr.sbin/Makefile.amd64 user/dchagin/lemul/usr.sbin/autofs/autounmountd.c user/dchagin/lemul/usr.sbin/binmiscctl/binmiscctl.c user/dchagin/lemul/usr.sbin/bsdinstall/partedit/partedit_x86.c user/dchagin/lemul/usr.sbin/config/config.8 user/dchagin/lemul/usr.sbin/config/configvers.h user/dchagin/lemul/usr.sbin/config/main.c user/dchagin/lemul/usr.sbin/jail/jail.8 user/dchagin/lemul/usr.sbin/pciconf/pciconf.c user/dchagin/lemul/usr.sbin/pmcstudy/pmcstudy.c user/dchagin/lemul/usr.sbin/ppp/command.c user/dchagin/lemul/usr.sbin/ppp/ipcp.c user/dchagin/lemul/usr.sbin/ppp/ipv6cp.c user/dchagin/lemul/usr.sbin/ppp/radius.c user/dchagin/lemul/usr.sbin/ppp/server.c user/dchagin/lemul/usr.sbin/sa/db.c Directory Properties: user/dchagin/lemul/ (props changed) user/dchagin/lemul/cddl/ (props changed) user/dchagin/lemul/cddl/contrib/opensolaris/ (props changed) user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/ (props changed) user/dchagin/lemul/contrib/amd/ (props changed) user/dchagin/lemul/contrib/elftoolchain/ (props changed) user/dchagin/lemul/contrib/gdb/ (props changed) user/dchagin/lemul/contrib/libcxxrt/ (props changed) user/dchagin/lemul/contrib/llvm/ (props changed) user/dchagin/lemul/contrib/llvm/tools/clang/ (props changed) user/dchagin/lemul/contrib/sendmail/ (props changed) user/dchagin/lemul/contrib/tcpdump/ (props changed) user/dchagin/lemul/etc/ (props changed) user/dchagin/lemul/include/ (props changed) user/dchagin/lemul/lib/libc/ (props changed) user/dchagin/lemul/lib/libutil/ (props changed) user/dchagin/lemul/sbin/ (props changed) user/dchagin/lemul/sbin/ipfw/ (props changed) user/dchagin/lemul/share/ (props changed) user/dchagin/lemul/share/man/man4/ (props changed) user/dchagin/lemul/sys/ (props changed) user/dchagin/lemul/sys/amd64/vmm/ (props changed) user/dchagin/lemul/sys/boot/ (props changed) user/dchagin/lemul/sys/cddl/contrib/opensolaris/ (props changed) user/dchagin/lemul/sys/conf/ (props changed) user/dchagin/lemul/usr.sbin/jail/ (props changed) Modified: user/dchagin/lemul/Makefile.inc1 ============================================================================== --- user/dchagin/lemul/Makefile.inc1 Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/Makefile.inc1 Sat Jan 31 11:24:26 2015 (r277967) @@ -1437,6 +1437,9 @@ _elftctools= lib/libelftc \ usr.bin/nm \ usr.bin/size \ usr.bin/strings +# These are not required by the build, but can be useful for developers who +# cross-build on a FreeBSD 10 host: +_elftctools+= usr.bin/addr2line .endif .endif Modified: user/dchagin/lemul/ObsoleteFiles.inc ============================================================================== --- user/dchagin/lemul/ObsoleteFiles.inc Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/ObsoleteFiles.inc Sat Jan 31 11:24:26 2015 (r277967) @@ -38,6 +38,20 @@ # xargs -n1 | sort | uniq -d; # done +# 20150124: spl.9 and friends +OLD_FILES+=usr/share/man/man9/spl.9 +OLD_FILES+=usr/share/man/man9/spl0.9 +OLD_FILES+=usr/share/man/man9/splbio.9 +OLD_FILES+=usr/share/man/man9/splclock.9 +OLD_FILES+=usr/share/man/man9/splhigh.9 +OLD_FILES+=usr/share/man/man9/splimp.9 +OLD_FILES+=usr/share/man/man9/splnet.9 +OLD_FILES+=usr/share/man/man9/splsoftclock.9 +OLD_FILES+=usr/share/man/man9/splsofttty.9 +OLD_FILES+=usr/share/man/man9/splstatclock.9 +OLD_FILES+=usr/share/man/man9/spltty.9 +OLD_FILES+=usr/share/man/man9/splvm.9 +OLD_FILES+=usr/share/man/man9/splx.9 # 20150118: new clang import which bumps version from 3.5.0 to 3.5.1. OLD_FILES+=usr/include/clang/3.5.0/__wmmintrin_aes.h OLD_FILES+=usr/include/clang/3.5.0/__wmmintrin_pclmul.h Modified: user/dchagin/lemul/bin/cp/utils.c ============================================================================== --- user/dchagin/lemul/bin/cp/utils.c Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/bin/cp/utils.c Sat Jan 31 11:24:26 2015 (r277967) @@ -330,7 +330,7 @@ copy_special(struct stat *from_stat, int int setfile(struct stat *fs, int fd) { - static struct timeval tv[2]; + static struct timespec tspec[2]; struct stat ts; int rval, gotstat, islink, fdval; @@ -340,10 +340,11 @@ setfile(struct stat *fs, int fd) fs->st_mode &= S_ISUID | S_ISGID | S_ISVTX | S_IRWXU | S_IRWXG | S_IRWXO; - TIMESPEC_TO_TIMEVAL(&tv[0], &fs->st_atim); - TIMESPEC_TO_TIMEVAL(&tv[1], &fs->st_mtim); - if (islink ? lutimes(to.p_path, tv) : utimes(to.p_path, tv)) { - warn("%sutimes: %s", islink ? "l" : "", to.p_path); + tspec[0] = fs->st_atim; + tspec[1] = fs->st_mtim; + if (utimensat(AT_FDCWD, to.p_path, tspec, + islink ? AT_SYMLINK_NOFOLLOW : 0)) { + warn("utimensat: %s", to.p_path); rval = 1; } if (fdval ? fstat(fd, &ts) : Modified: user/dchagin/lemul/bin/expr/expr.y ============================================================================== --- user/dchagin/lemul/bin/expr/expr.y Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/bin/expr/expr.y Sat Jan 31 11:24:26 2015 (r277967) @@ -444,14 +444,26 @@ op_minus(struct val *a, struct val *b) return (r); } +/* + * We depend on undefined behaviour giving a result (in r). + * To test this result, pass it as volatile. This prevents + * optimizing away of the test based on the undefined behaviour. + */ void -assert_times(intmax_t a, intmax_t b, intmax_t r) +assert_times(intmax_t a, intmax_t b, volatile intmax_t r) { /* - * if first operand is 0, no overflow is possible, - * else result of division test must match second operand + * If the first operand is 0, no overflow is possible, + * else the result of the division test must match the + * second operand. + * + * Be careful to avoid overflow in the overflow test, as + * in assert_div(). Overflow in division would kill us + * with a SIGFPE before getting the test wrong. In old + * buggy versions, optimization used to give a null test + * instead of a SIGFPE. */ - if (a != 0 && r / a != b) + if ((a == -1 && b == INTMAX_MIN) || (a != 0 && r / a != b)) errx(ERR_EXIT, "overflow"); } Modified: user/dchagin/lemul/bin/mv/mv.c ============================================================================== --- user/dchagin/lemul/bin/mv/mv.c Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/bin/mv/mv.c Sat Jan 31 11:24:26 2015 (r277967) @@ -273,7 +273,7 @@ do_move(const char *from, const char *to static int fastcopy(const char *from, const char *to, struct stat *sbp) { - struct timeval tval[2]; + struct timespec ts[2]; static u_int blen = MAXPHYS; static char *bp = NULL; mode_t oldmode; @@ -350,10 +350,9 @@ err: if (unlink(to)) } else warn("%s: cannot stat", to); - tval[0].tv_sec = sbp->st_atime; - tval[1].tv_sec = sbp->st_mtime; - tval[0].tv_usec = tval[1].tv_usec = 0; - if (utimes(to, tval)) + ts[0] = sbp->st_atim; + ts[1] = sbp->st_mtim; + if (utimensat(AT_FDCWD, to, ts, 0)) warn("%s: set times", to); if (close(to_fd)) { Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/scripts/dtest.pl ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/scripts/dtest.pl Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/scripts/dtest.pl Sat Jan 31 11:24:26 2015 (r277967) @@ -273,7 +273,7 @@ sub run_tests { } $fullname = "$dir/$name"; - $exe = "./$base.exe"; + $exe = "$dir/$base.exe"; $exe_pid = -1; if ($opt_a && ($status != 0 || $tag != 0 || $droptag != 0 || Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/inline/err.D_OP_INCOMPAT.baddef1.d ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/inline/err.D_OP_INCOMPAT.baddef1.d Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/inline/err.D_OP_INCOMPAT.baddef1.d Sat Jan 31 11:24:26 2015 (r277967) @@ -38,4 +38,4 @@ * */ -inline cyc_func_t i = "i am a cyclic function"; +inline dtrace_trap_func_t i = "i am a dtrace trap function"; Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/inline/err.D_OP_INCOMPAT.badxlate.d ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/inline/err.D_OP_INCOMPAT.badxlate.d Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/inline/err.D_OP_INCOMPAT.badxlate.d Sat Jan 31 11:24:26 2015 (r277967) @@ -38,4 +38,4 @@ * */ -inline vfs_t *invalid = xlate(curthread->t_procp); +inline struct vnode *invalid = xlate(curthread->td_proc); Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/json/tst.usdt.c ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/json/tst.usdt.c Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/json/tst.usdt.c Sat Jan 31 11:24:26 2015 (r277967) @@ -14,6 +14,8 @@ */ #include +#include +#include #include "usdt.h" #define FMT "{" \ Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/lexer/err.D_CHR_NL.char.d ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/lexer/err.D_CHR_NL.char.d Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/lexer/err.D_CHR_NL.char.d Sat Jan 31 11:24:26 2015 (r277967) @@ -36,8 +36,10 @@ BEGIN { - +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Winvalid-pp-token" h = ' '; +#pragma clang diagnostic pop exit(0); } Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/lexer/err.D_CHR_NULL.char.d ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/lexer/err.D_CHR_NULL.char.d Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/lexer/err.D_CHR_NULL.char.d Sat Jan 31 11:24:26 2015 (r277967) @@ -36,7 +36,9 @@ BEGIN { - +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Winvalid-pp-token" h = ''; exit(0); +#pragma clang diagnostic pop } Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/lexer/err.D_STR_NL.string.d ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/lexer/err.D_STR_NL.string.d Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/lexer/err.D_STR_NL.string.d Sat Jan 31 11:24:26 2015 (r277967) @@ -36,9 +36,11 @@ BEGIN { - +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Winvalid-pp-token" h = "hello there"; exit(0); +#pragma clang diagnostic pop } Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/misc/tst.roch.d ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/misc/tst.roch.d Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/misc/tst.roch.d Sat Jan 31 11:24:26 2015 (r277967) @@ -74,13 +74,13 @@ fbt:::return (long long)curthread, pid, tid, (int)arg1, (int)arg0); } -mutex_enter:adaptive-acquire +mtx_lock:adaptive-acquire { printf(" %u 0x%llX %d %d lock:0x%llX", timestamp, (long long)curthread, pid, tid, arg0); } -mutex_exit:adaptive-release +mtx_unlock:adaptive-release { printf(" %u 0x%llX %d %d lock:0x%llX", timestamp, (long long) curthread, pid, tid, arg0); Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/nfs/tst.call3.c ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/nfs/tst.call3.c Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/nfs/tst.call3.c Sat Jan 31 11:24:26 2015 (r277967) @@ -28,6 +28,7 @@ #include #include +#include #include #include #include Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/offsetof/err.D_UNKNOWN.badmemb.d ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/offsetof/err.D_UNKNOWN.badmemb.d Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/offsetof/err.D_UNKNOWN.badmemb.d Sat Jan 31 11:24:26 2015 (r277967) @@ -40,5 +40,5 @@ BEGIN { - trace(offsetof(vnode_t, v_no_such_member)); + trace(offsetof(struct vnode, v_no_such_member)); } Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.args1.c ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.args1.c Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.args1.c Sat Jan 31 11:24:26 2015 (r277967) @@ -27,6 +27,7 @@ #pragma ident "%Z%%M% %I% %E% SMI" #include +#include #include int Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.fork.d ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.fork.d Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.fork.d Sat Jan 31 11:24:26 2015 (r277967) @@ -44,7 +44,7 @@ pid$1:a.out:waiting:entry proc:::create /pid == $1/ { - child = args[0]->pr_pid; + child = args[0]->p_pid; trace(pid); } Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.gcc.c ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.gcc.c Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.gcc.c Sat Jan 31 11:24:26 2015 (r277967) @@ -26,6 +26,8 @@ #pragma ident "%Z%%M% %I% %E% SMI" +#include +#include #include #include #include Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret1.c ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret1.c Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret1.c Sat Jan 31 11:24:26 2015 (r277967) @@ -27,6 +27,7 @@ #pragma ident "%Z%%M% %I% %E% SMI" #include +#include #include /* Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret2.c ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret2.c Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.ret2.c Sat Jan 31 11:24:26 2015 (r277967) @@ -27,6 +27,7 @@ #pragma ident "%Z%%M% %I% %E% SMI" #include +#include #include /* Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.vfork.d ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.vfork.d Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.vfork.d Sat Jan 31 11:24:26 2015 (r277967) @@ -44,7 +44,7 @@ pid$1:a.out:waiting:entry proc:::create /pid == $1/ { - child = args[0]->pr_pid; + child = args[0]->p_pid; } pid$1:a.out:go: Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak1.c ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak1.c Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak1.c Sat Jan 31 11:24:26 2015 (r277967) @@ -27,6 +27,7 @@ #pragma ident "%Z%%M% %I% %E% SMI" #include +#include #include /* Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak2.c ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak2.c Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.weak2.c Sat Jan 31 11:24:26 2015 (r277967) @@ -27,6 +27,7 @@ #pragma ident "%Z%%M% %I% %E% SMI" #include +#include #include /* Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/err.D_PRINT_VOID.bad.d ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/err.D_PRINT_VOID.bad.d Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/err.D_PRINT_VOID.bad.d Sat Jan 31 11:24:26 2015 (r277967) @@ -25,7 +25,7 @@ BEGIN { - print((void)`p0); + print((void)`proc0); } BEGIN Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/tst.xlate.d ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/tst.xlate.d Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/tst.xlate.d Sat Jan 31 11:24:26 2015 (r277967) @@ -22,13 +22,13 @@ typedef struct pancakes { int i; string s; - timespec_t t; + struct timespec t; } pancakes_t; translator pancakes_t < void *V > { i = 2 * 10; s = strjoin("I like ", "pancakes"); - t = *(timespec_t *)`dtrace_zero; + t = *(struct timespec *)`dtrace_zero; }; BEGIN Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/tst.xlate.d.out ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/tst.xlate.d.out Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/tst.xlate.d.out Sat Jan 31 11:24:26 2015 (r277967) @@ -1,7 +1,7 @@ pancakes_t { int i = 0x14 string s = [ "I like pancakes" ] - timespec_t t = { + struct timespec t = { time_t tv_sec = 0 long tv_nsec = 0 } Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/probes/tst.probestar.d ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/probes/tst.probestar.d Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/probes/tst.probestar.d Sat Jan 31 11:24:26 2015 (r277967) @@ -44,7 +44,7 @@ BEGIN i = 0; } -syscall::*lwp*:entry +syscall::*wait*:entry { exit(0); } Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/proc/tst.discard.ksh ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/proc/tst.discard.ksh Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/proc/tst.discard.ksh Sat Jan 31 11:24:26 2015 (r277967) @@ -36,7 +36,7 @@ script() { $dtrace -s /dev/stdin <pr_pid == $child && + /args[1]->p_pid == $child && args[1]->pr_psargs == "$longsleep" && args[2] == SIGHUP/ { exit(0); Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/proc/tst.signal.ksh ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/proc/tst.signal.ksh Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/proc/tst.signal.ksh Sat Jan 31 11:24:26 2015 (r277967) @@ -42,7 +42,7 @@ script() /* * This is guaranteed to not race with signal-handle. */ - target = args[1]->pr_pid; + target = args[1]->p_pid; } proc:::signal-handle Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/profile-n/tst.func.ksh ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/profile-n/tst.func.ksh Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/profile-n/tst.func.ksh Sat Jan 31 11:24:26 2015 (r277967) @@ -60,14 +60,14 @@ spinny & child=$! # -# This is gutsy -- we're assuming that mutex_enter(9F) will show up in the +# This is gutsy -- we're assuming that mtx_lock(9) will show up in the # output. This is most likely _not_ to show up in the output if the # platform does not support arbitrary resolution interval timers -- but # the above script was stress-tested down to 100 hertz and still ran # successfully on all platforms, so one is hopeful that this test will pass # even in that case. # -script | tee /dev/fd/2 | grep mutex_enter > /dev/null +script | tee /dev/fd/2 | grep mtx_lock > /dev/null status=$? kill $child Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/profile-n/tst.mod.ksh ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/profile-n/tst.mod.ksh Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/profile-n/tst.mod.ksh Sat Jan 31 11:24:26 2015 (r277967) @@ -63,7 +63,7 @@ child=$! # The only thing we can be sure of is that some module named "unix" (or # "genunix") did some work -- so that's all we'll check. # -script | tee /dev/fd/2 | grep unix > /dev/null +script | tee /dev/fd/2 | grep kernel > /dev/null status=$? kill $child Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/profile-n/tst.sym.ksh ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/profile-n/tst.sym.ksh Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/profile-n/tst.sym.ksh Sat Jan 31 11:24:26 2015 (r277967) @@ -63,7 +63,7 @@ child=$! # This is the same gutsy test as that found in the func() test; see that # test for the rationale. # -script | tee /dev/fd/2 | grep mutex_enter > /dev/null +script | tee /dev/fd/2 | grep mtx_lock > /dev/null status=$? kill $child Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/scalars/tst.selfarray2.d ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/scalars/tst.selfarray2.d Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/scalars/tst.selfarray2.d Sat Jan 31 11:24:26 2015 (r277967) @@ -31,8 +31,8 @@ #pragma D option dynvarsize=1m struct bar { - int pid; - kthread_t *curthread; + pid_t pid; + struct thread *curthread; }; self struct bar foo[int]; Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/syscall/tst.args.c ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/syscall/tst.args.c Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/syscall/tst.args.c Sat Jan 31 11:24:26 2015 (r277967) @@ -28,6 +28,7 @@ #include #include +#include /*ARGSUSED*/ int Modified: user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.dlclose1.ksh ============================================================================== --- user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.dlclose1.ksh Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.dlclose1.ksh Sat Jan 31 11:24:26 2015 (r277967) @@ -106,11 +106,13 @@ cat > main.c < #include #include +#include int main(int argc, char **argv) { void *live; + sigset_t mask; if ((live = dlopen("./livelib.so", RTLD_LAZY | RTLD_LOCAL)) == NULL) { printf("dlopen of livelib.so failed: %s\n", dlerror()); @@ -119,7 +121,8 @@ main(int argc, char **argv) (void) dlclose(live); - pause(); + (void) sigemptyset(&mask); + (void) sigsuspend(&mask); return (0); } @@ -133,7 +136,7 @@ fi script() { $dtrace -w -x bufsize=1k -c ./main -qs /dev/stdin < +#include + +#include #include #include "forker.h" Modified: user/dchagin/lemul/contrib/amd/amd/amfs_generic.c ============================================================================== --- user/dchagin/lemul/contrib/amd/amd/amfs_generic.c Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/contrib/amd/amd/amfs_generic.c Sat Jan 31 11:24:26 2015 (r277967) @@ -1113,7 +1113,7 @@ amfs_generic_mount_child(am_node *new_mp new_mp->am_transp = (SVCXPRT *) xmalloc(sizeof(SVCXPRT)); *(new_mp->am_transp) = *current_transp; } - if (error && (new_mp->am_mnt->mf_ops == &amfs_error_ops)) + if (error && new_mp->am_mnt && (new_mp->am_mnt->mf_ops == &amfs_error_ops)) new_mp->am_error = error; if (new_mp->am_error > 0) Modified: user/dchagin/lemul/contrib/amd/amd/amfs_program.c ============================================================================== --- user/dchagin/lemul/contrib/amd/amd/amfs_program.c Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/contrib/amd/amd/amfs_program.c Sat Jan 31 11:24:26 2015 (r277967) @@ -147,10 +147,12 @@ amfs_program_exec(char *info) (void) fclose(stdout); if (!logfp) logfp = stderr; /* initialize before possible first use */ - (void) dup(fileno(logfp)); + if (dup(fileno(logfp)) == -1) + return errno; if (fileno(logfp) != fileno(stderr)) { (void) fclose(stderr); - (void) dup(fileno(logfp)); + if (dup(fileno(logfp)) == -1) + return errno; } /* Modified: user/dchagin/lemul/contrib/amd/amd/readdir.c ============================================================================== --- user/dchagin/lemul/contrib/amd/amd/readdir.c Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/contrib/amd/amd/readdir.c Sat Jan 31 11:24:26 2015 (r277967) @@ -63,6 +63,7 @@ static int key_already_in_chain(char *ke static nfsentry *make_entry_chain(am_node *mp, const nfsentry *current_chain, int fully_browsable); static int amfs_readdir_browsable(am_node *mp, nfscookie cookie, nfsdirlist *dp, nfsentry *ep, u_int count, int fully_browsable); +static const u_int dotdotcookie = DOT_DOT_COOKIE; /**************************************************************************** *** FUNCTIONS *** @@ -178,8 +179,9 @@ make_entry_chain(am_node *mp, const nfse /* we have space. put entry in next cell */ ++last_cookie; - chain[num_entries].ne_fileid = (u_int) last_cookie; - *(u_int *) chain[num_entries].ne_cookie = (u_int) last_cookie; + chain[num_entries].ne_fileid = last_cookie; + (void)memcpy(chain[num_entries].ne_cookie, &last_cookie, + sizeof(last_cookie)); chain[num_entries].ne_name = key; if (num_entries < max_entries - 1) { /* link to next one */ chain[num_entries].ne_nextentry = &chain[num_entries + 1]; @@ -253,7 +255,7 @@ amfs_readdir_browsable(am_node *mp, nfsc ep[0].ne_fileid = mp->am_gen; ep[0].ne_name = "."; ep[0].ne_nextentry = &ep[1]; - *(u_int *) ep[0].ne_cookie = 0; + (void)memset(ep[0].ne_cookie, 0, sizeof(u_int)); /* construct ".." */ if (mp->am_parent) @@ -300,9 +302,12 @@ amfs_readdir_browsable(am_node *mp, nfsc nfsentry *ne; for (j = 0, ne = te; ne; ne = ne->ne_nextentry) plog(XLOG_DEBUG, "gen2 key %4d \"%s\"", j++, ne->ne_name); - for (j = 0, ne = ep; ne; ne = ne->ne_nextentry) + for (j = 0, ne = ep; ne; ne = ne->ne_nextentry) { + u_int cookie; + (void)memcpy(&cookie, ne->ne_cookie, sizeof(cookie)); plog(XLOG_DEBUG, "gen2+ key %4d \"%s\" fi=%d ck=%d", - j++, ne->ne_name, ne->ne_fileid, *(u_int *)ne->ne_cookie); + j++, ne->ne_name, ne->ne_fileid, cookie); + } plog(XLOG_DEBUG, "EOF is %d", dp->dl_eof); } return 0; @@ -412,7 +417,7 @@ amfs_generic_readdir(am_node *mp, nfscoo ep[0].ne_fileid = mp->am_gen; ep[0].ne_name = "."; ep[0].ne_nextentry = &ep[1]; - *(u_int *) ep[0].ne_cookie = 0; + (void)memset(ep[0].ne_cookie, 0, sizeof(u_int)); /* construct ".." */ if (mp->am_parent) @@ -429,9 +434,12 @@ amfs_generic_readdir(am_node *mp, nfscoo if (amuDebug(D_READDIR)) { nfsentry *ne; int j; - for (j = 0, ne = ep; ne; ne = ne->ne_nextentry) + for (j = 0, ne = ep; ne; ne = ne->ne_nextentry) { + u_int cookie; + (void)memcpy(&cookie, ne->ne_cookie, sizeof(cookie)); plog(XLOG_DEBUG, "gen1 key %4d \"%s\" fi=%d ck=%d", - j++, ne->ne_name, ne->ne_fileid, *(u_int *)ne->ne_cookie); + j++, ne->ne_name, ne->ne_fileid, cookie); + } } return 0; } @@ -460,9 +468,9 @@ amfs_generic_readdir(am_node *mp, nfscoo am_node *xp_next = next_nonerror_node(xp->am_osib); if (xp_next) { - *(u_int *) ep->ne_cookie = xp_next->am_gen; + (void)memcpy(ep->ne_cookie, &xp_next->am_gen, sizeof(xp_next->am_gen)); } else { - *(u_int *) ep->ne_cookie = DOT_DOT_COOKIE; + (void)memcpy(ep->ne_cookie, &dotdotcookie, sizeof(dotdotcookie)); dp->dl_eof = TRUE; } @@ -488,9 +496,12 @@ amfs_generic_readdir(am_node *mp, nfscoo if (amuDebug(D_READDIR)) { nfsentry *ne; int j; - for (j=0,ne=ep; ne; ne=ne->ne_nextentry) + for (j=0,ne=ep; ne; ne=ne->ne_nextentry) { + u_int cookie; + (void)memcpy(&cookie, ne->ne_cookie, sizeof(cookie)); plog(XLOG_DEBUG, "gen2 key %4d \"%s\" fi=%d ck=%d", - j++, ne->ne_name, ne->ne_fileid, *(u_int *)ne->ne_cookie); + j++, ne->ne_name, ne->ne_fileid, cookie); + } } return 0; } Modified: user/dchagin/lemul/contrib/amd/hlfsd/homedir.c ============================================================================== --- user/dchagin/lemul/contrib/amd/hlfsd/homedir.c Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/contrib/amd/hlfsd/homedir.c Sat Jan 31 11:24:26 2015 (r277967) @@ -492,9 +492,10 @@ readent: /* read records */ buf[0] = '\0'; - fgets(buf, 256, passwd_fp); + if (fgets(buf, 256, passwd_fp) == NULL) + return NULL; passwd_line++; - if (!buf || buf[0] == '\0') + if (buf[0] == '\0') goto readent; /* read user name */ Modified: user/dchagin/lemul/contrib/amd/hlfsd/stubs.c ============================================================================== --- user/dchagin/lemul/contrib/amd/hlfsd/stubs.c Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/contrib/amd/hlfsd/stubs.c Sat Jan 31 11:24:26 2015 (r277967) @@ -164,8 +164,7 @@ nfsproc_getattr_2_svc(am_nfs_fh *argp, s if (gid != hlfs_gid) { res.ns_status = NFSERR_STALE; } else { - memset((char *) &uid, 0, sizeof(int)); - uid = *(u_int *) argp->fh_data; + (void)memcpy(&uid, argp->fh_data, sizeof(uid)); if (plt_search(uid) != (uid2home_t *) NULL) { res.ns_status = NFS_OK; un_fattr.na_fileid = uid; @@ -282,8 +281,8 @@ nfsproc_lookup_2_svc(nfsdiropargs *argp, } else { /* entry found and gid is permitted */ un_fattr.na_fileid = untab[idx].uid; res.dr_u.dr_drok_u.drok_attributes = un_fattr; - memset((char *) &un_fhandle, 0, sizeof(am_nfs_fh)); - *(u_int *) un_fhandle.fh_data = (u_int) untab[idx].uid; + memset(&un_fhandle, 0, sizeof(un_fhandle)); + memcpy(un_fhandle.fh_data, &untab[idx].uid, sizeof(untab[idx].uid)); xstrlcpy((char *) &un_fhandle.fh_data[sizeof(int)], untab[idx].username, sizeof(am_nfs_fh) - sizeof(int)); @@ -338,8 +337,7 @@ nfsproc_readlink_2_svc(am_nfs_fh *argp, } if (groupid == hlfs_gid) { - memset((char *) &userid, 0, sizeof(int)); - userid = *(u_int *) argp->fh_data; + memcpy(&userid, argp->fh_data, sizeof(userid)); username = (char *) &argp->fh_data[sizeof(int)]; if (!(res.rlr_u.rlr_data_u = mailbox(userid, username))) return (nfsreadlinkres *) NULL; Modified: user/dchagin/lemul/contrib/elftoolchain/elfcopy/main.c ============================================================================== --- user/dchagin/lemul/contrib/elftoolchain/elfcopy/main.c Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/contrib/elftoolchain/elfcopy/main.c Sat Jan 31 11:24:26 2015 (r277967) @@ -210,7 +210,7 @@ static struct { }; static int copy_from_tempfile(const char *src, const char *dst, - int infd, int *outfd); + int infd, int *outfd, int in_place); static void create_file(struct elfcopy *ecp, const char *src, const char *dst); static void elfcopy_main(struct elfcopy *ecp, int argc, char **argv); @@ -523,33 +523,39 @@ create_tempfile(char **fn, int *fd) #undef _TEMPFILEPATH } +/* + * Copy temporary file with path src and file descriptor infd to path dst. + * If in_place is set act as if editing the file in place, avoiding rename() + * to preserve hard and symbolic links. Output file remains open, with file + * descriptor returned in outfd. + */ static int -copy_from_tempfile(const char *src, const char *dst, int infd, int *outfd) +copy_from_tempfile(const char *src, const char *dst, int infd, int *outfd, + int in_place) { int tmpfd; /* * First, check if we can use rename(). */ - if (rename(src, dst) >= 0) { - *outfd = infd; - return (0); - } else if (errno != EXDEV) - return (-1); - - /* - * If the rename() failed due to 'src' and 'dst' residing in - * two different file systems, invoke a helper function in - * libelftc to do the copy. - */ - - if (unlink(dst) < 0) - return (-1); + if (in_place == 0) { + if (rename(src, dst) >= 0) { + *outfd = infd; + return (0); + } else if (errno != EXDEV) + return (-1); + + /* + * If the rename() failed due to 'src' and 'dst' residing in + * two different file systems, invoke a helper function in + * libelftc to do the copy. + */ - if ((tmpfd = open(dst, O_CREAT | O_WRONLY, 0755)) < 0) - return (-1); + if (unlink(dst) < 0) + return (-1); + } - if (lseek(infd, 0, SEEK_SET) < 0) + if ((tmpfd = open(dst, O_CREAT | O_TRUNC | O_WRONLY, 0755)) < 0) return (-1); if (elftc_copyfile(infd, tmpfd) < 0) @@ -578,6 +584,7 @@ create_file(struct elfcopy *ecp, const c struct stat sb; char *tempfile, *elftemp; int efd, ifd, ofd, ofd0, tfd; + int in_place; tempfile = NULL; @@ -718,10 +725,15 @@ copy_done: #endif if (tempfile != NULL) { - if (dst == NULL) + in_place = 0; + if (dst == NULL) { dst = src; + if (lstat(dst, &sb) != -1 && + (sb.st_nlink > 1 || S_ISLNK(sb.st_mode))) + in_place = 1; + } - if (copy_from_tempfile(tempfile, dst, ofd, &tfd) < 0) + if (copy_from_tempfile(tempfile, dst, ofd, &tfd, in_place) < 0) err(EXIT_FAILURE, "creation of %s failed", dst); free(tempfile); Modified: user/dchagin/lemul/contrib/gdb/gdb/corelow.c ============================================================================== --- user/dchagin/lemul/contrib/gdb/gdb/corelow.c Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/contrib/gdb/gdb/corelow.c Sat Jan 31 11:24:26 2015 (r277967) @@ -432,15 +432,16 @@ get_core_register_section (char *name, char *human_name, int required) { - char section_name[100]; + static char *section_name = NULL; struct bfd_section *section; bfd_size_type size; char *contents; + xfree (section_name); if (PIDGET (inferior_ptid)) - sprintf (section_name, "%s/%d", name, PIDGET (inferior_ptid)); + section_name = xstrprintf ("%s/%d", name, PIDGET (inferior_ptid)); else - strcpy (section_name, name); + section_name = xstrdup (name); section = bfd_get_section_by_name (core_bfd, section_name); if (! section) Modified: user/dchagin/lemul/contrib/gdb/gdb/dwarf2expr.c ============================================================================== --- user/dchagin/lemul/contrib/gdb/gdb/dwarf2expr.c Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/contrib/gdb/gdb/dwarf2expr.c Sat Jan 31 11:24:26 2015 (r277967) @@ -575,6 +575,7 @@ execute_stack_op (struct dwarf_expr_cont break; case DW_OP_div: binop = BINOP_DIV; + break; case DW_OP_minus: binop = BINOP_SUB; break; @@ -595,6 +596,7 @@ execute_stack_op (struct dwarf_expr_cont break; case DW_OP_shr: binop = BINOP_RSH; + break; case DW_OP_shra: binop = BINOP_RSH; val1 = value_from_longest (signed_address_type (), first); Modified: user/dchagin/lemul/contrib/libcxxrt/stdexcept.cc ============================================================================== --- user/dchagin/lemul/contrib/libcxxrt/stdexcept.cc Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/contrib/libcxxrt/stdexcept.cc Sat Jan 31 11:24:26 2015 (r277967) @@ -82,19 +82,14 @@ const char* bad_typeid::what() const thr return "std::bad_typeid"; } -__attribute__((weak)) bad_array_new_length::bad_array_new_length() throw() {} -__attribute__((weak)) bad_array_new_length::~bad_array_new_length() {} -__attribute__((weak)) bad_array_new_length::bad_array_new_length(const bad_array_new_length&) throw() {} -__attribute__((weak)) bad_array_new_length& bad_array_new_length::operator=(const bad_array_new_length&) throw() { return *this; } -__attribute__((weak)) const char* bad_array_new_length::what() const throw() { return "std::bad_array_new_length"; Modified: user/dchagin/lemul/contrib/llvm/lib/Target/AArch64/AArch64RegisterInfo.cpp ============================================================================== --- user/dchagin/lemul/contrib/llvm/lib/Target/AArch64/AArch64RegisterInfo.cpp Sat Jan 31 11:04:41 2015 (r277966) +++ user/dchagin/lemul/contrib/llvm/lib/Target/AArch64/AArch64RegisterInfo.cpp Sat Jan 31 11:24:26 2015 (r277967) @@ -33,6 +33,10 @@ using namespace llvm; #define GET_REGINFO_TARGET_DESC #include "AArch64GenRegisterInfo.inc" +static cl::opt +ReserveX18("aarch64-reserve-x18", cl::Hidden, + cl::desc("Reserve X18, making it unavailable as GPR")); + AArch64RegisterInfo::AArch64RegisterInfo(const AArch64InstrInfo *tii, const AArch64Subtarget *sti) : AArch64GenRegisterInfo(AArch64::LR), TII(tii), STI(sti) {} @@ -90,7 +94,7 @@ AArch64RegisterInfo::getReservedRegs(con Reserved.set(AArch64::W29); } - if (STI->isTargetDarwin()) { + if (STI->isTargetDarwin() || ReserveX18) { Reserved.set(AArch64::X18); // Platform register Reserved.set(AArch64::W18); } @@ -117,7 +121,7 @@ bool AArch64RegisterInfo::isReservedReg( return true; case AArch64::X18: case AArch64::W18: - return STI->isTargetDarwin(); + return STI->isTargetDarwin() || ReserveX18; case AArch64::FP: case AArch64::W29: return TFI->hasFP(MF) || STI->isTargetDarwin(); @@ -379,7 +383,7 @@ unsigned AArch64RegisterInfo::getRegPres case AArch64::GPR64commonRegClassID: return 32 - 1 // XZR/SP - (TFI->hasFP(MF) || STI->isTargetDarwin()) // FP - - STI->isTargetDarwin() // X18 reserved as platform register + - (STI->isTargetDarwin() || ReserveX18) // X18 reserved as platform register - hasBasePointer(MF); // X19 case AArch64::FPR8RegClassID: case AArch64::FPR16RegClassID: Copied: user/dchagin/lemul/contrib/llvm/patches/patch-29-llvm-r226664-aarch64-x18.diff (from r277966, head/contrib/llvm/patches/patch-29-llvm-r226664-aarch64-x18.diff) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/dchagin/lemul/contrib/llvm/patches/patch-29-llvm-r226664-aarch64-x18.diff Sat Jan 31 11:24:26 2015 (r277967, copy of r277966, head/contrib/llvm/patches/patch-29-llvm-r226664-aarch64-x18.diff) @@ -0,0 +1,83 @@ +Pull in r226664 from upstream llvm trunk (by Tim Northover): + + AArch64: add backend option to reserve x18 (platform register) + + AAPCS64 says that it's up to the platform to specify whether x18 is + reserved, and a first step on that way is to add a flag controlling + it. + + From: Andrew Turner + +Introduced here: http://svnweb.freebsd.org/changeset/base/277774 + +Index: lib/Target/AArch64/AArch64RegisterInfo.cpp +=================================================================== +--- lib/Target/AArch64/AArch64RegisterInfo.cpp ++++ lib/Target/AArch64/AArch64RegisterInfo.cpp +@@ -33,6 +33,10 @@ using namespace llvm; + #define GET_REGINFO_TARGET_DESC + #include "AArch64GenRegisterInfo.inc" + ++static cl::opt ++ReserveX18("aarch64-reserve-x18", cl::Hidden, ++ cl::desc("Reserve X18, making it unavailable as GPR")); ++ + AArch64RegisterInfo::AArch64RegisterInfo(const AArch64InstrInfo *tii, + const AArch64Subtarget *sti) + : AArch64GenRegisterInfo(AArch64::LR), TII(tii), STI(sti) {} +@@ -90,7 +94,7 @@ AArch64RegisterInfo::getReservedRegs(const Machine + Reserved.set(AArch64::W29); + } + +- if (STI->isTargetDarwin()) { ++ if (STI->isTargetDarwin() || ReserveX18) { + Reserved.set(AArch64::X18); // Platform register + Reserved.set(AArch64::W18); + } +@@ -117,7 +121,7 @@ bool AArch64RegisterInfo::isReservedReg(const Mach + return true; + case AArch64::X18: + case AArch64::W18: +- return STI->isTargetDarwin(); ++ return STI->isTargetDarwin() || ReserveX18; + case AArch64::FP: + case AArch64::W29: + return TFI->hasFP(MF) || STI->isTargetDarwin(); +@@ -379,7 +383,7 @@ unsigned AArch64RegisterInfo::getRegPressureLimit( + case AArch64::GPR64commonRegClassID: + return 32 - 1 // XZR/SP + - (TFI->hasFP(MF) || STI->isTargetDarwin()) // FP +- - STI->isTargetDarwin() // X18 reserved as platform register ++ - (STI->isTargetDarwin() || ReserveX18) // X18 reserved as platform register + - hasBasePointer(MF); // X19 + case AArch64::FPR8RegClassID: + case AArch64::FPR16RegClassID: +Index: test/CodeGen/AArch64/arm64-platform-reg.ll +=================================================================== +--- test/CodeGen/AArch64/arm64-platform-reg.ll ++++ test/CodeGen/AArch64/arm64-platform-reg.ll +@@ -1,4 +1,5 @@ +-; RUN: llc -mtriple=arm64-apple-ios -o - %s | FileCheck %s --check-prefix=CHECK-DARWIN ++; RUN: llc -mtriple=arm64-apple-ios -o - %s | FileCheck %s --check-prefix=CHECK-RESERVE-X18 ++; RUN: llc -mtriple=arm64-freebsd-gnu -aarch64-reserve-x18 -o - %s | FileCheck %s --check-prefix=CHECK-RESERVE-X18 + ; RUN: llc -mtriple=arm64-linux-gnu -o - %s | FileCheck %s + + ; x18 is reserved as a platform register on Darwin but not on other +@@ -16,11 +17,11 @@ define void @keep_live() { + ; CHECK: ldr x18 + ; CHECK: str x18 + +-; CHECK-DARWIN-NOT: ldr fp +-; CHECK-DARWIN-NOT: ldr x18 +-; CHECK-DARWIN: Spill +-; CHECK-DARWIN-NOT: ldr fp +-; CHECK-DARWIN-NOT: ldr x18 +-; CHECK-DARWIN: ret ++; CHECK-RESERVE-X18-NOT: ldr fp ++; CHECK-RESERVE-X18-NOT: ldr x18 ++; CHECK-RESERVE-X18: Spill ++; CHECK-RESERVE-X18-NOT: ldr fp ++; CHECK-RESERVE-X18-NOT: ldr x18 ++; CHECK-RESERVE-X18: ret + ret void + } Copied: user/dchagin/lemul/contrib/llvm/patches/patch-30-clang-r227062-fixes-x18.diff (from r277966, head/contrib/llvm/patches/patch-30-clang-r227062-fixes-x18.diff) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/dchagin/lemul/contrib/llvm/patches/patch-30-clang-r227062-fixes-x18.diff Sat Jan 31 11:24:26 2015 (r277967, copy of r277966, head/contrib/llvm/patches/patch-30-clang-r227062-fixes-x18.diff) @@ -0,0 +1,54 @@ +Pull in r227062 from upstream clang trunk (by Renato Golin): + + Allows Clang to use LLVM's fixes-x18 option + + This patch allows clang to have llvm reserve the x18 + platform register on AArch64. FreeBSD will use this in the kernel for + per-cpu data but has no need to reserve this register in userland so + will need this flag to reserve it. + + This uses llvm r226664 to allow this register to be reserved. + + Patch by Andrew Turner. + +Introduced here: http://svnweb.freebsd.org/changeset/base/277775 + +Index: tools/clang/include/clang/Driver/Options.td +=================================================================== +--- tools/clang/include/clang/Driver/Options.td ++++ tools/clang/include/clang/Driver/Options.td +@@ -1141,6 +1141,9 @@ def mno_long_calls : Flag<["-"], "mno-long-calls"> + def mgeneral_regs_only : Flag<["-"], "mgeneral-regs-only">, Group, + HelpText<"Generate code which only uses the general purpose registers (AArch64 only)">; + ++def ffixed_x18 : Flag<["-"], "ffixed-x18">, Group, ++ HelpText<"Reserve the x18 register (AArch64 only)">; ++ + def mvsx : Flag<["-"], "mvsx">, Group; + def mno_vsx : Flag<["-"], "mno-vsx">, Group; + def mfprnd : Flag<["-"], "mfprnd">, Group; +Index: tools/clang/lib/Driver/Tools.cpp +=================================================================== +--- tools/clang/lib/Driver/Tools.cpp ++++ tools/clang/lib/Driver/Tools.cpp +@@ -887,6 +887,11 @@ void Clang::AddAArch64TargetArgs(const ArgList &Ar + if (A->getOption().matches(options::OPT_mno_global_merge)) + CmdArgs.push_back("-mno-global-merge"); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Sat Jan 31 17:08:10 2015 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B801339F; Sat, 31 Jan 2015 17:08:10 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id A11A82A6; Sat, 31 Jan 2015 17:08:10 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t0VH8A5L082452; Sat, 31 Jan 2015 17:08:10 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0VH833C082412; Sat, 31 Jan 2015 17:08:03 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201501311708.t0VH833C082412@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sat, 31 Jan 2015 17:08:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r277984 - in user/dchagin/lemul: bin/ps bin/sh contrib/tcpdump include sys/arm/allwinner sys/arm/altera/socfpga sys/arm/freescale/imx sys/arm/freescale/vybrid sys/arm/rockchip sys/arm/s... X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 31 Jan 2015 17:08:10 -0000 Author: dchagin Date: Sat Jan 31 17:08:02 2015 New Revision: 277984 URL: https://svnweb.freebsd.org/changeset/base/277984 Log: Merge from head. Modified: user/dchagin/lemul/bin/ps/ps.c user/dchagin/lemul/bin/sh/jobs.c user/dchagin/lemul/bin/sh/trap.c user/dchagin/lemul/contrib/tcpdump/print-atm.c user/dchagin/lemul/contrib/tcpdump/print-llc.c user/dchagin/lemul/include/semaphore.h user/dchagin/lemul/sys/arm/allwinner/a10_gpio.c user/dchagin/lemul/sys/arm/altera/socfpga/socfpga_gpio.c user/dchagin/lemul/sys/arm/freescale/imx/imx_gpio.c user/dchagin/lemul/sys/arm/freescale/vybrid/vf_gpio.c user/dchagin/lemul/sys/arm/rockchip/rk30xx_gpio.c user/dchagin/lemul/sys/arm/samsung/exynos/exynos5_pad.c user/dchagin/lemul/sys/arm/ti/ti_gpio.c user/dchagin/lemul/sys/conf/files user/dchagin/lemul/sys/dev/gpio/gpio_if.m user/dchagin/lemul/sys/dev/iscsi/icl_soft.c user/dchagin/lemul/sys/dev/iscsi/icl_wrappers.h user/dchagin/lemul/sys/dev/usb/input/uhid.c user/dchagin/lemul/sys/fs/tmpfs/tmpfs_subr.c user/dchagin/lemul/sys/fs/tmpfs/tmpfs_vnops.c user/dchagin/lemul/sys/kern/kern_umtx.c user/dchagin/lemul/sys/mips/atheros/ar71xx_gpio.c user/dchagin/lemul/sys/mips/atheros/ar71xx_gpiovar.h user/dchagin/lemul/sys/mips/cavium/octeon_gpio.c user/dchagin/lemul/sys/mips/cavium/octeon_gpiovar.h user/dchagin/lemul/sys/mips/rt305x/rt305x_gpio.c user/dchagin/lemul/sys/mips/rt305x/rt305x_gpiovar.h Directory Properties: user/dchagin/lemul/ (props changed) user/dchagin/lemul/contrib/tcpdump/ (props changed) user/dchagin/lemul/include/ (props changed) user/dchagin/lemul/sys/ (props changed) user/dchagin/lemul/sys/conf/ (props changed) Modified: user/dchagin/lemul/bin/ps/ps.c ============================================================================== --- user/dchagin/lemul/bin/ps/ps.c Sat Jan 31 16:39:26 2015 (r277983) +++ user/dchagin/lemul/bin/ps/ps.c Sat Jan 31 17:08:02 2015 (r277984) @@ -178,7 +178,7 @@ main(int argc, char *argv[]) KINFO *kinfo = NULL, *next_KINFO; KINFO_STR *ks; struct varent *vent; - struct winsize ws; + struct winsize ws = { .ws_row = 0 }; const char *nlistf, *memf, *fmtstr, *str; char *cols; int all, ch, elem, flag, _fmt, i, lineno, linelen, left; Modified: user/dchagin/lemul/bin/sh/jobs.c ============================================================================== --- user/dchagin/lemul/bin/sh/jobs.c Sat Jan 31 16:39:26 2015 (r277983) +++ user/dchagin/lemul/bin/sh/jobs.c Sat Jan 31 17:08:02 2015 (r277984) @@ -87,8 +87,8 @@ static int ttyfd = -1; /* mode flags for dowait */ #define DOWAIT_BLOCK 0x1 /* wait until a child exits */ -#define DOWAIT_SIG 0x2 /* if DOWAIT_BLOCK, abort on SIGINT/SIGQUIT */ -#define DOWAIT_SIG_ANY 0x4 /* if DOWAIT_SIG, abort on any signal */ +#define DOWAIT_SIG 0x2 /* if DOWAIT_BLOCK, abort on signal */ +#define DOWAIT_SIG_TRAP 0x4 /* if DOWAIT_SIG, abort on trapped signal only */ #if JOBS static void restartjob(struct job *); @@ -1028,7 +1028,7 @@ waitforjob(struct job *jp, int *origstat TRACE(("waitforjob(%%%td) called\n", jp - jobtab + 1)); while (jp->state == 0) if (dowait(DOWAIT_BLOCK | (Tflag ? DOWAIT_SIG | - DOWAIT_SIG_ANY : 0), jp) == -1) + DOWAIT_SIG_TRAP : 0), jp) == -1) dotrap(); #if JOBS if (jp->jobctl) { @@ -1120,7 +1120,7 @@ dowait(int mode, struct job *job) TRACE(("wait returns %d, status=%d\n", (int)pid, status)); if (pid == 0 && (mode & DOWAIT_SIG) != 0) { pid = -1; - if (((mode & DOWAIT_SIG_ANY) != 0 ? + if (((mode & DOWAIT_SIG_TRAP) != 0 ? pendingsig : pendingsig_waitcmd) != 0) { errno = EINTR; break; Modified: user/dchagin/lemul/bin/sh/trap.c ============================================================================== --- user/dchagin/lemul/bin/sh/trap.c Sat Jan 31 16:39:26 2015 (r277983) +++ user/dchagin/lemul/bin/sh/trap.c Sat Jan 31 17:08:02 2015 (r277984) @@ -74,7 +74,7 @@ __FBSDID("$FreeBSD$"); static char sigmode[NSIG]; /* current value of signal */ volatile sig_atomic_t pendingsig; /* indicates some signal received */ -volatile sig_atomic_t pendingsig_waitcmd; /* indicates SIGINT/SIGQUIT received */ +volatile sig_atomic_t pendingsig_waitcmd; /* indicates wait builtin should be interrupted */ static int in_dotrap; /* do we execute in a trap handler? */ static char *volatile trap[NSIG]; /* trap handler commands */ static volatile sig_atomic_t gotsig[NSIG]; @@ -400,6 +400,7 @@ onsig(int signo) (signo != SIGCHLD || !ignore_sigchld)) { gotsig[signo] = 1; pendingsig = signo; + pendingsig_waitcmd = signo; } } Modified: user/dchagin/lemul/contrib/tcpdump/print-atm.c ============================================================================== --- user/dchagin/lemul/contrib/tcpdump/print-atm.c Sat Jan 31 16:39:26 2015 (r277983) +++ user/dchagin/lemul/contrib/tcpdump/print-atm.c Sat Jan 31 17:08:02 2015 (r277984) @@ -167,7 +167,7 @@ atm_if_print(netdissect_options *ndo, uint32_t llchdr; u_int hdrlen = 0; - if (caplen < 8) { + if (caplen < 1 || length < 1) { ND_PRINT((ndo, "%s", tstr)); return (caplen); } @@ -181,6 +181,15 @@ atm_if_print(netdissect_options *ndo, } /* + * Must have at least a DSAP, an SSAP, and the first byte of the + * control field. + */ + if (caplen < 3 || length < 3) { + ND_PRINT((ndo, "%s", tstr)); + return (caplen); + } + + /* * Extract the presumed LLC header into a variable, for quick * testing. * Then check for a header that's neither a header for a SNAP @@ -207,6 +216,10 @@ atm_if_print(netdissect_options *ndo, * packets? If so, could it be changed to use a * new DLT_IEEE802_6 value if we added it? */ + if (caplen < 20 || length < 20) { + ND_PRINT((ndo, "%s", tstr)); + return (caplen); + } if (ndo->ndo_eflag) ND_PRINT((ndo, "%08x%08x %08x%08x ", EXTRACT_32BITS(p), Modified: user/dchagin/lemul/contrib/tcpdump/print-llc.c ============================================================================== --- user/dchagin/lemul/contrib/tcpdump/print-llc.c Sat Jan 31 16:39:26 2015 (r277983) +++ user/dchagin/lemul/contrib/tcpdump/print-llc.c Sat Jan 31 17:08:02 2015 (r277984) @@ -153,10 +153,10 @@ llc_print(netdissect_options *ndo, const *extracted_ethertype = 0; - if (caplen < 3) { + if (caplen < 3 || length < 3) { ND_PRINT((ndo, "[|llc]")); ND_DEFAULTPRINT((u_char *)p, caplen); - return(0); + return (1); } dsap_field = *p; @@ -179,10 +179,10 @@ llc_print(netdissect_options *ndo, const * The control field in I and S frames is * 2 bytes... */ - if (caplen < 4) { + if (caplen < 4 || length < 4) { ND_PRINT((ndo, "[|llc]")); ND_DEFAULTPRINT((u_char *)p, caplen); - return(0); + return (1); } /* @@ -242,6 +242,11 @@ llc_print(netdissect_options *ndo, const if (ssap == LLCSAP_IP && dsap == LLCSAP_IP && control == LLC_UI) { + if (caplen < 4 || length < 4) { + ND_PRINT((ndo, "[|llc]")); + ND_DEFAULTPRINT((u_char *)p, caplen); + return (1); + } ip_print(ndo, p+4, length-4); return (1); } @@ -370,6 +375,8 @@ snap_print(netdissect_options *ndo, cons register int ret; ND_TCHECK2(*p, 5); + if (caplen < 5 || length < 5) + goto trunc; orgcode = EXTRACT_24BITS(p); et = EXTRACT_16BITS(p + 3); Modified: user/dchagin/lemul/include/semaphore.h ============================================================================== --- user/dchagin/lemul/include/semaphore.h Sat Jan 31 16:39:26 2015 (r277983) +++ user/dchagin/lemul/include/semaphore.h Sat Jan 31 17:08:02 2015 (r277984) @@ -36,6 +36,8 @@ #include #include +#include + struct _sem { __uint32_t _magic; struct _usem2 _kern; Modified: user/dchagin/lemul/sys/arm/allwinner/a10_gpio.c ============================================================================== --- user/dchagin/lemul/sys/arm/allwinner/a10_gpio.c Sat Jan 31 16:39:26 2015 (r277983) +++ user/dchagin/lemul/sys/arm/allwinner/a10_gpio.c Sat Jan 31 17:08:02 2015 (r277984) @@ -427,7 +427,7 @@ a10_gpio_attach(device_t dev) RF_ACTIVE); if (!sc->sc_mem_res) { device_printf(dev, "cannot allocate memory window\n"); - return (ENXIO); + goto fail; } sc->sc_bst = rman_get_bustag(sc->sc_mem_res); @@ -437,9 +437,8 @@ a10_gpio_attach(device_t dev) sc->sc_irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid, RF_ACTIVE); if (!sc->sc_irq_res) { - bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->sc_mem_res); device_printf(dev, "cannot allocate interrupt\n"); - return (ENXIO); + goto fail; } /* Find our node. */ @@ -472,6 +471,8 @@ fail: bus_release_resource(dev, SYS_RES_IRQ, 0, sc->sc_irq_res); if (sc->sc_mem_res) bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->sc_mem_res); + mtx_destroy(&sc->sc_mtx); + return (ENXIO); } Modified: user/dchagin/lemul/sys/arm/altera/socfpga/socfpga_gpio.c ============================================================================== --- user/dchagin/lemul/sys/arm/altera/socfpga/socfpga_gpio.c Sat Jan 31 16:39:26 2015 (r277983) +++ user/dchagin/lemul/sys/arm/altera/socfpga/socfpga_gpio.c Sat Jan 31 17:08:02 2015 (r277984) @@ -163,6 +163,7 @@ socfpga_gpio_attach(device_t dev) if (bus_alloc_resources(dev, socfpga_gpio_spec, sc->res)) { device_printf(dev, "could not allocate resources\n"); + mtx_destroy(&sc->sc_mtx); return (ENXIO); } Modified: user/dchagin/lemul/sys/arm/freescale/imx/imx_gpio.c ============================================================================== --- user/dchagin/lemul/sys/arm/freescale/imx/imx_gpio.c Sat Jan 31 16:39:26 2015 (r277983) +++ user/dchagin/lemul/sys/arm/freescale/imx/imx_gpio.c Sat Jan 31 17:08:02 2015 (r277984) @@ -389,6 +389,8 @@ imx51_gpio_attach(device_t dev) if (bus_alloc_resources(dev, imx_gpio_spec, sc->sc_res)) { device_printf(dev, "could not allocate resources\n"); + bus_release_resources(dev, imx_gpio_spec, sc->sc_res); + mtx_destroy(&sc->sc_mtx); return (ENXIO); } @@ -411,6 +413,7 @@ imx51_gpio_attach(device_t dev) imx51_gpio_intr, NULL, sc, &sc->gpio_ih[irq]))) { device_printf(dev, "WARNING: unable to register interrupt handler\n"); + imx51_gpio_detach(dev); return (ENXIO); } } @@ -434,6 +437,7 @@ imx51_gpio_attach(device_t dev) static int imx51_gpio_detach(device_t dev) { + int irq; struct imx51_gpio_softc *sc; sc = device_get_softc(dev); @@ -441,13 +445,12 @@ imx51_gpio_detach(device_t dev) KASSERT(mtx_initialized(&sc->sc_mtx), ("gpio mutex not initialized")); bus_generic_detach(dev); - - if (sc->sc_res[3]) - bus_release_resources(dev, imx_gpio0irq_spec, &sc->sc_res[3]); - - if (sc->sc_res[0]) - bus_release_resources(dev, imx_gpio_spec, sc->sc_res); - + for (irq = 1; irq <= sc->sc_l_irq; irq ++) { + if (sc->gpio_ih[irq]) + bus_teardown_intr(dev, sc->sc_res[irq], sc->gpio_ih[irq]); + } + bus_release_resources(dev, imx_gpio0irq_spec, &sc->sc_res[3]); + bus_release_resources(dev, imx_gpio_spec, sc->sc_res); mtx_destroy(&sc->sc_mtx); return(0); Modified: user/dchagin/lemul/sys/arm/freescale/vybrid/vf_gpio.c ============================================================================== --- user/dchagin/lemul/sys/arm/freescale/vybrid/vf_gpio.c Sat Jan 31 16:39:26 2015 (r277983) +++ user/dchagin/lemul/sys/arm/freescale/vybrid/vf_gpio.c Sat Jan 31 17:08:02 2015 (r277984) @@ -125,6 +125,7 @@ vf_gpio_attach(device_t dev) if (bus_alloc_resources(dev, vf_gpio_spec, sc->res)) { device_printf(dev, "could not allocate resources\n"); + mtx_destroy(&sc->sc_mtx); return (ENXIO); } Modified: user/dchagin/lemul/sys/arm/rockchip/rk30xx_gpio.c ============================================================================== --- user/dchagin/lemul/sys/arm/rockchip/rk30xx_gpio.c Sat Jan 31 16:39:26 2015 (r277983) +++ user/dchagin/lemul/sys/arm/rockchip/rk30xx_gpio.c Sat Jan 31 17:08:02 2015 (r277984) @@ -399,13 +399,14 @@ rk30_gpio_attach(device_t dev) if (rk30_gpio_sc) return (ENXIO); sc->sc_dev = dev; + mtx_init(&sc->sc_mtx, "rk30 gpio", "gpio", MTX_DEF); rid = 0; sc->sc_mem_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, RF_ACTIVE); if (!sc->sc_mem_res) { device_printf(dev, "cannot allocate memory window\n"); - return (ENXIO); + goto fail; } sc->sc_bst = rman_get_bustag(sc->sc_mem_res); sc->sc_bsh = rman_get_bushandle(sc->sc_mem_res); @@ -421,17 +422,15 @@ rk30_gpio_attach(device_t dev) if (sc->sc_bank == -1) { device_printf(dev, "unsupported device unit (only GPIO0..3 are supported)\n"); - bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->sc_mem_res); - return (ENXIO); + goto fail; } rid = 0; sc->sc_irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid, RF_ACTIVE); if (!sc->sc_irq_res) { - bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->sc_mem_res); device_printf(dev, "cannot allocate interrupt\n"); - return (ENXIO); + goto fail; } /* Find our node. */ @@ -441,8 +440,6 @@ rk30_gpio_attach(device_t dev) /* Node is not a GPIO controller. */ goto fail; - mtx_init(&sc->sc_mtx, "rk30 gpio", "gpio", MTX_DEF); - /* Initialize the software controlled pins. */ for (i = 0; i < RK30_GPIO_PINS; i++) { snprintf(sc->sc_gpio_pins[i].gp_name, GPIOMAXNAME, @@ -467,6 +464,8 @@ fail: bus_release_resource(dev, SYS_RES_IRQ, 0, sc->sc_irq_res); if (sc->sc_mem_res) bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->sc_mem_res); + mtx_destroy(&sc->sc_mtx); + return (ENXIO); } Modified: user/dchagin/lemul/sys/arm/samsung/exynos/exynos5_pad.c ============================================================================== --- user/dchagin/lemul/sys/arm/samsung/exynos/exynos5_pad.c Sat Jan 31 16:39:26 2015 (r277983) +++ user/dchagin/lemul/sys/arm/samsung/exynos/exynos5_pad.c Sat Jan 31 17:08:02 2015 (r277984) @@ -509,12 +509,12 @@ pad_attach(device_t dev) sc->nports = 5; break; default: - return (-1); + goto fail; }; if (bus_alloc_resources(dev, sc->pad_spec, sc->res)) { device_printf(dev, "could not allocate resources\n"); - return (ENXIO); + goto fail; } /* Memory interface */ @@ -534,9 +534,9 @@ pad_attach(device_t dev) NULL, sc, &sc->gpio_ih[i]))) { device_printf(dev, "ERROR: Unable to register interrupt handler\n"); - return (ENXIO); + goto fail; } - }; + } for (i = 0; i < sc->gpio_npins; i++) { sc->gpio_pins[i].gp_pin = i; @@ -563,6 +563,17 @@ pad_attach(device_t dev) device_add_child(dev, "gpiobus", -1); return (bus_generic_attach(dev)); + +fail: + for (i = 0; i < sc->nports; i++) { + if (sc->gpio_ih[i]) + bus_teardown_intr(dev, sc->res[sc->nports + i], + sc->gpio_ih[i]); + } + bus_release_resources(dev, sc->pad_spec, sc->res); + mtx_destroy(&sc->sc_mtx); + + return (ENXIO); } static int Modified: user/dchagin/lemul/sys/arm/ti/ti_gpio.c ============================================================================== --- user/dchagin/lemul/sys/arm/ti/ti_gpio.c Sat Jan 31 16:39:26 2015 (r277983) +++ user/dchagin/lemul/sys/arm/ti/ti_gpio.c Sat Jan 31 17:08:02 2015 (r277984) @@ -113,6 +113,7 @@ __FBSDID("$FreeBSD$"); #define TI_GPIO_MASK(p) (1U << ((p) % PINS_PER_BANK)) static struct ti_gpio_softc *ti_gpio_sc = NULL; +static int ti_gpio_detach(device_t); static u_int ti_max_gpio_banks(void) @@ -763,21 +764,21 @@ ti_gpio_attach(device_t dev) */ if (bus_alloc_resources(dev, ti_gpio_mem_spec, sc->sc_mem_res) != 0) { device_printf(dev, "Error: could not allocate mem resources\n"); + ti_gpio_detach(dev); return (ENXIO); } /* Request the IRQ resources */ if (bus_alloc_resources(dev, ti_gpio_irq_spec, sc->sc_irq_res) != 0) { - bus_release_resources(dev, ti_gpio_mem_spec, sc->sc_mem_res); device_printf(dev, "Error: could not allocate irq resources\n"); + ti_gpio_detach(dev); return (ENXIO); } /* Setup the IRQ resources */ if (ti_gpio_attach_intr(dev) != 0) { - ti_gpio_detach_intr(dev); - bus_release_resources(dev, ti_gpio_irq_spec, sc->sc_irq_res); - bus_release_resources(dev, ti_gpio_mem_spec, sc->sc_mem_res); + device_printf(dev, "Error: could not setup irq handlers\n"); + ti_gpio_detach(dev); return (ENXIO); } @@ -809,11 +810,7 @@ ti_gpio_attach(device_t dev) /* Initialize the GPIO module. */ err = ti_gpio_bank_init(dev, i); if (err != 0) { - ti_gpio_detach_intr(dev); - bus_release_resources(dev, ti_gpio_irq_spec, - sc->sc_irq_res); - bus_release_resources(dev, ti_gpio_mem_spec, - sc->sc_mem_res); + ti_gpio_detach(dev); return (err); } } @@ -852,18 +849,17 @@ ti_gpio_detach(device_t dev) if (sc->sc_mem_res[i] != NULL) ti_gpio_intr_clr(sc, i, 0xffffffff); } - bus_generic_detach(dev); - - free(sc->sc_events, M_DEVBUF); - free(sc->sc_irq_polarity, M_DEVBUF); - free(sc->sc_irq_trigger, M_DEVBUF); - + if (sc->sc_events) + free(sc->sc_events, M_DEVBUF); + if (sc->sc_irq_polarity) + free(sc->sc_irq_polarity, M_DEVBUF); + if (sc->sc_irq_trigger) + free(sc->sc_irq_trigger, M_DEVBUF); /* Release the memory and IRQ resources. */ ti_gpio_detach_intr(dev); bus_release_resources(dev, ti_gpio_irq_spec, sc->sc_irq_res); bus_release_resources(dev, ti_gpio_mem_spec, sc->sc_mem_res); - TI_GPIO_LOCK_DESTROY(sc); return (0); Modified: user/dchagin/lemul/sys/conf/files ============================================================================== --- user/dchagin/lemul/sys/conf/files Sat Jan 31 16:39:26 2015 (r277983) +++ user/dchagin/lemul/sys/conf/files Sat Jan 31 17:08:02 2015 (r277984) @@ -1520,6 +1520,7 @@ ipw_monitor.fw optional ipwmonitorfw | no-obj no-implicit-rule \ clean "ipw_monitor.fw" dev/iscsi/icl.c optional iscsi | ctl +dev/iscsi/icl_conn_if.m optional iscsi | ctl dev/iscsi/icl_proxy.c optional iscsi | ctl dev/iscsi/icl_soft.c optional iscsi | ctl dev/iscsi/iscsi.c optional iscsi scbus Modified: user/dchagin/lemul/sys/dev/gpio/gpio_if.m ============================================================================== --- user/dchagin/lemul/sys/dev/gpio/gpio_if.m Sat Jan 31 16:39:26 2015 (r277983) +++ user/dchagin/lemul/sys/dev/gpio/gpio_if.m Sat Jan 31 17:08:02 2015 (r277984) @@ -32,6 +32,13 @@ INTERFACE gpio; CODE { + static device_t + gpio_default_get_bus(void) + { + + return (NULL); + } + static int gpio_default_map_gpios(device_t bus, phandle_t dev, phandle_t gparent, int gcells, pcell_t *gpios, uint32_t *pin, @@ -56,6 +63,13 @@ HEADER { }; # +# Return the gpiobus device reference +# +METHOD device_t get_bus { + device_t dev; +} DEFAULT gpio_default_get_bus; + +# # Get maximum pin number # METHOD int pin_max { Modified: user/dchagin/lemul/sys/dev/iscsi/icl_soft.c ============================================================================== --- user/dchagin/lemul/sys/dev/iscsi/icl_soft.c Sat Jan 31 16:39:26 2015 (r277983) +++ user/dchagin/lemul/sys/dev/iscsi/icl_soft.c Sat Jan 31 17:08:02 2015 (r277984) @@ -1534,4 +1534,4 @@ moduledata_t icl_soft_data = { DECLARE_MODULE(icl_soft, icl_soft_data, SI_SUB_DRIVERS, SI_ORDER_MIDDLE); MODULE_DEPEND(icl_soft, icl, 1, 1, 1); -MODULE_VERSION(icl, 1); +MODULE_VERSION(icl_soft, 1); Modified: user/dchagin/lemul/sys/dev/iscsi/icl_wrappers.h ============================================================================== --- user/dchagin/lemul/sys/dev/iscsi/icl_wrappers.h Sat Jan 31 16:39:26 2015 (r277983) +++ user/dchagin/lemul/sys/dev/iscsi/icl_wrappers.h Sat Jan 31 17:08:02 2015 (r277984) @@ -38,7 +38,6 @@ #define ICL_WRAPPERS_H #include -#include #include #include Modified: user/dchagin/lemul/sys/dev/usb/input/uhid.c ============================================================================== --- user/dchagin/lemul/sys/dev/usb/input/uhid.c Sat Jan 31 16:39:26 2015 (r277983) +++ user/dchagin/lemul/sys/dev/usb/input/uhid.c Sat Jan 31 17:08:02 2015 (r277984) @@ -734,7 +734,7 @@ uhid_attach(device_t dev) if (uaa->info.idProduct == USB_PRODUCT_WACOM_GRAPHIRE) { sc->sc_repdesc_size = sizeof(uhid_graphire_report_descr); - sc->sc_repdesc_ptr = (void *)&uhid_graphire_report_descr; + sc->sc_repdesc_ptr = __DECONST(void *, &uhid_graphire_report_descr); sc->sc_flags |= UHID_FLAG_STATIC_DESC; } else if (uaa->info.idProduct == USB_PRODUCT_WACOM_GRAPHIRE3_4X5) { @@ -755,7 +755,7 @@ uhid_attach(device_t dev) usbd_errstr(error)); } sc->sc_repdesc_size = sizeof(uhid_graphire3_4x5_report_descr); - sc->sc_repdesc_ptr = (void *)&uhid_graphire3_4x5_report_descr; + sc->sc_repdesc_ptr = __DECONST(void *, &uhid_graphire3_4x5_report_descr); sc->sc_flags |= UHID_FLAG_STATIC_DESC; } } else if ((uaa->info.bInterfaceClass == UICLASS_VENDOR) && @@ -775,7 +775,7 @@ uhid_attach(device_t dev) } /* the Xbox 360 gamepad has no report descriptor */ sc->sc_repdesc_size = sizeof(uhid_xb360gp_report_descr); - sc->sc_repdesc_ptr = (void *)&uhid_xb360gp_report_descr; + sc->sc_repdesc_ptr = __DECONST(void *, &uhid_xb360gp_report_descr); sc->sc_flags |= UHID_FLAG_STATIC_DESC; } if (sc->sc_repdesc_ptr == NULL) { Modified: user/dchagin/lemul/sys/fs/tmpfs/tmpfs_subr.c ============================================================================== --- user/dchagin/lemul/sys/fs/tmpfs/tmpfs_subr.c Sat Jan 31 16:39:26 2015 (r277983) +++ user/dchagin/lemul/sys/fs/tmpfs/tmpfs_subr.c Sat Jan 31 17:08:02 2015 (r277984) @@ -1434,7 +1434,8 @@ tmpfs_check_mtime(struct vnode *vp) if ((obj->flags & OBJ_TMPFS_DIRTY) != 0) { obj->flags &= ~OBJ_TMPFS_DIRTY; node = VP_TO_TMPFS_NODE(vp); - node->tn_status |= TMPFS_NODE_MODIFIED; + node->tn_status |= TMPFS_NODE_MODIFIED | + TMPFS_NODE_CHANGED; } VM_OBJECT_WUNLOCK(obj); } Modified: user/dchagin/lemul/sys/fs/tmpfs/tmpfs_vnops.c ============================================================================== --- user/dchagin/lemul/sys/fs/tmpfs/tmpfs_vnops.c Sat Jan 31 16:39:26 2015 (r277983) +++ user/dchagin/lemul/sys/fs/tmpfs/tmpfs_vnops.c Sat Jan 31 17:08:02 2015 (r277984) @@ -453,7 +453,6 @@ tmpfs_write(struct vop_write_args *v) struct tmpfs_node *node; off_t oldsize; int error, ioflag; - boolean_t extended; vp = v->a_vp; uio = v->a_uio; @@ -473,8 +472,7 @@ tmpfs_write(struct vop_write_args *v) return (EFBIG); if (vn_rlimit_fsize(vp, uio, uio->uio_td)) return (EFBIG); - extended = uio->uio_offset + uio->uio_resid > node->tn_size; - if (extended) { + if (uio->uio_offset + uio->uio_resid > node->tn_size) { error = tmpfs_reg_resize(vp, uio->uio_offset + uio->uio_resid, FALSE); if (error != 0) @@ -483,7 +481,7 @@ tmpfs_write(struct vop_write_args *v) error = uiomove_object(node->tn_reg.tn_aobj, node->tn_size, uio); node->tn_status |= TMPFS_NODE_ACCESSED | TMPFS_NODE_MODIFIED | - (extended ? TMPFS_NODE_CHANGED : 0); + TMPFS_NODE_CHANGED; if (node->tn_mode & (S_ISUID | S_ISGID)) { if (priv_check_cred(v->a_cred, PRIV_VFS_RETAINSUGID, 0)) node->tn_mode &= ~(S_ISUID | S_ISGID); Modified: user/dchagin/lemul/sys/kern/kern_umtx.c ============================================================================== --- user/dchagin/lemul/sys/kern/kern_umtx.c Sat Jan 31 16:39:26 2015 (r277983) +++ user/dchagin/lemul/sys/kern/kern_umtx.c Sat Jan 31 17:08:02 2015 (r277984) @@ -1302,6 +1302,47 @@ umtx_pi_adjust_thread(struct umtx_pi *pi return (1); } +static struct umtx_pi * +umtx_pi_next(struct umtx_pi *pi) +{ + struct umtx_q *uq_owner; + + if (pi->pi_owner == NULL) + return (NULL); + uq_owner = pi->pi_owner->td_umtxq; + if (uq_owner == NULL) + return (NULL); + return (uq_owner->uq_pi_blocked); +} + +/* + * Floyd's Cycle-Finding Algorithm. + */ +static bool +umtx_pi_check_loop(struct umtx_pi *pi) +{ + struct umtx_pi *pi1; /* fast iterator */ + + mtx_assert(&umtx_lock, MA_OWNED); + if (pi == NULL) + return (false); + pi1 = pi; + for (;;) { + pi = umtx_pi_next(pi); + if (pi == NULL) + break; + pi1 = umtx_pi_next(pi1); + if (pi1 == NULL) + break; + pi1 = umtx_pi_next(pi1); + if (pi1 == NULL) + break; + if (pi == pi1) + return (true); + } + return (false); +} + /* * Propagate priority when a thread is blocked on POSIX * PI mutex. @@ -1319,6 +1360,8 @@ umtx_propagate_priority(struct thread *t pi = uq->uq_pi_blocked; if (pi == NULL) return; + if (umtx_pi_check_loop(pi)) + return; for (;;) { td = pi->pi_owner; @@ -1362,6 +1405,8 @@ umtx_repropagate_priority(struct umtx_pi mtx_assert(&umtx_lock, MA_OWNED); + if (umtx_pi_check_loop(pi)) + return; while (pi != NULL && pi->pi_owner != NULL) { pri = PRI_MAX; uq_owner = pi->pi_owner->td_umtxq; @@ -1694,6 +1739,11 @@ do_lock_pi(struct thread *td, struct umu continue; } + if ((owner & ~UMUTEX_CONTESTED) == id) { + error = EDEADLK; + break; + } + if (try != 0) { error = EBUSY; break; Modified: user/dchagin/lemul/sys/mips/atheros/ar71xx_gpio.c ============================================================================== --- user/dchagin/lemul/sys/mips/atheros/ar71xx_gpio.c Sat Jan 31 16:39:26 2015 (r277983) +++ user/dchagin/lemul/sys/mips/atheros/ar71xx_gpio.c Sat Jan 31 17:08:02 2015 (r277984) @@ -341,7 +341,6 @@ static int ar71xx_gpio_attach(device_t dev) { struct ar71xx_gpio_softc *sc = device_get_softc(dev); - int error = 0; int i, j, maxpin; int mask, pinon; uint32_t oe; @@ -358,14 +357,14 @@ ar71xx_gpio_attach(device_t dev) if (sc->gpio_mem_res == NULL) { device_printf(dev, "couldn't map memory\n"); - error = ENXIO; ar71xx_gpio_detach(dev); - return(error); + return (ENXIO); } if ((sc->gpio_irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &sc->gpio_irq_rid, RF_SHAREABLE | RF_ACTIVE)) == NULL) { device_printf(dev, "unable to allocate IRQ resource\n"); + ar71xx_gpio_detach(dev); return (ENXIO); } @@ -373,6 +372,7 @@ ar71xx_gpio_attach(device_t dev) ar71xx_gpio_filter, ar71xx_gpio_intr, sc, &sc->gpio_ih))) { device_printf(dev, "WARNING: unable to register interrupt handler\n"); + ar71xx_gpio_detach(dev); return (ENXIO); } @@ -447,12 +447,16 @@ ar71xx_gpio_detach(device_t dev) KASSERT(mtx_initialized(&sc->gpio_mtx), ("gpio mutex not initialized")); bus_generic_detach(dev); - + if (sc->gpio_ih) + bus_teardown_intr(dev, sc->gpio_irq_res, sc->gpio_ih); + if (sc->gpio_irq_res) + bus_release_resource(dev, SYS_RES_IRQ, sc->gpio_irq_rid, + sc->gpio_irq_res); if (sc->gpio_mem_res) bus_release_resource(dev, SYS_RES_MEMORY, sc->gpio_mem_rid, sc->gpio_mem_res); - - free(sc->gpio_pins, M_DEVBUF); + if (sc->gpio_pins) + free(sc->gpio_pins, M_DEVBUF); mtx_destroy(&sc->gpio_mtx); return(0); Modified: user/dchagin/lemul/sys/mips/atheros/ar71xx_gpiovar.h ============================================================================== --- user/dchagin/lemul/sys/mips/atheros/ar71xx_gpiovar.h Sat Jan 31 16:39:26 2015 (r277983) +++ user/dchagin/lemul/sys/mips/atheros/ar71xx_gpiovar.h Sat Jan 31 17:08:02 2015 (r277984) @@ -57,12 +57,12 @@ struct ar71xx_gpio_softc { device_t dev; - struct mtx gpio_mtx; - struct resource *gpio_mem_res; - int gpio_mem_rid; - struct resource *gpio_irq_res; - int gpio_irq_rid; - void *gpio_ih; + struct mtx gpio_mtx; + struct resource *gpio_mem_res; + int gpio_mem_rid; + struct resource *gpio_irq_res; + int gpio_irq_rid; + void *gpio_ih; int gpio_npins; struct gpio_pin *gpio_pins; }; Modified: user/dchagin/lemul/sys/mips/cavium/octeon_gpio.c ============================================================================== --- user/dchagin/lemul/sys/mips/cavium/octeon_gpio.c Sat Jan 31 16:39:26 2015 (r277983) +++ user/dchagin/lemul/sys/mips/cavium/octeon_gpio.c Sat Jan 31 17:08:02 2015 (r277984) @@ -383,6 +383,7 @@ octeon_gpio_attach(device_t dev) OCTEON_IRQ_GPIO0 + i, OCTEON_IRQ_GPIO0 + i, 1, RF_SHAREABLE | RF_ACTIVE)) == NULL) { device_printf(dev, "unable to allocate IRQ resource\n"); + octeon_gpio_detach(dev); return (ENXIO); } @@ -392,6 +393,7 @@ octeon_gpio_attach(device_t dev) &(sc->gpio_intr_cookies[i]), &sc->gpio_ih[i]))) { device_printf(dev, "WARNING: unable to register interrupt handler\n"); + octeon_gpio_detach(dev); return (ENXIO); } } @@ -448,11 +450,14 @@ octeon_gpio_detach(device_t dev) KASSERT(mtx_initialized(&sc->gpio_mtx), ("gpio mutex not initialized")); for ( i = 0; i < OCTEON_GPIO_IRQS; i++) { - bus_release_resource(dev, SYS_RES_IRQ, - sc->gpio_irq_rid[i], sc->gpio_irq_res[i]); + if (sc->gpio_ih[i]) + bus_teardown_intr(dev, sc->gpio_irq_res[i], + sc->gpio_ih[i]); + if (sc->gpio_irq_res[i]) + bus_release_resource(dev, SYS_RES_IRQ, + sc->gpio_irq_rid[i], sc->gpio_irq_res[i]); } bus_generic_detach(dev); - mtx_destroy(&sc->gpio_mtx); return(0); Modified: user/dchagin/lemul/sys/mips/cavium/octeon_gpiovar.h ============================================================================== --- user/dchagin/lemul/sys/mips/cavium/octeon_gpiovar.h Sat Jan 31 16:39:26 2015 (r277983) +++ user/dchagin/lemul/sys/mips/cavium/octeon_gpiovar.h Sat Jan 31 17:08:02 2015 (r277984) @@ -43,11 +43,11 @@ struct octeon_gpio_softc { device_t dev; - struct mtx gpio_mtx; - struct resource *gpio_irq_res[OCTEON_GPIO_IRQS]; - int gpio_irq_rid[OCTEON_GPIO_IRQS]; - void *gpio_ih[OCTEON_GPIO_IRQS]; - void *gpio_intr_cookies[OCTEON_GPIO_IRQS]; + struct mtx gpio_mtx; + struct resource *gpio_irq_res[OCTEON_GPIO_IRQS]; + int gpio_irq_rid[OCTEON_GPIO_IRQS]; + void *gpio_ih[OCTEON_GPIO_IRQS]; + void *gpio_intr_cookies[OCTEON_GPIO_IRQS]; int gpio_npins; struct gpio_pin gpio_pins[OCTEON_GPIO_PINS]; }; Modified: user/dchagin/lemul/sys/mips/rt305x/rt305x_gpio.c ============================================================================== --- user/dchagin/lemul/sys/mips/rt305x/rt305x_gpio.c Sat Jan 31 16:39:26 2015 (r277983) +++ user/dchagin/lemul/sys/mips/rt305x/rt305x_gpio.c Sat Jan 31 17:08:02 2015 (r277984) @@ -430,7 +430,7 @@ static int rt305x_gpio_attach(device_t dev) { struct rt305x_gpio_softc *sc = device_get_softc(dev); - int error = 0, i; + int i; uint64_t avlpins = 0; sc->reset_gpio = DAP1350_RESET_GPIO; @@ -446,14 +446,14 @@ rt305x_gpio_attach(device_t dev) if (sc->gpio_mem_res == NULL) { device_printf(dev, "couldn't map memory\n"); - error = ENXIO; rt305x_gpio_detach(dev); - return(error); + return (ENXIO); } if ((sc->gpio_irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &sc->gpio_irq_rid, RF_SHAREABLE | RF_ACTIVE)) == NULL) { device_printf(dev, "unable to allocate IRQ resource\n"); + rt305x_gpio_detach(dev); return (ENXIO); } @@ -462,6 +462,7 @@ rt305x_gpio_attach(device_t dev) rt305x_gpio_intr, NULL, sc, &sc->gpio_ih))) { device_printf(dev, "WARNING: unable to register interrupt handler\n"); + rt305x_gpio_detach(dev); return (ENXIO); } @@ -515,11 +516,14 @@ rt305x_gpio_detach(device_t dev) KASSERT(mtx_initialized(&sc->gpio_mtx), ("gpio mutex not initialized")); bus_generic_detach(dev); - + if (sc->gpio_ih) + bus_teardown_intr(dev, sc->gpio_irq_res, sc->gpio_ih); + if (sc->gpio_irq_res) + bus_release_resource(dev, SYS_RES_IRQ, sc->gpio_irq_rid, + sc->gpio_irq_res); if (sc->gpio_mem_res) bus_release_resource(dev, SYS_RES_MEMORY, sc->gpio_mem_rid, sc->gpio_mem_res); - mtx_destroy(&sc->gpio_mtx); return(0); Modified: user/dchagin/lemul/sys/mips/rt305x/rt305x_gpiovar.h ============================================================================== --- user/dchagin/lemul/sys/mips/rt305x/rt305x_gpiovar.h Sat Jan 31 16:39:26 2015 (r277983) +++ user/dchagin/lemul/sys/mips/rt305x/rt305x_gpiovar.h Sat Jan 31 17:08:02 2015 (r277984) @@ -30,12 +30,12 @@ struct rt305x_gpio_softc { device_t dev; - struct mtx gpio_mtx; - struct resource *gpio_mem_res; - int gpio_mem_rid; - struct resource *gpio_irq_res; - int gpio_irq_rid; - void *gpio_ih; + struct mtx gpio_mtx; + struct resource *gpio_mem_res; + int gpio_mem_rid; + struct resource *gpio_irq_res; + int gpio_irq_rid; + void *gpio_ih; int gpio_npins; struct gpio_pin gpio_pins[NGPIO]; int reset_gpio; From owner-svn-src-user@FreeBSD.ORG Sat Jan 31 17:45:49 2015 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4C751966; Sat, 31 Jan 2015 17:45:49 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 38D5C841; Sat, 31 Jan 2015 17:45:49 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t0VHjnbv000998; Sat, 31 Jan 2015 17:45:49 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0VHjnEd000995; Sat, 31 Jan 2015 17:45:49 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201501311745.t0VHjnEd000995@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sat, 31 Jan 2015 17:45:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r277986 - user/dchagin/lemul/sys/compat/linux X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 31 Jan 2015 17:45:49 -0000 Author: dchagin Date: Sat Jan 31 17:45:48 2015 New Revision: 277986 URL: https://svnweb.freebsd.org/changeset/base/277986 Log: Clean a style(9) bug. Use process sysentvec to detect the linux ABI. Modified: user/dchagin/lemul/sys/compat/linux/linux_misc.c Modified: user/dchagin/lemul/sys/compat/linux/linux_misc.c ============================================================================== --- user/dchagin/lemul/sys/compat/linux/linux_misc.c Sat Jan 31 17:35:53 2015 (r277985) +++ user/dchagin/lemul/sys/compat/linux/linux_misc.c Sat Jan 31 17:45:48 2015 (r277986) @@ -2004,7 +2004,6 @@ linux_sched_rr_get_interval(struct threa struct thread * linux_tdfind(struct thread *td, lwpid_t tid, pid_t pid) { - struct linux_pemuldata *pem; struct linux_emuldata *em; struct thread *tdt; struct proc *p; @@ -2020,9 +2019,8 @@ linux_tdfind(struct thread *td, lwpid_t * Initial thread where the tid equal to the pid. */ p = pfind(tid); - if (p) { - pem = pem_find(p); - if (pem == NULL) { + if (p != NULL) { + if (SV_PROC_ABI(p) != SV_ABI_LINUX) { /* * p is not a Linuxulator process. */