svn commit: r343111 - in head: cddl/lib/libdtrace contrib/libc++/include contrib/libxo/tests/gettext contrib/libxo/tests/gettext/po/pig_latin contrib/openbsm/libbsm contrib/openbsm/sys/bsm lib/libc...

Oliver Pinter oliver.pinter at hardenedbsd.org
Thu Jan 17 07:07:40 UTC 2019


On Thursday, January 17, 2019, Kirk McKusick <mckusick at freebsd.org> wrote:

> Author: mckusick
> Date: Thu Jan 17 06:35:45 2019
> New Revision: 343111
> URL: https://svnweb.freebsd.org/changeset/base/343111
>
> Log:
>   Create new EINTEGRITY error with message "Integrity check failed".
>
>   An integrity check such as a check-hash or a cross-correlation failed.
>   The integrity error falls between EINVAL that identifies errors in
>   parameters to a system call and EIO that identifies errors with the
>   underlying storage media. EINTEGRITY is typically raised by intermediate
>   kernel layers such as a filesystem or an in-kernel GEOM subsystem when
>   they detect inconsistencies. Uses include allowing the mount(8) command
>   to return a different exit value to automate the running of fsck(8)
>   during a system boot.
>
>   These changes make no use of the new error, they just add it. Later
>   commits will be made for the use of the new error number and it will
>   be added to additional manual pages as appropriate.
>
>   Reviewed by:    gnn, dim, brueffer, imp
>   Discussed with: kib, cem, emaste, ed, jilles
>   Differential Revision: https://reviews.freebsd.org/D18765
>
> Modified:
>   head/cddl/lib/libdtrace/errno.d
>   head/contrib/libc++/include/__errc
>   head/contrib/libc++/include/errno.h
>   head/contrib/libxo/tests/gettext/po/pig_latin/strerror.po
>   head/contrib/libxo/tests/gettext/strerror.pot
>   head/contrib/openbsm/libbsm/bsm_errno.c
>   head/contrib/openbsm/sys/bsm/audit_errno.h
>   head/lib/libc/gen/errlst.c
>   head/lib/libc/nls/C.msg
>   head/lib/libc/sys/intro.2
>   head/stand/liblua/lerrno.c
>   head/sys/bsm/audit_errno.h
>   head/sys/compat/cloudabi/cloudabi_errno.c
>   head/sys/compat/linux/linux_errno.inc
>   head/sys/security/audit/bsm_errno.c
>   head/sys/sys/errno.h
>
> Modified: head/cddl/lib/libdtrace/errno.d
> ============================================================
> ==================
> --- head/cddl/lib/libdtrace/errno.d     Thu Jan 17 06:34:39 2019
> (r343110)
> +++ head/cddl/lib/libdtrace/errno.d     Thu Jan 17 06:35:45 2019
> (r343111)
> @@ -225,7 +225,9 @@ inline int ENOTRECOVERABLE = 95;
>  #pragma D binding "1.13" ENOTRECOVERABLE
>  inline int EOWNERDEAD = 96;
>  #pragma D binding "1.13" EOWNERDEAD
> -inline int ELAST = 96;
> +inline int EINTEGRITY = 96;
> +#pragma D binding "1.13" EINTEGRITY
> +inline int ELAST = 97;
>  #pragma D binding "1.0" ELAST
>  inline int ERESTART = -1;
>  #pragma D binding "1.0" ERESTART
> @@ -340,6 +342,7 @@ inline string strerror[int errno] =
>         errno == ECAPMODE ?             "Not permitted in capability mode"
> :
>         errno == ENOTRECOVERABLE ?      "State not recoverable" :
>         errno == EOWNERDEAD ?           "Previous owner died" :
> +       errno == EINTEGRITY ?           "Integrity check failed" :
>         errno == ERESTART ?             "restart syscall" :
>         errno == EJUSTRETURN ?          "don't modify regs, just return" :
>         errno == ENOIOCTL ?             "ioctl not handled by this layer" :
>
> Modified: head/contrib/libc++/include/__errc
> ============================================================
> ==================
> --- head/contrib/libc++/include/__errc  Thu Jan 17 06:34:39 2019
> (r343110)
> +++ head/contrib/libc++/include/__errc  Thu Jan 17 06:35:45 2019
> (r343111)
> @@ -46,6 +46,7 @@ enum class errc
>      identifier_removed,                 // EIDRM
>      illegal_byte_sequence,              // EILSEQ
>      inappropriate_io_control_operation, // ENOTTY
> +    integrity_check_failed,             // EINTEGRITY
>      interrupted,                        // EINTR
>      invalid_argument,                   // EINVAL
>      invalid_seek,                       // ESPIPE
> @@ -143,6 +144,7 @@ _LIBCPP_DECLARE_STRONG_ENUM(errc)
>      identifier_removed                  = EIDRM,
>      illegal_byte_sequence               = EILSEQ,
>      inappropriate_io_control_operation  = ENOTTY,
> +    integrity_check_failed              = EINTEGRITY,
>      interrupted                         = EINTR,
>      invalid_argument                    = EINVAL,
>      invalid_seek                        = ESPIPE,
>
> Modified: head/contrib/libc++/include/errno.h
> ============================================================
> ==================
> --- head/contrib/libc++/include/errno.h Thu Jan 17 06:34:39 2019
> (r343110)
> +++ head/contrib/libc++/include/errno.h Thu Jan 17 06:35:45 2019
> (r343111)
> @@ -33,49 +33,72 @@ Macros:
>
>  #ifdef __cplusplus
>
> -#if !defined(EOWNERDEAD) || !defined(ENOTRECOVERABLE)
> +#if !defined(EOWNERDEAD) || !defined(ENOTRECOVERABLE) ||
> !defined(EINTEGRITY)
>
>  #ifdef ELAST
>
>  static const int __elast1 = ELAST+1;
>  static const int __elast2 = ELAST+2;
> +static const int __elast2 = ELAST+3;


