This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH 1/2] Deprecate sysctl syscall interface
- From: Adhemerval Zanella <adhemerval dot zanella at linaro dot org>
- To: Zack Weinberg <zackw at panix dot com>, GNU C Library <libc-alpha at sourceware dot org>
- Date: Thu, 3 May 2018 11:15:21 -0300
- Subject: Re: [PATCH 1/2] Deprecate sysctl syscall interface
- Autocrypt: addr=adhemerval dot zanella at linaro dot org; prefer-encrypt=mutual; keydata= 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
- Openpgp: preference=signencrypt
- References: <1524523018-7216-1-git-send-email-adhemerval.zanella@linaro.org> <alpine.DEB.2.20.1804232314390.22416@digraph.polyomino.org.uk> <alpine.DEB.2.20.1804232318150.22416@digraph.polyomino.org.uk> <a6bdf74c-7cec-961d-3f17-68631447c427@linaro.org> <alpine.DEB.2.20.1804251443270.635@digraph.polyomino.org.uk> <447152b4-9689-3329-c6ac-e0486ce2e74a@linaro.org> <df5ea534-3492-a670-1fb8-56a11d3a04a4@linaro.org> <CAKCAbMh=W4Zq5SHPWW1OkygQ-CTM=oRETVoC++JyPfx5x85GPw@mail.gmail.com> <a49c0ad8-0be1-8fa9-fb51-ebf083338ea1@linaro.org> <CAKCAbMgneGH-0=RqTrkkD=82HHP+j2VfU01J+-LPudABDBd5hg@mail.gmail.com> <0ed42e12-2abb-82f9-01bc-ec7bac5c7efa@linaro.org> <CAKCAbMiUkW_WJjrRS4YEZZHx4xf1kQJmicuuuZV2KCo78sOLVg@mail.gmail.com> <d458d549-0944-1c45-11f6-94e669f50450@linaro.org> <CAKCAbMgxRVo854qYcP5Bv0nAMLSSDwZqPNnWsNga00DzOgT8BA@mail.gmail.com>
On 30/04/2018 17:33, Zack Weinberg wrote:
> (I didn't intend for any of this thread to be in private. Sorry about
> that. I'm not trimming any quotes to provide libc-alpha with as much
> context as possible.)
>
> On Mon, Apr 30, 2018 at 4:25 PM, Adhemerval Zanella
> <adhemerval.zanella@linaro.org> wrote:
>> On 30/04/2018 17:10, Zack Weinberg wrote:
>>> On Mon, Apr 30, 2018 at 3:23 PM, Adhemerval Zanella
>>> <adhemerval.zanella@linaro.org> wrote:Why?
>>>> The idea you are proposing was the original patch I sent, however I tend
>>>> to agree more with Joseph where symbol deprecation should not add newer
>>>> symbols (which would require for ports that do not return -1/ENOSYS).
>>>
>>> Why would it require that? I don't see any reason not to use the
>>> "always return -1/ENOSYS" symbol for everything. Where the system
>>> call exists, it already unconditionally fails, doesn't it? So there's
>>> no observable behavior change.
>>
>> Current Linux still provides the syscall on some architecture. This is an
>> output of an script I have that check if the __NR_<syscall> can be build
>> against a toolchain (this one configured against a 3.2 kernel one or the
>> minimum one for the architectures, 3.7 for aarch64 for instance):
>>
>> SYSCALL: _sysctl
>> aarch64: FAIL
>> alpha: OK
>> arm: OK
>> hppa: OK
>> i686: OK
>> ia64: OK
>> m68k: OK
>> microblaze: OK
>> mips: OK
>> mips64: OK
>> mips64-n32: OK
>> nios2: FAIL
>> powerpc: OK
>> powerpc64: OK
>> powerpcspe: OK
>> riscv64: FAIL
>> s390: OK
>> s390x: OK
>> sh4: OK
>> sparc64: OK
>> sparcv9: OK
>> tilegx: FAIL
>> x86_64: OK
>> x86_64-x32: FAIL
>>
>> For the architectures that still provides it, the kernel deprecation is still
>> only printing a kernel warning the symbols is deprecated and it might be removed
>> in the future. So we still need to provide a compat symbol with old semantic
>> and if the idea is to now return -1/ENOSYS add a new symbol on 2.28.
>
> IMHO this means we should not deprecate sysctl in our code until the
> kernel does remove it entirely.
My view for deprecate sysctl on glibc is summarized as:
* the deprecation in kernel occurred 10 years ago.
* the kernel kernel/sysctl_binary.c was changed to be a compatibility wrapper
around /proc/sys (26a7034b40), the changes were only to *remove* deprecated
fields and no new fields were added since then, meaning sysctl just
provides a subset of /proc/sys (with unknown exceptions of
NET_IPV6_ACCEPT_RA_FROM_LOCAL (d93331965) and KERN_PANIC_ON_WARN (9e3961a097).
* new ports do not provide the syscall (aarch64, nios2, riscv64, x86_64-x32)
so portable programs should not rely on it.
* although linux and bsd do share some object names, most are Linux specific
and some vary between kernel versions and not all are properly documented.
* sysctl for procps already uses /proc/sys.
* this syscall is still available for architecture that support it thought
syscall(...) (sysctl(2) manual shows the expected abi).
So I would like to hear if we should either continue to provide sysctl glibc
implementation (which differ slight than kernel signature) or if we should
deprecate. If deprecation is the prefered way we can either by removing the
symbol for new ports while adding a compat symbol or by adding a link warning
stating it deprecated and should be removed in future releases.