Source-Changes-HG archive

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

[src/trunk]: src/sys/compat CTASSERT that native to compat errno translation ...



details:   https://anonhg.NetBSD.org/src/rev/d9d88ef12ae0
branches:  trunk
changeset: 792134:d9d88ef12ae0
user:      njoly <njoly%NetBSD.org@localhost>
date:      Sun Dec 22 17:14:22 2013 +0000

description:
CTASSERT that native to compat errno translation tables are kept in
sync with native errno list.

Remove extra entries (linux) which resulted in bad translated values,
and add missing ones (ibcs2, osf1 and svr4) which made some out of
bounds accesses.

diffstat:

 sys/compat/ibcs2/ibcs2_errno.c        |  20 ++++++++++++-
 sys/compat/linux/common/linux_errno.c |  52 +++-------------------------------
 sys/compat/osf1/osf1_errno.c          |  19 +++++++++++-
 sys/compat/svr4/svr4_errno.c          |  20 ++++++++++++-
 sys/compat/svr4/svr4_errno.h          |   5 ++-
 5 files changed, 62 insertions(+), 54 deletions(-)

diffs (206 lines):

diff -r 0d3a5995a451 -r d9d88ef12ae0 sys/compat/ibcs2/ibcs2_errno.c
--- a/sys/compat/ibcs2/ibcs2_errno.c    Sun Dec 22 16:29:42 2013 +0000
+++ b/sys/compat/ibcs2/ibcs2_errno.c    Sun Dec 22 17:14:22 2013 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: ibcs2_errno.c,v 1.8 2001/11/13 02:08:21 lukem Exp $    */
+/*     $NetBSD: ibcs2_errno.c,v 1.9 2013/12/22 17:14:22 njoly Exp $    */
 
 /*
  * ibcs2_errno.c
@@ -32,7 +32,9 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ibcs2_errno.c,v 1.8 2001/11/13 02:08:21 lukem Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ibcs2_errno.c,v 1.9 2013/12/22 17:14:22 njoly Exp $");
+
+#include <sys/errno.h>
 
 #include <compat/ibcs2/ibcs2_errno.h>
 
@@ -121,4 +123,18 @@
        0,                      /* 81 */
        IBCS2_EIDRM,            /* 82 */
        IBCS2_ENOMSG,           /* 83 */
+       IBCS2_EOVERFLOW,        /* 84 */
+       IBCS2_EILSEQ,           /* 85 */
+       0,                      /* 86 ENOTSUP */        
+       0,                      /* 87 ECANCELED */
+       IBCS2_EBADMSG,          /* 88 */
+       IBCS2_ENODATA,          /* 89 */
+       IBCS2_ENOSR,            /* 90 */
+       IBCS2_ENOSTR,           /* 91 */
+       IBCS2_ETIME,            /* 92 */
+       0,                      /* 93 ENOATTR */
+       IBCS2_EMULTIHOP,        /* 94 */
+       IBCS2_ENOLINK,          /* 95 */
+       IBCS2_EPROTO,           /* 96 */
 };
+__CTASSERT(__arraycount(native_to_ibcs2_errno) == ELAST + 1);
diff -r 0d3a5995a451 -r d9d88ef12ae0 sys/compat/linux/common/linux_errno.c
--- a/sys/compat/linux/common/linux_errno.c     Sun Dec 22 16:29:42 2013 +0000
+++ b/sys/compat/linux/common/linux_errno.c     Sun Dec 22 17:14:22 2013 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: linux_errno.c,v 1.14 2013/12/17 22:14:24 njoly Exp $   */
+/*     $NetBSD: linux_errno.c,v 1.15 2013/12/22 17:14:22 njoly Exp $   */
 
 /*-
  * Copyright (c) 1995 The NetBSD Foundation, Inc.
@@ -30,7 +30,9 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: linux_errno.c,v 1.14 2013/12/17 22:14:24 njoly Exp $");
+__KERNEL_RCSID(0, "$NetBSD: linux_errno.c,v 1.15 2013/12/22 17:14:22 njoly Exp $");
+
+#include <sys/errno.h>
 
 #include <compat/linux/common/linux_errno.h>
 
@@ -136,49 +138,5 @@
        LINUX_SCERR_SIGN LINUX_EMULTIHOP,
        LINUX_SCERR_SIGN LINUX_ENOLINK,
        LINUX_SCERR_SIGN LINUX_EPROTO,          /* 96 */
