Message ID | 20231206073712.17776-5-jirislaby@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | None | expand |
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
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 >
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); }
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(-)