I think this should be __elast3


>
>  #else
>
>  static const int __elast1 = 104;
>  static const int __elast2 = 105;
> +static const int __elast2 = 106;


And here too


>
>  #endif
>
> -#ifdef ENOTRECOVERABLE
> +#if !defined(EOWNERDEAD) && !defined(ENOTRECOVERABLE) &&
> !defined(EINTEGRITY)
> +#define ENOTRECOVERABLE __elast1
> +#define EOWNERDEAD __elast2
> +#define EINTEGRITY __elast3
> +#ifdef ELAST
> +#undef ELAST
> +#define ELAST EINTEGRITY
>
> +#elif !defined(EOWNERDEAD) && !defined(ENOTRECOVERABLE) &&
> defined(EINTEGRITY)
> +#define ENOTRECOVERABLE __elast1
> +#define EOWNERDEAD __elast2
> +#ifdef ELAST
> +#undef ELAST
> +#define ELAST EOWNERDEAD
> +
> +#elif !defined(EOWNERDEAD) && defined(ENOTRECOVERABLE) &&
> !defined(EINTEGRITY)
>  #define EOWNERDEAD __elast1
> +#define EINTEGRITY __elast2
> +#ifdef ELAST
> +#undef ELAST
> +#define ELAST EINTEGRITY
>
> +#elif !defined(EOWNERDEAD) && defined(ENOTRECOVERABLE) &&
> defined(EINTEGRITY)
> +#define EOWNERDEAD __elast1
>  #ifdef ELAST
>  #undef ELAST
>  #define ELAST EOWNERDEAD
> -#endif
>
> -#elif defined(EOWNERDEAD)
> +#elif defined(EOWNERDEAD) && !defined(ENOTRECOVERABLE) &&
> !defined(EINTEGRITY)
> +#define ENOTRECOVERABLE __elast1
> +#define EINTEGRITY __elast2
> +#ifdef ELAST
> +#undef ELAST
> +#define ELAST EINTEGRITY
>
> +#elif defined(EOWNERDEAD) && !defined(ENOTRECOVERABLE) &&
> defined(EINTEGRITY)
>  #define ENOTRECOVERABLE __elast1
>  #ifdef ELAST
>  #undef ELAST
>  #define ELAST ENOTRECOVERABLE
> -#endif
>
> -#else  // defined(EOWNERDEAD)
> -
> -#define EOWNERDEAD __elast1
> -#define ENOTRECOVERABLE __elast2
> +#elif defined(EOWNERDEAD) && defined(ENOTRECOVERABLE) &&
> !defined(EINTEGRITY)
> +#define EINTEGRITY __elast1
>  #ifdef ELAST
>  #undef ELAST
> -#define ELAST ENOTRECOVERABLE
> -#endif
> +#define ELAST EINTEGRITY
>
> -#endif  // defined(EOWNERDEAD)
> +#endif // !defined(OWNERDEAD) && !defined(NOTRECOVERABLE) &&
> !defined(INTEGRITY)
>
> -#endif  // !defined(EOWNERDEAD) || !defined(ENOTRECOVERABLE)
> +#endif // !defined(OWNERDEAD) || !defined(NOTRECOVERABLE) ||
> !defined(INTEGRITY)
>
>  //  supply errno values likely to be missing, particularly on Windows
>
> @@ -391,6 +414,10 @@ static const int __elast2 = 105;
>
>  #ifndef EMLINK
>  #define EMLINK 9979
> +#endif
> +
> +#ifndef EINTEGRITY
> +#define EINTEGRITY 9980
>  #endif
>
>  #endif // __cplusplus
>
> Modified: head/contrib/libxo/tests/gettext/po/pig_latin/strerror.po
> ============================================================
> ==================
> --- head/contrib/libxo/tests/gettext/po/pig_latin/strerror.po   Thu Jan
> 17 06:34:39 2019        (r343110)
> +++ head/contrib/libxo/tests/gettext/po/pig_latin/strerror.po   Thu Jan
> 17 06:35:45 2019        (r343111)
> @@ -457,3 +457,7 @@ msgstr "Atestay otnay ecoverableray"
>  # 96 - EOWNERDEAD
>  msgid "Previous owner died"
>  msgstr "Eviouspray ownerway iedday"
> +
> +# 97 - EINTEGRITY
> +msgid "Integrity check failed"
> +msgstr "integrityyay eckchay ailedfay"
>
> Modified: head/contrib/libxo/tests/gettext/strerror.pot
> ============================================================
> ==================
> --- head/contrib/libxo/tests/gettext/strerror.pot       Thu Jan 17
> 06:34:39 2019        (r343110)
> +++ head/contrib/libxo/tests/gettext/strerror.pot       Thu Jan 17
> 06:35:45 2019        (r343111)
> @@ -466,3 +466,7 @@ msgstr ""
>  # 96 - EOWNERDEAD
>  msgid "Previous owner died"
>  msgstr ""
> +
> +# 97 - EINTEGRITY
> +msgid "Integrity check failed"
> +msgstr ""
>
> Modified: head/contrib/openbsm/libbsm/bsm_errno.c
> ============================================================
> ==================
> --- head/contrib/openbsm/libbsm/bsm_errno.c     Thu Jan 17 06:34:39 2019
>       (r343110)
> +++ head/contrib/openbsm/libbsm/bsm_errno.c     Thu Jan 17 06:35:45 2019
>       (r343111)
> @@ -239,6 +239,13 @@ static const struct bsm_errno bsm_errnos[] = {
>         ERRNO_NO_LOCAL_MAPPING,
>  #endif
>         ES("Process died with the lock") },
> +       { BSM_ERRNO_EINTEGRITY,
> +#ifdef EINTEGRITY
> +       EINTEGRITY,
> +#else
> +       ERRNO_NO_LOCAL_MAPPING,
> +#endif
> +       ES("Integrity check failed") },
>         { BSM_ERRNO_ENOTRECOVERABLE,
>  #ifdef ENOTRECOVERABLE
>         ENOTRECOVERABLE,
>
> Modified: head/contrib/openbsm/sys/bsm/audit_errno.h
> ============================================================
> ==================
> --- head/contrib/openbsm/sys/bsm/audit_errno.h  Thu Jan 17 06:34:39 2019
>       (r343110)
> +++ head/contrib/openbsm/sys/bsm/audit_errno.h  Thu Jan 17 06:35:45 2019
>       (r343111)
> @@ -204,6 +204,7 @@
>  #define        BSM_ERRNO_EKEYREJECTED          222     /* Linux-specific.
> */
>  #define        BSM_ERRNO_ENOTCAPABLE           223     /*
> FreeBSD-specific. */
>  #define        BSM_ERRNO_ECAPMODE              224     /*
> FreeBSD-specific. */
> +#define        BSM_ERRNO_EINTEGRITY            225     /*
> FreeBSD-specific. */
>
>  /*
>   * In the event that OpenBSM doesn't have a file representation of a local
>
> Modified: head/lib/libc/gen/errlst.c
> ============================================================
> ==================
> --- head/lib/libc/gen/errlst.c  Thu Jan 17 06:34:39 2019        (r343110)
> +++ head/lib/libc/gen/errlst.c  Thu Jan 17 06:35:45 2019        (r343111)
> @@ -158,12 +158,12 @@ const char *const sys_errlist[] = {
>         "Not permitted in capability mode",     /* 94 - ECAPMODE */
>         "State not recoverable",                /* 95 - ENOTRECOVERABLE */
>         "Previous owner died",                  /* 96 - EOWNERDEAD */
> +       "Integrity check failed",               /* 97 - EINTEGRITY */
>
>  /*
>   * Reserved space in sys_errlist, take the next slot for a next error
> code.
>   * Reserve prevents the array size from changing for some time.
>   */
> -       __uprefix,                              /* 97 */
>         __uprefix,                              /* 98 */
>         __uprefix,                              /* 99 */
>         __uprefix,                              /* 100 */
>
> Modified: head/lib/libc/nls/C.msg
> ============================================================
> ==================
> --- head/lib/libc/nls/C.msg     Thu Jan 17 06:34:39 2019        (r343110)
> +++ head/lib/libc/nls/C.msg     Thu Jan 17 06:35:45 2019        (r343111)
> @@ -197,6 +197,8 @@ $ ENOTRECOVERABLE
>  95 State not recoverable
>  $ EOWNERDEAD
>  96 Previous owner died
> +$ EINTEGRITY
> +97 Integrity check failed
>  $
>  $ strsignal() support catalog
>  $
>
> Modified: head/lib/libc/sys/intro.2
> ============================================================
> ==================
> --- head/lib/libc/sys/intro.2   Thu Jan 17 06:34:39 2019        (r343110)
> +++ head/lib/libc/sys/intro.2   Thu Jan 17 06:35:45 2019        (r343111)
> @@ -472,6 +472,20 @@ The system call or operation is not permitted for capa
>  The state protected by a robust mutex is not recoverable.
>  .It Er 96 EOWNERDEAD Em "Previous owner died" .
>  The owner of a robust mutex terminated while holding the mutex lock.
> +.It Er 97 EINTEGRITY Em "Integrity check failed" .
> +An integrity check such as a check-hash or a cross-correlation failed.
> +The integrity error falls between
> +.Er EINVAL
> +that identifies errors in parameters to a system call and
> +.Er EIO
> +that identifies errors with the underlying storage media.
> +It is typically raised by intermediate kernel layers such as a
> +filesystem or an in-kernel GEOM subsystem when they detect
> inconsistencies.
> +Uses include allowing the
> +.Xr mount 8
> +command to return a different exit value to automate the running of
> +.Xr fsck 8
> +during a system boot.
>  .El
>  .Sh DEFINITIONS
>  .Bl -tag -width Ds
>
> Modified: head/stand/liblua/lerrno.c
> ============================================================
> ==================
> --- head/stand/liblua/lerrno.c  Thu Jan 17 06:34:39 2019        (r343110)
> +++ head/stand/liblua/lerrno.c  Thu Jan 17 06:35:45 2019        (r343111)
> @@ -146,6 +146,7 @@ static const struct err_name_number {
>         ENTRY(ECAPMODE),
>         ENTRY(ENOTRECOVERABLE),
>         ENTRY(EOWNERDEAD),
> +       ENTRY(EINTEGRITY),
>         ENTRY(ELAST),
>         ENTRY(ERESTART),
>         ENTRY(EJUSTRETURN),
>
> Modified: head/sys/bsm/audit_errno.h
> ============================================================
> ==================
> --- head/sys/bsm/audit_errno.h  Thu Jan 17 06:34:39 2019        (r343110)
> +++ head/sys/bsm/audit_errno.h  Thu Jan 17 06:35:45 2019        (r343111)
> @@ -208,6 +208,7 @@
>  #define        BSM_ERRNO_EKEYREJECTED          222     /* Linux-specific.
> */
>  #define        BSM_ERRNO_ENOTCAPABLE           223     /*
> FreeBSD-specific. */
>  #define        BSM_ERRNO_ECAPMODE              224     /*
> FreeBSD-specific. */
> +#define        BSM_ERRNO_EINTEGRITY            225     /*
> FreeBSD-specific. */
>
>  /*
>   * In the event that OpenBSM doesn't have a file representation of a local
>
> Modified: head/sys/compat/cloudabi/cloudabi_errno.c
> ============================================================
> ==================
> --- head/sys/compat/cloudabi/cloudabi_errno.c   Thu Jan 17 06:34:39 2019
>       (r343110)
> +++ head/sys/compat/cloudabi/cloudabi_errno.c   Thu Jan 17 06:35:45 2019
>       (r343111)
> @@ -63,6 +63,7 @@ cloudabi_convert_errno(int error)
>                 [EIDRM]                 = CLOUDABI_EIDRM,
>                 [EILSEQ]                = CLOUDABI_EILSEQ,
>                 [EINPROGRESS]           = CLOUDABI_EINPROGRESS,
> +               [EINTEGRITY]            = CLOUDABI_EINVAL,
>                 [EINTR]                 = CLOUDABI_EINTR,
>                 [EINVAL]                = CLOUDABI_EINVAL,
>                 [EIO]                   = CLOUDABI_EIO,
>
> Modified: head/sys/compat/linux/linux_errno.inc
> ============================================================
> ==================
> --- head/sys/compat/linux/linux_errno.inc       Thu Jan 17 06:34:39 2019
>       (r343110)
> +++ head/sys/compat/linux/linux_errno.inc       Thu Jan 17 06:35:45 2019
>       (r343111)
> @@ -142,7 +142,8 @@ const int linux_errtbl[ELAST + 1] = {
>         -1,     /* ECAPMODE -> EPERM */
>         -131,   /* ENOTRECOVERABLE */
>         -130,   /* EOWNERDEAD */
> +       -22,    /* EINTEGRITY -> EINVAL */
>  };
>
> -_Static_assert(ELAST == 96,
> +_Static_assert(ELAST == 97,
>      "missing errno entries in linux_errtbl");
>
> Modified: head/sys/security/audit/bsm_errno.c
> ============================================================
> ==================
> --- head/sys/security/audit/bsm_errno.c Thu Jan 17 06:34:39 2019
> (r343110)
> +++ head/sys/security/audit/bsm_errno.c Thu Jan 17 06:35:45 2019
> (r343111)
> @@ -243,6 +243,13 @@ static const struct bsm_errno bsm_errnos[] = {
>         ERRNO_NO_LOCAL_MAPPING,
>  #endif
>         ES("Process died with the lock") },
> +       { BSM_ERRNO_EINTEGRITY,
> +#ifdef EINTEGRITY
> +       EINTEGRITY,
> +#else
> +       ERRNO_NO_LOCAL_MAPPING,
> +#endif
> +       ES("Integrity check failed") },
>         { BSM_ERRNO_ENOTRECOVERABLE,
>  #ifdef ENOTRECOVERABLE
>         ENOTRECOVERABLE,
>
> Modified: head/sys/sys/errno.h
> ============================================================
> ==================
> --- head/sys/sys/errno.h        Thu Jan 17 06:34:39 2019        (r343110)
> +++ head/sys/sys/errno.h        Thu Jan 17 06:35:45 2019        (r343111)
> @@ -180,10 +180,11 @@ __END_DECLS
>  #define        ECAPMODE        94              /* Not permitted in
> capability mode */
>  #define        ENOTRECOVERABLE 95              /* State not recoverable */
>  #define        EOWNERDEAD      96              /* Previous owner died */
> +#define        EINTEGRITY      97              /* Integrity check failed
> */
>  #endif /* _POSIX_SOURCE */
>
>  #ifndef _POSIX_SOURCE
> -#define        ELAST           96              /* Must be equal largest
> errno */
> +#define        ELAST           97              /* Must be equal largest
> errno */
>  #endif /* _POSIX_SOURCE */
>
>  #if defined(_KERNEL) || defined(_WANT_KERNEL_ERRNO)
> _______________________________________________
> svn-src-head at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/svn-src-head
> To unsubscribe, send any mail to "svn-src-head-unsubscribe at freebsd.org"
>


More information about the svn-src-head mailing list