-
-       /*
-        * The rest of the list consists of errors that only
-        * Linux has. They can be used to map them on to
-        * themselves, so Linux emulating syscalls can return
-        * these values.
-        */
-
-       LINUX_SCERR_SIGN LINUX_ECHRNG,
-       LINUX_SCERR_SIGN LINUX_EL2NSYNC,
-       LINUX_SCERR_SIGN LINUX_EL3HLT,
-       LINUX_SCERR_SIGN LINUX_EL3RST,
-       LINUX_SCERR_SIGN LINUX_ELNRNG,
-       LINUX_SCERR_SIGN LINUX_EUNATCH,
-       LINUX_SCERR_SIGN LINUX_ENOCSI,
-       LINUX_SCERR_SIGN LINUX_EL2HLT,
-       LINUX_SCERR_SIGN LINUX_EBADE,
-       LINUX_SCERR_SIGN LINUX_EBADR,
-       LINUX_SCERR_SIGN LINUX_EXFULL,
-       LINUX_SCERR_SIGN LINUX_ENOANO,
-       LINUX_SCERR_SIGN LINUX_EBADRQC,
-       LINUX_SCERR_SIGN LINUX_EBADSLT,
-       LINUX_SCERR_SIGN LINUX_EDEADLOCK,
-       LINUX_SCERR_SIGN LINUX_EBFONT,
-       LINUX_SCERR_SIGN LINUX_ENONET,
-       LINUX_SCERR_SIGN LINUX_ENOPKG,
-       LINUX_SCERR_SIGN LINUX_EADV,
-       LINUX_SCERR_SIGN LINUX_ESRMNT,
-       LINUX_SCERR_SIGN LINUX_ECOMM,
-       LINUX_SCERR_SIGN LINUX_EDOTDOT,
-       LINUX_SCERR_SIGN LINUX_ENOTUNIQ,
-       LINUX_SCERR_SIGN LINUX_EBADFD,
-       LINUX_SCERR_SIGN LINUX_EREMCHG,
-       LINUX_SCERR_SIGN LINUX_ELIBACC,
-       LINUX_SCERR_SIGN LINUX_ELIBBAD,
-       LINUX_SCERR_SIGN LINUX_ELIBSCN,
-       LINUX_SCERR_SIGN LINUX_ELIBMAX,
-       LINUX_SCERR_SIGN LINUX_ELIBEXEC,
-       LINUX_SCERR_SIGN LINUX_ERESTART,
-       LINUX_SCERR_SIGN LINUX_ESTRPIPE,
-       LINUX_SCERR_SIGN LINUX_EUCLEAN,
-       LINUX_SCERR_SIGN LINUX_ENOTNAM,
-       LINUX_SCERR_SIGN LINUX_ENAVAIL,
-       LINUX_SCERR_SIGN LINUX_EISNAM,
-       LINUX_SCERR_SIGN LINUX_EREMOTEIO,
 };
+__CTASSERT(__arraycount(native_to_linux_errno) == ELAST + 1);
diff -r 0d3a5995a451 -r d9d88ef12ae0 sys/compat/osf1/osf1_errno.c
--- a/sys/compat/osf1/osf1_errno.c      Sun Dec 22 16:29:42 2013 +0000
+++ b/sys/compat/osf1/osf1_errno.c      Sun Dec 22 17:14:22 2013 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: osf1_errno.c,v 1.6 2013/01/02 18:48:22 dsl Exp $ */
+/* $NetBSD: osf1_errno.c,v 1.7 2013/12/22 17:14:22 njoly Exp $ */
 
 /*
  * Copyright (c) 1999 Christopher G. Demetriou.  All rights reserved.
@@ -31,7 +31,9 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: osf1_errno.c,v 1.6 2013/01/02 18:48:22 dsl Exp $");
+__KERNEL_RCSID(0, "$NetBSD: osf1_errno.c,v 1.7 2013/12/22 17:14:22 njoly Exp $");
+
+#include <sys/errno.h>
 
 #include <compat/osf1/osf1.h>
 
@@ -128,4 +130,17 @@
     OSF1_EIDRM,                        /* EIDRM (82) -> 81 */
     OSF1_ENOMSG,               /* ENOMSG (83) -> 80 */
     OSF1_EOVERFLOW,            /* EOVERFLOW (84) -> 103 */
