[PATCH v3 7/9] x86/cet: Don't disable CET if not single threaded
H.J. Lu
hjl.tools@gmail.com
Tue Dec 19 16:16:42 GMT 2023
On Tue, Dec 19, 2023 at 8:08 AM H.J. Lu <hjl.tools@gmail.com> wrote:
>
> In permissive mode, don't disable IBT nor SHSTK when dlopening a legacy
> shared library if not single threaded since IBT and SHSTK may be still
> enabled in other threads. Other threads with IBT or SHSTK enabled will
> crash when calling functions in the legacy shared library. Instead, an
> error will be issued.
> ---
> sysdeps/x86/dl-cet.c | 11 +++++++++--
> 1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/sysdeps/x86/dl-cet.c b/sysdeps/x86/dl-cet.c
> index f40f8e17b0..25add215f2 100644
> --- a/sysdeps/x86/dl-cet.c
> +++ b/sysdeps/x86/dl-cet.c
> @@ -20,6 +20,7 @@
> #include <libintl.h>
> #include <ldsodefs.h>
> #include <dl-cet.h>
> +#include <sys/single_threaded.h>
>
> /* GNU_PROPERTY_X86_FEATURE_1_IBT and GNU_PROPERTY_X86_FEATURE_1_SHSTK
> are defined in <elf.h>, which are only available for C sources.
> @@ -204,7 +205,10 @@ dl_cet_check_dlopen (struct link_map *m, struct dl_cet_info *info)
> && (info->feature_1_legacy
> & GNU_PROPERTY_X86_FEATURE_1_IBT) != 0)
> {
> - if (info->enable_ibt_type != cet_permissive)
> + /* Don't disable IBT if not single threaded since IBT may be still
> + enabled in other threads. */
> + if (info->enable_ibt_type != cet_permissive
> + || !SINGLE_THREAD_P)
> {
> legacy_obj = info->feature_1_legacy_ibt;
> msg = N_("rebuild shared object with IBT support enabled");
> @@ -220,7 +224,10 @@ dl_cet_check_dlopen (struct link_map *m, struct dl_cet_info *info)
> && (info->feature_1_legacy
> & GNU_PROPERTY_X86_FEATURE_1_SHSTK) != 0)
> {
> - if (info->enable_shstk_type != cet_permissive)
> + /* Don't disable SHSTK if not single threaded since SHSTK may be
> + still enabled in other threads. */
> + if (info->enable_shstk_type != cet_permissive
> + || !SINGLE_THREAD_P)
> {
> legacy_obj = info->feature_1_legacy_shstk;
> msg = N_("rebuild shared object with SHSTK support enabled");
> --
> 2.43.0
>
I will check it in tomorrow if there is no objection.
--
H.J.
More information about the Libc-alpha
mailing list