[PATCH] xsysconf: Only fail on error results and errno set

Florian Weimer fweimer@redhat.com
Fri Sep 24 06:27:49 GMT 2021


* Stafford Horne via Libc-alpha:

> When testing nptl/tst-pthread-attr-affinity-fail fails with:
>
>     error: xsysconf.c:33: sysconf (83): Cannot allocate memory
>     error: 1 test failures
>
> This happens as xsysconf checks the errno after running sysconf.
> Internally the sysconf request for _SC_NPROCESSORS_CONF on linux
> allocates memory.  But there is a problem, even though malloc succeeds
> errno is getting set to ENOMEM.
>
> POSIX allows successful calls to clobber errno.  So xsysconf just
> checking errno is wrong.  Fix xsysconf by only failing if we have an
> error result and errno is set.
> ---
>  support/xsysconf.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/support/xsysconf.c b/support/xsysconf.c
> index 2607d3a720..fce7795417 100644
> --- a/support/xsysconf.c
> +++ b/support/xsysconf.c
> @@ -29,7 +29,7 @@ xsysconf (int name)
>    int old_errno = errno;
>    errno = 0;
>    long result = sysconf (name);
> -  if (errno != 0)
> +  if (result == -1 && errno != 0)
>      FAIL_EXIT1 ("sysconf (%d): %m", name);
>    errno = old_errno;
>    return result;

Looks good, thanks.

Florian



More information about the Libc-alpha mailing list