This is the mail archive of the glibc-bugs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libc/22685] PowerPC: Static AT_SECURE binaries segfault with lock-elision and tunables


https://sourceware.org/bugzilla/show_bug.cgi?id=22685

--- Comment #5 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, release/2.25/master has been updated
       via  71616d59ec97fe798b69f749e7fb424bd6d2432b (commit)
       via  e84db8f9eba9171fc04046014668cb66eba64d41 (commit)
      from  9331dbdcd7aa8e997eb4caa9b1b0cb6c804320c8 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=71616d59ec97fe798b69f749e7fb424bd6d2432b

commit 71616d59ec97fe798b69f749e7fb424bd6d2432b
Author: Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>
Date:   Fri Jan 12 18:50:33 2018 -0200

    powerpc: Fix syscalls during early process initialization [BZ #22685]

    The tunables framework needs to execute syscall early in process
    initialization, before the TCB is available for consumption.  This
    behavior conflicts with powerpc{|64|64le}'s lock elision code, that
    checks the TCB before trying to abort transactions immediately before
    executing a syscall.

    This patch adds a powerpc-specific implementation of __access_noerrno
    that does not abort transactions before the executing syscall.

    Tested on powerpc{|64|64le}.

        [BZ #22685]
        * sysdeps/powerpc/powerpc32/sysdep.h (ABORT_TRANSACTION_IMPL): Renamed
        from ABORT_TRANSACTION.
        (ABORT_TRANSACTION): Redirect to ABORT_TRANSACTION_IMPL.
        * sysdeps/powerpc/powerpc64/sysdep.h (ABORT_TRANSACTION,
        ABORT_TRANSACTION_IMPL): Likewise.
        * sysdeps/unix/sysv/linux/powerpc/not-errno.h: New file.  Reuse
        Linux code, but remove the code that aborts transactions.

    Signed-off-by: Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>
    Tested-by: Aurelien Jarno <aurelien@aurel32.net>
    (cherry picked from commit 4612268a0ad8e3409d8ce2314dd2dd8ee0af5269)

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=e84db8f9eba9171fc04046014668cb66eba64d41

commit e84db8f9eba9171fc04046014668cb66eba64d41
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Mon Jul 17 18:11:12 2017 -0300

    tunables: Use direct syscall for access (BZ#21744)

    The function maybe_enable_malloc_check, which is called by
    __tunables_init, calls __access_noerrno.  It isn't problem when
    symbol is is in ld.so, which has a special version of __access_noerrno
    without stack protector.  But when glibc is built with stack protector,
    maybe_enable_malloc_check in libc.a can't call the regular version of
    __access_noerrno with stack protector.

    This patch changes how Linux defines the __access_noerrno to be an
    inline call instead and thus preventing defining different build
    rules for ld/static and shared.

        H.J. Lu  <hongjiu.lu@intel.com>
        Adhemerval Zanella  <adhemerval.zanella@linaro.org>

        [BZ #21744]
        * elf/dl-tunables.c: Include not-errno.h header.
        * include/unistd.h (__access_noerrno): Remove definition.
        * sysdeps/unix/sysv/linux/access.c (__access_noerrno): Likewise.
        * sysdeps/generic/not-errno.h: New file.
        * sysdeps/unix/sysv/linux/not-errno.h: Likewise.

    (cherry picked from commit 95a73392580761abc62fc9b1386d232cd55878e9)

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                   |   21 ++++++++++++++++
 NEWS                                        |    2 +
 elf/dl-tunables.c                           |    2 +
 include/unistd.h                            |    7 -----
 sysdeps/generic/not-errno.h                 |   19 ++++++++++++++
 sysdeps/powerpc/powerpc32/sysdep.h          |    5 ++-
 sysdeps/powerpc/powerpc64/sysdep.h          |    5 ++-
 sysdeps/unix/sysv/linux/access.c            |   15 -----------
 sysdeps/unix/sysv/linux/not-errno.h         |   35 +++++++++++++++++++++++++++
 sysdeps/unix/sysv/linux/powerpc/not-errno.h |   30 +++++++++++++++++++++++
 10 files changed, 115 insertions(+), 26 deletions(-)
 create mode 100644 sysdeps/generic/not-errno.h
 create mode 100644 sysdeps/unix/sysv/linux/not-errno.h
 create mode 100644 sysdeps/unix/sysv/linux/powerpc/not-errno.h

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]