[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