* [PATCH 04/27] tty: make tty_operations::send_xchar accept u8 char
[not found] <20231206073712.17776-1-jirislaby@kernel.org>
@ 2023-12-06 7:36 ` Jiri Slaby (SUSE)
2023-12-06 8:27 ` Geert Uytterhoeven
2023-12-07 14:09 ` Ulf Hansson
0 siblings, 2 replies; 3+ messages in thread
From: Jiri Slaby (SUSE) @ 2023-12-06 7:36 UTC (permalink / raw)
To: gregkh
Cc: linux-serial, linux-kernel, Jiri Slaby (SUSE), Karsten Keil,
Ulf Hansson, Marcel Holtmann, Johan Hedberg,
Luiz Augusto von Dentz, netdev, linux-mmc, linux-bluetooth
tty_operations::send_xchar is one of the last users of 'char' type for
characters in the tty layer. Convert it to u8 now.
Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Cc: Karsten Keil <isdn@linux-pingi.de>
Cc: Ulf Hansson <ulf.hansson@linaro.org>
Cc: Marcel Holtmann <marcel@holtmann.org>
Cc: Johan Hedberg <johan.hedberg@gmail.com>
Cc: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
Cc: netdev@vger.kernel.org
Cc: linux-mmc@vger.kernel.org
Cc: linux-bluetooth@vger.kernel.org
---
drivers/isdn/capi/capi.c | 4 ++--
drivers/mmc/core/sdio_uart.c | 2 +-
drivers/tty/amiserial.c | 2 +-
drivers/tty/serial/serial_core.c | 2 +-
drivers/tty/tty_io.c | 2 +-
include/linux/tty.h | 2 +-
include/linux/tty_driver.h | 4 ++--
net/bluetooth/rfcomm/tty.c | 2 +-
8 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/drivers/isdn/capi/capi.c b/drivers/isdn/capi/capi.c
index 2f3789515445..6e80d7bd3c4d 100644
--- a/drivers/isdn/capi/capi.c
+++ b/drivers/isdn/capi/capi.c
@@ -1231,9 +1231,9 @@ static void capinc_tty_hangup(struct tty_struct *tty)
tty_port_hangup(&mp->port);
}
-static void capinc_tty_send_xchar(struct tty_struct *tty, char ch)
+static void capinc_tty_send_xchar(struct tty_struct *tty, u8 ch)
{
- pr_debug("capinc_tty_send_xchar(%d)\n", ch);
+ pr_debug("capinc_tty_send_xchar(%u)\n", ch);
}
static const struct tty_operations capinc_ops = {
diff --git a/drivers/mmc/core/sdio_uart.c b/drivers/mmc/core/sdio_uart.c
index a05322f15771..370fadf1d6d1 100644
--- a/drivers/mmc/core/sdio_uart.c
+++ b/drivers/mmc/core/sdio_uart.c
@@ -792,7 +792,7 @@ static unsigned int sdio_uart_chars_in_buffer(struct tty_struct *tty)
return kfifo_len(&port->xmit_fifo);
}
-static void sdio_uart_send_xchar(struct tty_struct *tty, char ch)
+static void sdio_uart_send_xchar(struct tty_struct *tty, u8 ch)
{
struct sdio_uart_port *port = tty->driver_data;
diff --git a/drivers/tty/amiserial.c b/drivers/tty/amiserial.c
index a80f059f77bf..a30dc054ffbf 100644
--- a/drivers/tty/amiserial.c
+++ b/drivers/tty/amiserial.c
@@ -811,7 +811,7 @@ static void rs_flush_buffer(struct tty_struct *tty)
* This function is used to send a high-priority XON/XOFF character to
* the device
*/
-static void rs_send_xchar(struct tty_struct *tty, char ch)
+static void rs_send_xchar(struct tty_struct *tty, u8 ch)
{
struct serial_state *info = tty->driver_data;
unsigned long flags;
diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
index 0393853b9947..80085b151b34 100644
--- a/drivers/tty/serial/serial_core.c
+++ b/drivers/tty/serial/serial_core.c
@@ -687,7 +687,7 @@ EXPORT_SYMBOL_GPL(uart_xchar_out);
* This function is used to send a high-priority XON/XOFF character to
* the device
*/
-static void uart_send_xchar(struct tty_struct *tty, char ch)
+static void uart_send_xchar(struct tty_struct *tty, u8 ch)
{
struct uart_state *state = tty->driver_data;
struct uart_port *port;
diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c
index 005d91c63707..6a502110da61 100644
--- a/drivers/tty/tty_io.c
+++ b/drivers/tty/tty_io.c
@@ -1149,7 +1149,7 @@ ssize_t redirected_tty_write(struct kiocb *iocb, struct iov_iter *iter)
*
* Locking: none for xchar method, write ordering for write method.
*/
-int tty_send_xchar(struct tty_struct *tty, char ch)
+int tty_send_xchar(struct tty_struct *tty, u8 ch)
{
bool was_stopped = tty->flow.stopped;
diff --git a/include/linux/tty.h b/include/linux/tty.h
index e96c85f4f91e..d3bedcc08738 100644
--- a/include/linux/tty.h
+++ b/include/linux/tty.h
@@ -410,7 +410,7 @@ void tty_wait_until_sent(struct tty_struct *tty, long timeout);
void stop_tty(struct tty_struct *tty);
void start_tty(struct tty_struct *tty);
void tty_write_message(struct tty_struct *tty, char *msg);
-int tty_send_xchar(struct tty_struct *tty, char ch);
+int tty_send_xchar(struct tty_struct *tty, u8 ch);
int tty_put_char(struct tty_struct *tty, unsigned char c);
unsigned int tty_chars_in_buffer(struct tty_struct *tty);
unsigned int tty_write_room(struct tty_struct *tty);
diff --git a/include/linux/tty_driver.h b/include/linux/tty_driver.h
index f428c1b784a2..7372124fbf90 100644
--- a/include/linux/tty_driver.h
+++ b/include/linux/tty_driver.h
@@ -242,7 +242,7 @@ struct serial_struct;
* Optional: If not provided, the device is assumed to have no FIFO.
* Usually correct to invoke via tty_wait_until_sent(). May sleep.
*
- * @send_xchar: ``void ()(struct tty_struct *tty, char ch)``
+ * @send_xchar: ``void ()(struct tty_struct *tty, u8 ch)``
*
* This routine is used to send a high-priority XON/XOFF character (@ch)
* to the @tty device.
@@ -374,7 +374,7 @@ struct tty_operations {
void (*flush_buffer)(struct tty_struct *tty);
void (*set_ldisc)(struct tty_struct *tty);
void (*wait_until_sent)(struct tty_struct *tty, int timeout);
- void (*send_xchar)(struct tty_struct *tty, char ch);
+ void (*send_xchar)(struct tty_struct *tty, u8 ch);
int (*tiocmget)(struct tty_struct *tty);
int (*tiocmset)(struct tty_struct *tty,
unsigned int set, unsigned int clear);
diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c
index 94ec913dfb76..69c75c041fe1 100644
--- a/net/bluetooth/rfcomm/tty.c
+++ b/net/bluetooth/rfcomm/tty.c
@@ -1041,7 +1041,7 @@ static void rfcomm_tty_flush_buffer(struct tty_struct *tty)
tty_wakeup(tty);
}
-static void rfcomm_tty_send_xchar(struct tty_struct *tty, char ch)
+static void rfcomm_tty_send_xchar(struct tty_struct *tty, u8 ch)
{
BT_DBG("tty %p ch %c", tty, ch);
}
--
2.43.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 04/27] tty: make tty_operations::send_xchar accept u8 char
2023-12-06 7:36 ` [PATCH 04/27] tty: make tty_operations::send_xchar accept u8 char Jiri Slaby (SUSE)
@ 2023-12-06 8:27 ` Geert Uytterhoeven
2023-12-07 14:09 ` Ulf Hansson
1 sibling, 0 replies; 3+ messages in thread
From: Geert Uytterhoeven @ 2023-12-06 8:27 UTC (permalink / raw)
To: Jiri Slaby (SUSE)
Cc: gregkh, linux-serial, linux-kernel, Karsten Keil, Ulf Hansson,
Marcel Holtmann, Johan Hedberg, Luiz Augusto von Dentz, netdev,
linux-mmc, linux-bluetooth, linux-m68k
CC linux-m68k
On Wed, Dec 6, 2023 at 8:37 AM Jiri Slaby (SUSE) <jirislaby@kernel.org> wrote:
> tty_operations::send_xchar is one of the last users of 'char' type for
> characters in the tty layer. Convert it to u8 now.
>
> Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
> drivers/tty/amiserial.c | 2 +-
Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
> --- a/drivers/tty/amiserial.c
> +++ b/drivers/tty/amiserial.c
> @@ -811,7 +811,7 @@ static void rs_flush_buffer(struct tty_struct *tty)
> * This function is used to send a high-priority XON/XOFF character to
> * the device
> */
> -static void rs_send_xchar(struct tty_struct *tty, char ch)
> +static void rs_send_xchar(struct tty_struct *tty, u8 ch)
> {
> struct serial_state *info = tty->driver_data;
> unsigned long flags;
Looks like this might fix an actual (harmless?) bug, if anyone evers
configures a VSTOP or VSTART character with bit 7 set?
info->x_char = ch; // x_char is int, hence sign-extended
transmit_chars() does:
amiga_custom.serdat = info->x_char | 0x100;
which will inadvertently have all high bits sets, including the bit
9, which is only used if PARENB is enabled. But as it looks like
PARENB handling is broken in amiseral anyway, this doesn't matter
much...
include/linux/tty.h:#define STOP_CHAR(tty) ((tty)->termios.c_cc[VSTOP])
include/linux/tty.h:#define START_CHAR(tty) ((tty)->termios.c_cc[VSTART])
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH 04/27] tty: make tty_operations::send_xchar accept u8 char
2023-12-06 7:36 ` [PATCH 04/27] tty: make tty_operations::send_xchar accept u8 char Jiri Slaby (SUSE)
2023-12-06 8:27 ` Geert Uytterhoeven
@ 2023-12-07 14:09 ` Ulf Hansson
1 sibling, 0 replies; 3+ messages in thread
From: Ulf Hansson @ 2023-12-07 14:09 UTC (permalink / raw)
To: Jiri Slaby (SUSE)
Cc: gregkh, linux-serial, linux-kernel, Karsten Keil, Marcel Holtmann,
Johan Hedberg, Luiz Augusto von Dentz, netdev, linux-mmc,
linux-bluetooth
On Wed, 6 Dec 2023 at 08:37, Jiri Slaby (SUSE) <jirislaby@kernel.org> wrote:
>
> tty_operations::send_xchar is one of the last users of 'char' type for
> characters in the tty layer. Convert it to u8 now.
>
> Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
> Cc: Karsten Keil <isdn@linux-pingi.de>
> Cc: Ulf Hansson <ulf.hansson@linaro.org>
> Cc: Marcel Holtmann <marcel@holtmann.org>
> Cc: Johan Hedberg <johan.hedberg@gmail.com>
> Cc: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
> Cc: netdev@vger.kernel.org
> Cc: linux-mmc@vger.kernel.org
> Cc: linux-bluetooth@vger.kernel.org
Acked-by: Ulf Hansson <ulf.hansson@linaro.org> # For MMC
Kind regards
Uffe
> ---
> drivers/isdn/capi/capi.c | 4 ++--
> drivers/mmc/core/sdio_uart.c | 2 +-
> drivers/tty/amiserial.c | 2 +-
> drivers/tty/serial/serial_core.c | 2 +-
> drivers/tty/tty_io.c | 2 +-
> include/linux/tty.h | 2 +-
> include/linux/tty_driver.h | 4 ++--
> net/bluetooth/rfcomm/tty.c | 2 +-
> 8 files changed, 10 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/isdn/capi/capi.c b/drivers/isdn/capi/capi.c
> index 2f3789515445..6e80d7bd3c4d 100644
> --- a/drivers/isdn/capi/capi.c
> +++ b/drivers/isdn/capi/capi.c
> @@ -1231,9 +1231,9 @@ static void capinc_tty_hangup(struct tty_struct *tty)
> tty_port_hangup(&mp->port);
> }
>
> -static void capinc_tty_send_xchar(struct tty_struct *tty, char ch)
> +static void capinc_tty_send_xchar(struct tty_struct *tty, u8 ch)
> {
> - pr_debug("capinc_tty_send_xchar(%d)\n", ch);
> + pr_debug("capinc_tty_send_xchar(%u)\n", ch);
> }
>
> static const struct tty_operations capinc_ops = {
> diff --git a/drivers/mmc/core/sdio_uart.c b/drivers/mmc/core/sdio_uart.c
> index a05322f15771..370fadf1d6d1 100644
> --- a/drivers/mmc/core/sdio_uart.c
> +++ b/drivers/mmc/core/sdio_uart.c
> @@ -792,7 +792,7 @@ static unsigned int sdio_uart_chars_in_buffer(struct tty_struct *tty)
> return kfifo_len(&port->xmit_fifo);
> }
>
> -static void sdio_uart_send_xchar(struct tty_struct *tty, char ch)
> +static void sdio_uart_send_xchar(struct tty_struct *tty, u8 ch)
> {
> struct sdio_uart_port *port = tty->driver_data;
>
> diff --git a/drivers/tty/amiserial.c b/drivers/tty/amiserial.c
> index a80f059f77bf..a30dc054ffbf 100644
> --- a/drivers/tty/amiserial.c
> +++ b/drivers/tty/amiserial.c
> @@ -811,7 +811,7 @@ static void rs_flush_buffer(struct tty_struct *tty)
> * This function is used to send a high-priority XON/XOFF character to
> * the device
> */
> -static void rs_send_xchar(struct tty_struct *tty, char ch)
> +static void rs_send_xchar(struct tty_struct *tty, u8 ch)
> {
> struct serial_state *info = tty->driver_data;
> unsigned long flags;
> diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
> index 0393853b9947..80085b151b34 100644
> --- a/drivers/tty/serial/serial_core.c
> +++ b/drivers/tty/serial/serial_core.c
> @@ -687,7 +687,7 @@ EXPORT_SYMBOL_GPL(uart_xchar_out);
> * This function is used to send a high-priority XON/XOFF character to
> * the device
> */
> -static void uart_send_xchar(struct tty_struct *tty, char ch)
> +static void uart_send_xchar(struct tty_struct *tty, u8 ch)
> {
> struct uart_state *state = tty->driver_data;
> struct uart_port *port;
> diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c
> index 005d91c63707..6a502110da61 100644
> --- a/drivers/tty/tty_io.c
> +++ b/drivers/tty/tty_io.c
> @@ -1149,7 +1149,7 @@ ssize_t redirected_tty_write(struct kiocb *iocb, struct iov_iter *iter)
> *
> * Locking: none for xchar method, write ordering for write method.
> */
> -int tty_send_xchar(struct tty_struct *tty, char ch)
> +int tty_send_xchar(struct tty_struct *tty, u8 ch)
> {
> bool was_stopped = tty->flow.stopped;
>
> diff --git a/include/linux/tty.h b/include/linux/tty.h
> index e96c85f4f91e..d3bedcc08738 100644
> --- a/include/linux/tty.h
> +++ b/include/linux/tty.h
> @@ -410,7 +410,7 @@ void tty_wait_until_sent(struct tty_struct *tty, long timeout);
> void stop_tty(struct tty_struct *tty);
> void start_tty(struct tty_struct *tty);
> void tty_write_message(struct tty_struct *tty, char *msg);
> -int tty_send_xchar(struct tty_struct *tty, char ch);
> +int tty_send_xchar(struct tty_struct *tty, u8 ch);
> int tty_put_char(struct tty_struct *tty, unsigned char c);
> unsigned int tty_chars_in_buffer(struct tty_struct *tty);
> unsigned int tty_write_room(struct tty_struct *tty);
> diff --git a/include/linux/tty_driver.h b/include/linux/tty_driver.h
> index f428c1b784a2..7372124fbf90 100644
> --- a/include/linux/tty_driver.h
> +++ b/include/linux/tty_driver.h
> @@ -242,7 +242,7 @@ struct serial_struct;
> * Optional: If not provided, the device is assumed to have no FIFO.
> * Usually correct to invoke via tty_wait_until_sent(). May sleep.
> *
> - * @send_xchar: ``void ()(struct tty_struct *tty, char ch)``
> + * @send_xchar: ``void ()(struct tty_struct *tty, u8 ch)``
> *
> * This routine is used to send a high-priority XON/XOFF character (@ch)
> * to the @tty device.
> @@ -374,7 +374,7 @@ struct tty_operations {
> void (*flush_buffer)(struct tty_struct *tty);
> void (*set_ldisc)(struct tty_struct *tty);
> void (*wait_until_sent)(struct tty_struct *tty, int timeout);
> - void (*send_xchar)(struct tty_struct *tty, char ch);
> + void (*send_xchar)(struct tty_struct *tty, u8 ch);
> int (*tiocmget)(struct tty_struct *tty);
> int (*tiocmset)(struct tty_struct *tty,
> unsigned int set, unsigned int clear);
> diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c
> index 94ec913dfb76..69c75c041fe1 100644
> --- a/net/bluetooth/rfcomm/tty.c
> +++ b/net/bluetooth/rfcomm/tty.c
> @@ -1041,7 +1041,7 @@ static void rfcomm_tty_flush_buffer(struct tty_struct *tty)
> tty_wakeup(tty);
> }
>
> -static void rfcomm_tty_send_xchar(struct tty_struct *tty, char ch)
> +static void rfcomm_tty_send_xchar(struct tty_struct *tty, u8 ch)
> {
> BT_DBG("tty %p ch %c", tty, ch);
> }
> --
> 2.43.0
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-12-07 14:09 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20231206073712.17776-1-jirislaby@kernel.org>
2023-12-06 7:36 ` [PATCH 04/27] tty: make tty_operations::send_xchar accept u8 char Jiri Slaby (SUSE)
2023-12-06 8:27 ` Geert Uytterhoeven
2023-12-07 14:09 ` Ulf Hansson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).