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