[PATCH RFC] pty: Add parity enabling routine
From: Esa Laakso
Date: Thu Apr 18 2024 - 08:48:22 EST
There are some cases where parity selection is required for passing
it forward to a virtualized terminal. In this sepcific use-case, we
want to use pty to send and receive serial data to a serial
multiplexer. By using a pty, we avoid writing a custom tty driver.
There is very little evidence on the reasoning on why this option is
hard-coded to be disabled. AFAIK it has been as such since 1996. With
the lack of information about why this is, and based on the fact there
are other similar fields that are not hard-coded, it is considered safe
to enable this option.
Still, in order not to be too intrusive about the change, add it only on
the condition that the termios flag `EXTPROC` is turned on. This way
there is very little chance it will cause any unintended problems in any
other implementation.
Signed-off-by: Esa Laakso <esa.laakso@xxxxxxxxxxx>
Signed-off-by: Esa Laakso <fidelix.laakso@xxxxxxxxx>
---
We are looking for some assistance on this patch, or just a green light
to submit it, if it is good to go.
We would need to know if the change is valid in context of pty, as
there seems to be fairly little information about the reasoning behind
the hard-coded values.
Our guess is that they have been as such forever and nobody has had a
reason to change them. We have a reason to change them, and we would
like to know if it is safe to do so and possibly contribute in the
process. Either by just using the patch for ourselves or submitting
it here.
For the record, this is my first patch submitted upstream. Please let
me know if something is incorrect or missing.
---
drivers/tty/pty.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/tty/pty.c b/drivers/tty/pty.c
index 07394fdaf522..e2d9718dcea0 100644
--- a/drivers/tty/pty.c
+++ b/drivers/tty/pty.c
@@ -267,7 +267,9 @@ static void pty_set_termios(struct tty_struct *tty,
}
}
- tty->termios.c_cflag &= ~(CSIZE | PARENB);
+ tty->termios.c_cflag &= ~(CSIZE);
+ if (!L_EXTPROC(tty))
+ tty->termios.c_cflag &= ~(PARENB);
tty->termios.c_cflag |= (CS8 | CREAD);
}
--
2.35.3