[PATCH v2 1/3] linux/termios: clear k_termios.c_cflag & CIBAUD for non-split speed [BZ 33340]
Adhemerval Zanella Netto
adhemerval.zanella@linaro.org
Tue Sep 16 12:07:08 GMT 2025
On 16/09/25 06:36, H. Peter Anvin wrote:
> On 2025-09-10 14:36, H. Peter Anvin wrote:
>> After getting more experience with the various broken direct-to-ioctl
>> termios2 hacks using Fedora 43 beta, I have found a fair number of
>> cases where the software would fail to set, or clear CIBAUD for
>> non-split-speed operation.
>>
>> Thus it seems will help improve compatibility to clear the kernel-side
>> version of c_cflag & CIBAUD (having the same meaning to the Linux
>> kernel as the speed 0 has for cfsetibaud(), i.e. force the input speed
>> to equal the output speed) for non-split-speed operation, rather than
>> having it explicitly equal the output speed in CBAUD.
>>
>> When writing the code that went into glibc 2.42 I had considered this
>> issue, and had to make an educated guess which way would be more
>> likely to break fewer things. Unfortunately, it appears I guessed
>> wrong.
>>
>> A third option would be to *always* set CIBAUD to __BOTHER, even for
>> the standard baud rates. However, that is an even bigger departure
>> from legacy behavior, whereas this variant mostly preserves current
>> behavior in terms of under what conditions buggy utilities will
>> continue to work.
>>
>> This change is in tcsetattr() rather than
>> ___termios2_canonicalize_speeds(), as it should not be run for
>> tcgetattr(); that would break split speed support for the legacy
>> interface versions of cfgetispeed() and cfsetispeed().
>>
>> [ v2: fixed comment style ]
>>
>
> *Gentle ping*
>
It is on my backlog list, just sorting out some other tasks. Do you
think we will need to backport these?
More information about the Libc-alpha
mailing list