Page MenuHomePhabricator

Hwasan InitPrctl check for error using internal_iserror

Authored by mmalcomson on Feb 18 2021, 8:26 AM.



When adding this function in I did not
notice that internal_prctl has the API of the syscall to prctl rather
than the API of the glibc (posix) wrapper.

This means that the error return value is not necessarily -1 and that
errno is not set by the call.

For InitPrctl this means that the checks do not catch running on a
kernel *without* the required ABI (not caught since I only tested this
function correctly enables the ABI when it exists).
This commit updates the two calls which check for an error condition to
use internal_iserror. That function sets a provided integer to an
equivalent errno value and returns a boolean to indicate success or not.

Tested by running on a kernel that has this ABI and on one that does
not. Verified that running on the kernel without this ABI the current
code prints the provided error message and does not attempt to run the
program. Verified that running on the kernel with this ABI the current
code does not print an error message and turns on the ABI.
All tests done on an AArch64 Linux machine.

In order to keep running the testsuite on kernels that do not provide
this new ABI we add another option to the HWASAN_OPTIONS environment
variable, this option determines whether the library kills the process
if it fails to enable the relaxed syscall ABI or not.
This new flag is fail_without_syscall_abi.

Diff Detail

Event Timeline

mmalcomson created this revision.Feb 18 2021, 8:26 AM
mmalcomson requested review of this revision.Feb 18 2021, 8:26 AM
Herald added a project: Restricted Project. · View Herald TranscriptFeb 18 2021, 8:26 AM
Herald added a subscriber: Restricted Project. · View Herald Transcript
mmalcomson abandoned this revision.Feb 18 2021, 8:29 AM

Accidentally created a new revision when attempting to update an existing revision.
Was trying to use arc for first time.

This revision was landed with ongoing or failed builds.Feb 19 2021, 8:33 AM