+    OSF1_EILSEQ,               /* EILSEQ (85) -> 116 */
+    OSF1_ENOTSUP,              /* ENOTSUP (86) -> 99 */
+    OSF1_ECANCELED,            /* ECANCELED (87) -> 94 */
+    OSF1_EBADMSG,              /* EBADMSG (88) -> 84 */
+    OSF1_ENODATA,              /* ENODATA (89) -> 86 */
+    OSF1_ENOSR,                        /* ENOSR (90) -> 82 */
+    OSF1_ENOSTR,               /* ENOSTR (91) -> 87 */
+    OSF1_ETIME,                        /* ETIME (92) -> 83 */
+    OSF1_ENOSYS,               /* ENOATTR (93) has no equivalent */
+    OSF1_EMULTIHOP,            /* EMULTIHOP (94) -> 101 */
+    OSF1_ENOLINK,              /* ENOLINK (95) -> 102 */
+    OSF1_EPROTO,               /* EPROTO (96) -> 85 */
 };
+__CTASSERT(__arraycount(native_to_osf1_errno) == ELAST + 1);
diff -r 0d3a5995a451 -r d9d88ef12ae0 sys/compat/svr4/svr4_errno.c
--- a/sys/compat/svr4/svr4_errno.c      Sun Dec 22 16:29:42 2013 +0000
+++ b/sys/compat/svr4/svr4_errno.c      Sun Dec 22 17:14:22 2013 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: svr4_errno.c,v 1.10 2008/04/28 20:23:45 martin Exp $    */
+/*     $NetBSD: svr4_errno.c,v 1.11 2013/12/22 17:14:22 njoly Exp $     */
 
 /*-
  * Copyright (c) 1994 The NetBSD Foundation, Inc.
@@ -34,7 +34,9 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: svr4_errno.c,v 1.10 2008/04/28 20:23:45 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: svr4_errno.c,v 1.11 2013/12/22 17:14:22 njoly Exp $");
+
+#include <sys/errno.h>
 
 #include <compat/svr4/svr4_errno.h>
 
@@ -124,4 +126,18 @@
        SVR4_ENEEDAUTH,
        SVR4_EIDRM,
        SVR4_ENOMSG,
+       SVR4_EOVERFLOW,
+       SVR4_EILSEQ,
+       SVR4_ENOTSUP,
+       SVR4_ECANCELED,
+       SVR4_EBADMSG,
+       SVR4_ENODATA,
+       SVR4_ENOSR,
+       SVR4_ENOSTR,
+       SVR4_ETIME,
+       SVR4_ENOATTR,
+       SVR4_EMULTIHOP,
+       SVR4_ENOLINK,
+       SVR4_EPROTO,
 };
+__CTASSERT(__arraycount(native_to_svr4_errno) == ELAST + 1);
diff -r 0d3a5995a451 -r d9d88ef12ae0 sys/compat/svr4/svr4_errno.h
--- a/sys/compat/svr4/svr4_errno.h      Sun Dec 22 16:29:42 2013 +0000
+++ b/sys/compat/svr4/svr4_errno.h      Sun Dec 22 17:14:22 2013 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: svr4_errno.h,v 1.7 2008/04/28 20:23:45 martin Exp $     */
+/*     $NetBSD: svr4_errno.h,v 1.8 2013/12/22 17:14:22 njoly Exp $      */
 
 /*-
  * Copyright (c) 1994 The NetBSD Foundation, Inc.
@@ -169,6 +169,9 @@
 #define        SVR4_EFTYPE             SVR4_ENOSYS
 #define        SVR4_EAUTH              SVR4_ENOSYS
 #define        SVR4_ENEEDAUTH          SVR4_ENOSYS
+#define        SVR4_ENOTSUP            SVR4_ENOSYS
+#define        SVR4_ECANCELED          SVR4_ENOSYS
+#define        SVR4_ENOATTR            SVR4_ENOSYS
 
 extern const int native_to_svr4_errno[];
 



Home | Main Index | Thread Index | Old Index