Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-6]: src/sys/compat Pull up following revision(s) (requested by mr...



details:   https://anonhg.NetBSD.org/src/rev/b2e2c09b95a5
branches:  netbsd-6
changeset: 777223:b2e2c09b95a5
user:      snj <snj%NetBSD.org@localhost>
date:      Sat Aug 19 04:20:01 2017 +0000

description:
Pull up following revision(s) (requested by mrg in ticket #1483):
        sys/compat/common/vfs_syscalls_12.c: revision 1.34
        sys/compat/svr4_32/svr4_32_misc.c: revision 1.78
        sys/compat/sunos32/sunos32_misc.c: revision 1.78
        sys/compat/linux/common/linux_misc.c: revision 1.239
        sys/compat/osf1/osf1_file.c: revision 1.44
        sys/compat/common/vfs_syscalls_43.c: revision 1.60
        sys/compat/svr4/svr4_misc.c: revision 1.158
        sys/compat/ibcs2/ibcs2_misc.c: revision 1.114
        sys/compat/linux/common/linux_file64.c: revision 1.59
        sys/compat/linux32/common/linux32_dirent.c: revision 1.18
        sys/compat/sunos/sunos_misc.c: revision 1.171
Fail, don't panic, on bad dirents from file system.
Controllable via puffs from userland.
>From Ilja Van Sprundel.

diffstat:

 sys/compat/common/vfs_syscalls_12.c        |  10 ++++++----
 sys/compat/common/vfs_syscalls_43.c        |  10 ++++++----
 sys/compat/ibcs2/ibcs2_misc.c              |  10 ++++++----
 sys/compat/linux/common/linux_file64.c     |  10 ++++++----
 sys/compat/linux/common/linux_misc.c       |  10 ++++++----
 sys/compat/linux32/common/linux32_dirent.c |  10 ++++++----
 sys/compat/osf1/osf1_file.c                |  10 ++++++----
 sys/compat/sunos/sunos_misc.c              |  10 ++++++----
 sys/compat/sunos32/sunos32_misc.c          |  10 ++++++----
 sys/compat/svr4/svr4_misc.c                |  16 ++++++++++------
 sys/compat/svr4_32/svr4_32_misc.c          |  10 ++++++----
 11 files changed, 70 insertions(+), 46 deletions(-)

diffs (truncated from 354 to 300 lines):

diff -r 7a167fc1b383 -r b2e2c09b95a5 sys/compat/common/vfs_syscalls_12.c
--- a/sys/compat/common/vfs_syscalls_12.c       Sat Aug 19 04:17:11 2017 +0000
+++ b/sys/compat/common/vfs_syscalls_12.c       Sat Aug 19 04:20:01 2017 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: vfs_syscalls_12.c,v 1.29.12.1 2017/08/12 16:23:28 snj Exp $    */
+/*     $NetBSD: vfs_syscalls_12.c,v 1.29.12.2 2017/08/19 04:20:01 snj Exp $    */
 
 /*
  * Copyright (c) 1989, 1993
@@ -37,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_syscalls_12.c,v 1.29.12.1 2017/08/12 16:23:28 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_syscalls_12.c,v 1.29.12.2 2017/08/19 04:20:01 snj Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -171,8 +171,10 @@
        for (cookie = cookiebuf; len > 0; len -= reclen) {
                bdp = (struct dirent *)inp;
                reclen = bdp->d_reclen;
-               if (reclen & 3)
-                       panic(__func__);
+               if (reclen & 3) {
+                       error = EIO;
+                       goto out;
+               }
                if (bdp->d_fileno == 0) {
                        inp += reclen;  /* it is a hole; squish it out */
                        if (cookie)
diff -r 7a167fc1b383 -r b2e2c09b95a5 sys/compat/common/vfs_syscalls_43.c
--- a/sys/compat/common/vfs_syscalls_43.c       Sat Aug 19 04:17:11 2017 +0000
+++ b/sys/compat/common/vfs_syscalls_43.c       Sat Aug 19 04:20:01 2017 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: vfs_syscalls_43.c,v 1.54.14.3 2017/08/12 16:23:28 snj Exp $    */
+/*     $NetBSD: vfs_syscalls_43.c,v 1.54.14.4 2017/08/19 04:20:01 snj Exp $    */
 
 /*
  * Copyright (c) 1989, 1993
@@ -37,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_syscalls_43.c,v 1.54.14.3 2017/08/12 16:23:28 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_syscalls_43.c,v 1.54.14.4 2017/08/19 04:20:01 snj Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_netbsd.h"
@@ -450,8 +450,10 @@
        for (cookie = cookiebuf; len > 0; len -= reclen) {
                bdp = (struct dirent *)inp;
                reclen = bdp->d_reclen;
-               if (reclen & 3)
-                       panic(__func__);
+               if (reclen & 3) {
+                       error = EIO;
+                       goto out;
+               }
                if (bdp->d_fileno == 0) {
                        inp += reclen;  /* it is a hole; squish it out */
                        if (cookie)
diff -r 7a167fc1b383 -r b2e2c09b95a5 sys/compat/ibcs2/ibcs2_misc.c
--- a/sys/compat/ibcs2/ibcs2_misc.c     Sat Aug 19 04:17:11 2017 +0000
+++ b/sys/compat/ibcs2/ibcs2_misc.c     Sat Aug 19 04:20:01 2017 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: ibcs2_misc.c,v 1.111 2010/06/24 13:03:06 hannken Exp $ */
+/*     $NetBSD: ibcs2_misc.c,v 1.111.14.1 2017/08/19 04:20:01 snj Exp $        */
 
 /*
  * Copyright (c) 1992, 1993
@@ -95,7 +95,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ibcs2_misc.c,v 1.111 2010/06/24 13:03:06 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ibcs2_misc.c,v 1.111.14.1 2017/08/19 04:20:01 snj Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -427,8 +427,10 @@
        for (cookie = cookiebuf; len > 0; len -= reclen) {
                bdp = (struct dirent *)inp;
                reclen = bdp->d_reclen;
-               if (reclen & 3)
-                       panic("ibcs2_getdents: bad reclen");
+               if (reclen & 3) {
+                       error = EIO;
+                       goto out;
+               }
                if (cookie && (*cookie >> 32) != 0) {
                        compat_offseterr(vp, "ibcs2_getdents");
                        error = EINVAL;
diff -r 7a167fc1b383 -r b2e2c09b95a5 sys/compat/linux/common/linux_file64.c
--- a/sys/compat/linux/common/linux_file64.c    Sat Aug 19 04:17:11 2017 +0000
+++ b/sys/compat/linux/common/linux_file64.c    Sat Aug 19 04:20:01 2017 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: linux_file64.c,v 1.53 2011/10/14 09:23:28 hannken Exp $        */
+/*     $NetBSD: linux_file64.c,v 1.53.8.1 2017/08/19 04:20:01 snj Exp $        */
 
 /*-
  * Copyright (c) 1995, 1998, 2000, 2008 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: linux_file64.c,v 1.53 2011/10/14 09:23:28 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: linux_file64.c,v 1.53.8.1 2017/08/19 04:20:01 snj Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -299,8 +299,10 @@
        for (cookie = cookiebuf; len > 0; len -= reclen) {
                bdp = (struct dirent *)inp;
                reclen = bdp->d_reclen;
-               if (reclen & 3)
-                       panic("linux_readdir");
+               if (reclen & 3) {
+                       error = EIO;
+                       goto out;
+               }
                if (bdp->d_fileno == 0) {
                        inp += reclen;  /* it is a hole; squish it out */
                        if (cookie)
diff -r 7a167fc1b383 -r b2e2c09b95a5 sys/compat/linux/common/linux_misc.c
--- a/sys/compat/linux/common/linux_misc.c      Sat Aug 19 04:17:11 2017 +0000
+++ b/sys/compat/linux/common/linux_misc.c      Sat Aug 19 04:20:01 2017 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: linux_misc.c,v 1.219.8.1 2013/12/14 19:31:17 bouyer Exp $      */
+/*     $NetBSD: linux_misc.c,v 1.219.8.2 2017/08/19 04:20:01 snj Exp $ */
 
 /*-
  * Copyright (c) 1995, 1998, 1999, 2008 The NetBSD Foundation, Inc.
@@ -57,7 +57,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: linux_misc.c,v 1.219.8.1 2013/12/14 19:31:17 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: linux_misc.c,v 1.219.8.2 2017/08/19 04:20:01 snj Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -744,8 +744,10 @@
        for (cookie = cookiebuf; len > 0; len -= reclen) {
                bdp = (struct dirent *)inp;
                reclen = bdp->d_reclen;
-               if (reclen & 3)
-                       panic("linux_readdir");
+               if (reclen & 3) {
+                       error = EIO;
+                       goto out;
+               }
                if (bdp->d_fileno == 0) {
                        inp += reclen;  /* it is a hole; squish it out */
                        if (cookie)
diff -r 7a167fc1b383 -r b2e2c09b95a5 sys/compat/linux32/common/linux32_dirent.c
--- a/sys/compat/linux32/common/linux32_dirent.c        Sat Aug 19 04:17:11 2017 +0000
+++ b/sys/compat/linux32/common/linux32_dirent.c        Sat Aug 19 04:20:01 2017 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: linux32_dirent.c,v 1.13 2011/10/14 09:23:29 hannken Exp $ */
+/*     $NetBSD: linux32_dirent.c,v 1.13.8.1 2017/08/19 04:20:01 snj Exp $ */
 
 /*-
  * Copyright (c) 2006 Emmanuel Dreyfus, all rights reserved.
@@ -33,7 +33,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(0, "$NetBSD: linux32_dirent.c,v 1.13 2011/10/14 09:23:29 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: linux32_dirent.c,v 1.13.8.1 2017/08/19 04:20:01 snj Exp $");
 
 #include <sys/types.h>
 #include <sys/param.h>
@@ -178,8 +178,10 @@
        for (cookie = cookiebuf; len > 0; len -= reclen) {
                bdp = (struct dirent *)inp;
                reclen = bdp->d_reclen;
-               if (reclen & 3)
-                       panic("linux32_readdir");
+               if (reclen & 3) {
+                       error = EIO;
+                       goto out;
+               }
                if (bdp->d_fileno == 0) {
                        inp += reclen;  /* it is a hole; squish it out */
                        if (cookie)
diff -r 7a167fc1b383 -r b2e2c09b95a5 sys/compat/osf1/osf1_file.c
--- a/sys/compat/osf1/osf1_file.c       Sat Aug 19 04:17:11 2017 +0000
+++ b/sys/compat/osf1/osf1_file.c       Sat Aug 19 04:20:01 2017 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: osf1_file.c,v 1.41.8.1 2014/08/27 15:01:08 msaitoh Exp $ */
+/* $NetBSD: osf1_file.c,v 1.41.8.2 2017/08/19 04:20:01 snj Exp $ */
 
 /*
  * Copyright (c) 1999 Christopher G. Demetriou.  All rights reserved.
@@ -58,7 +58,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: osf1_file.c,v 1.41.8.1 2014/08/27 15:01:08 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: osf1_file.c,v 1.41.8.2 2017/08/19 04:20:01 snj Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_syscall_debug.h"
@@ -201,8 +201,10 @@
        for (cookie = cookiebuf; len > 0; len -= reclen) {
                bdp = (struct dirent *)inp;
                reclen = bdp->d_reclen;
-               if (reclen & 3)
-                       panic("osf1_sys_getdirentries: bad reclen");
+               if (reclen & 3) {
+                       error = EIO;
+                       goto out;
+               }
                if (cookie)
                        off = *cookie++; /* each entry points to the next */
                else
diff -r 7a167fc1b383 -r b2e2c09b95a5 sys/compat/sunos/sunos_misc.c
--- a/sys/compat/sunos/sunos_misc.c     Sat Aug 19 04:17:11 2017 +0000
+++ b/sys/compat/sunos/sunos_misc.c     Sat Aug 19 04:20:01 2017 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: sunos_misc.c,v 1.168 2010/06/24 13:03:07 hannken Exp $ */
+/*     $NetBSD: sunos_misc.c,v 1.168.14.1 2017/08/19 04:20:02 snj Exp $        */
 
 /*
  * Copyright (c) 1992, 1993
@@ -50,7 +50,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sunos_misc.c,v 1.168 2010/06/24 13:03:07 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sunos_misc.c,v 1.168.14.1 2017/08/19 04:20:02 snj Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -414,8 +414,10 @@
        for (cookie = cookiebuf; len > 0; len -= reclen) {
                bdp = (struct dirent *)inp;
                reclen = bdp->d_reclen;
-               if (reclen & 3)
-                       panic("sunos_getdents");
+               if (reclen & 3) {
+                       error = EIO;
+                       goto out;
+               }
                if ((*cookie >> 32) != 0) {
                        compat_offseterr(vp, "sunos_getdents");
                        error = EINVAL;
diff -r 7a167fc1b383 -r b2e2c09b95a5 sys/compat/sunos32/sunos32_misc.c
--- a/sys/compat/sunos32/sunos32_misc.c Sat Aug 19 04:17:11 2017 +0000
+++ b/sys/compat/sunos32/sunos32_misc.c Sat Aug 19 04:20:01 2017 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: sunos32_misc.c,v 1.74 2012/02/12 16:34:11 matt Exp $   */
+/*     $NetBSD: sunos32_misc.c,v 1.74.2.1 2017/08/19 04:20:02 snj Exp $        */
 /* from :NetBSD: sunos_misc.c,v 1.107 2000/12/01 19:25:10 jdolecek Exp */
 
 /*
@@ -77,7 +77,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sunos32_misc.c,v 1.74 2012/02/12 16:34:11 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sunos32_misc.c,v 1.74.2.1 2017/08/19 04:20:02 snj Exp $");
 
 #define COMPAT_SUNOS 1
 
@@ -659,8 +659,10 @@
        for (cookie = cookiebuf; len > 0; len -= reclen) {
                bdp = (struct dirent *)inp;
                reclen = bdp->d_reclen;
-               if (reclen & 3)
-                       panic("sunos_getdents");
+               if (reclen & 3) {
+                       error = EIO;
+                       goto out;
+               }
                if (cookie && (*cookie >> 32) != 0) {
                        compat_offseterr(vp, "sunos_getdents");
                        error = EINVAL;
diff -r 7a167fc1b383 -r b2e2c09b95a5 sys/compat/svr4/svr4_misc.c
--- a/sys/compat/svr4/svr4_misc.c       Sat Aug 19 04:17:11 2017 +0000
+++ b/sys/compat/svr4/svr4_misc.c       Sat Aug 19 04:20:01 2017 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: svr4_misc.c,v 1.155 2011/09/27 00:52:55 christos Exp $  */
+/*     $NetBSD: svr4_misc.c,v 1.155.8.1 2017/08/19 04:20:02 snj Exp $   */
 
 /*-
  * Copyright (c) 1994, 2008 The NetBSD Foundation, Inc.
@@ -37,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: svr4_misc.c,v 1.155 2011/09/27 00:52:55 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: svr4_misc.c,v 1.155.8.1 2017/08/19 04:20:02 snj Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -264,8 +264,10 @@
        for (cookie = cookiebuf; len > 0; len -= reclen) {
                bdp = (struct dirent *)inp;



Home | Main Index | Thread Index | Old Index