Commit e6d34ced authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'tty-6.5-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty

Pull tty/serial fixes from Greg KH:
 "Here are some small TTY and serial driver fixes for 6.5-rc4 for some
  reported problems. Included in here is:

   - TIOCSTI fix for braille readers

   - documentation fix for minor numbers

   - MAINTAINERS update for new serial files in -rc1

   - minor serial driver fixes for reported problems

  All of these have been in linux-next with no reported problems"

* tag 'tty-6.5-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
  serial: 8250_dw: Preserve original value of DLF register
  tty: serial: sh-sci: Fix sleeping in atomic context
  serial: sifive: Fix sifive_serial_console_setup() section
  Documentation: devices.txt: reconcile serial/ucc_uart minor numers
  MAINTAINERS: Update TTY layer for lists and recently added files
  tty: n_gsm: fix UAF in gsm_cleanup_mux
  TIOCSTI: always enable for CAP_SYS_ADMIN
parents 3d6b77a8 748c5ea8
...@@ -2691,7 +2691,7 @@ ...@@ -2691,7 +2691,7 @@
45 = /dev/ttyMM1 Marvell MPSC - port 1 (obsolete unused) 45 = /dev/ttyMM1 Marvell MPSC - port 1 (obsolete unused)
46 = /dev/ttyCPM0 PPC CPM (SCC or SMC) - port 0 46 = /dev/ttyCPM0 PPC CPM (SCC or SMC) - port 0
... ...
47 = /dev/ttyCPM5 PPC CPM (SCC or SMC) - port 5 49 = /dev/ttyCPM5 PPC CPM (SCC or SMC) - port 3
50 = /dev/ttyIOC0 Altix serial card 50 = /dev/ttyIOC0 Altix serial card
... ...
81 = /dev/ttyIOC31 Altix serial card 81 = /dev/ttyIOC31 Altix serial card
......
...@@ -21643,11 +21643,17 @@ F: Documentation/translations/zh_TW/ ...@@ -21643,11 +21643,17 @@ F: Documentation/translations/zh_TW/
TTY LAYER TTY LAYER
M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
M: Jiri Slaby <jirislaby@kernel.org> M: Jiri Slaby <jirislaby@kernel.org>
L: linux-kernel@vger.kernel.org
L: linux-serial@vger.kernel.org
S: Supported S: Supported
T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git
F: Documentation/driver-api/serial/ F: Documentation/driver-api/serial/
F: drivers/tty/ F: drivers/tty/
F: drivers/tty/serial/serial_base.h
F: drivers/tty/serial/serial_base_bus.c
F: drivers/tty/serial/serial_core.c F: drivers/tty/serial/serial_core.c
F: drivers/tty/serial/serial_ctrl.c
F: drivers/tty/serial/serial_port.c
F: include/linux/selection.h F: include/linux/selection.h
F: include/linux/serial.h F: include/linux/serial.h
F: include/linux/serial_core.h F: include/linux/serial_core.h
......
...@@ -3070,8 +3070,10 @@ static void gsm_cleanup_mux(struct gsm_mux *gsm, bool disc) ...@@ -3070,8 +3070,10 @@ static void gsm_cleanup_mux(struct gsm_mux *gsm, bool disc)
gsm->has_devices = false; gsm->has_devices = false;
} }
for (i = NUM_DLCI - 1; i >= 0; i--) for (i = NUM_DLCI - 1; i >= 0; i--)
if (gsm->dlci[i]) if (gsm->dlci[i]) {
gsm_dlci_release(gsm->dlci[i]); gsm_dlci_release(gsm->dlci[i]);
gsm->dlci[i] = NULL;
}
mutex_unlock(&gsm->mutex); mutex_unlock(&gsm->mutex);
/* Now wipe the queues */ /* Now wipe the queues */
tty_ldisc_flush(gsm->tty); tty_ldisc_flush(gsm->tty);
......
...@@ -244,7 +244,7 @@ void dw8250_setup_port(struct uart_port *p) ...@@ -244,7 +244,7 @@ void dw8250_setup_port(struct uart_port *p)
struct dw8250_port_data *pd = p->private_data; struct dw8250_port_data *pd = p->private_data;
struct dw8250_data *data = to_dw8250_data(pd); struct dw8250_data *data = to_dw8250_data(pd);
struct uart_8250_port *up = up_to_u8250p(p); struct uart_8250_port *up = up_to_u8250p(p);
u32 reg; u32 reg, old_dlf;
pd->hw_rs485_support = dw8250_detect_rs485_hw(p); pd->hw_rs485_support = dw8250_detect_rs485_hw(p);
if (pd->hw_rs485_support) { if (pd->hw_rs485_support) {
...@@ -270,9 +270,11 @@ void dw8250_setup_port(struct uart_port *p) ...@@ -270,9 +270,11 @@ void dw8250_setup_port(struct uart_port *p)
dev_dbg(p->dev, "Designware UART version %c.%c%c\n", dev_dbg(p->dev, "Designware UART version %c.%c%c\n",
(reg >> 24) & 0xff, (reg >> 16) & 0xff, (reg >> 8) & 0xff); (reg >> 24) & 0xff, (reg >> 16) & 0xff, (reg >> 8) & 0xff);
/* Preserve value written by firmware or bootloader */
old_dlf = dw8250_readl_ext(p, DW_UART_DLF);
dw8250_writel_ext(p, DW_UART_DLF, ~0U); dw8250_writel_ext(p, DW_UART_DLF, ~0U);
reg = dw8250_readl_ext(p, DW_UART_DLF); reg = dw8250_readl_ext(p, DW_UART_DLF);
dw8250_writel_ext(p, DW_UART_DLF, 0); dw8250_writel_ext(p, DW_UART_DLF, old_dlf);
if (reg) { if (reg) {
pd->dlf_size = fls(reg); pd->dlf_size = fls(reg);
......
...@@ -590,7 +590,7 @@ static void sci_start_tx(struct uart_port *port) ...@@ -590,7 +590,7 @@ static void sci_start_tx(struct uart_port *port)
dma_submit_error(s->cookie_tx)) { dma_submit_error(s->cookie_tx)) {
if (s->cfg->regtype == SCIx_RZ_SCIFA_REGTYPE) if (s->cfg->regtype == SCIx_RZ_SCIFA_REGTYPE)
/* Switch irq from SCIF to DMA */ /* Switch irq from SCIF to DMA */
disable_irq(s->irqs[SCIx_TXI_IRQ]); disable_irq_nosync(s->irqs[SCIx_TXI_IRQ]);
s->cookie_tx = 0; s->cookie_tx = 0;
schedule_work(&s->work_tx); schedule_work(&s->work_tx);
......
...@@ -811,7 +811,7 @@ static void sifive_serial_console_write(struct console *co, const char *s, ...@@ -811,7 +811,7 @@ static void sifive_serial_console_write(struct console *co, const char *s,
local_irq_restore(flags); local_irq_restore(flags);
} }
static int __init sifive_serial_console_setup(struct console *co, char *options) static int sifive_serial_console_setup(struct console *co, char *options)
{ {
struct sifive_serial_port *ssp; struct sifive_serial_port *ssp;
int baud = SIFIVE_DEFAULT_BAUD_RATE; int baud = SIFIVE_DEFAULT_BAUD_RATE;
......
...@@ -59,7 +59,7 @@ static int firmware_loaded; ...@@ -59,7 +59,7 @@ static int firmware_loaded;
/* #define LOOPBACK */ /* #define LOOPBACK */
/* The major and minor device numbers are defined in /* The major and minor device numbers are defined in
* http://www.lanana.org/docs/device-list/devices-2.6+.txt. For the QE * Documentation/admin-guide/devices.txt. For the QE
* UART, we have major number 204 and minor numbers 46 - 49, which are the * UART, we have major number 204 and minor numbers 46 - 49, which are the
* same as for the CPM2. This decision was made because no Freescale part * same as for the CPM2. This decision was made because no Freescale part
* has both a CPM and a QE. * has both a CPM and a QE.
......
...@@ -2285,7 +2285,7 @@ static int tiocsti(struct tty_struct *tty, char __user *p) ...@@ -2285,7 +2285,7 @@ static int tiocsti(struct tty_struct *tty, char __user *p)
char ch, mbz = 0; char ch, mbz = 0;
struct tty_ldisc *ld; struct tty_ldisc *ld;
if (!tty_legacy_tiocsti) if (!tty_legacy_tiocsti && !capable(CAP_SYS_ADMIN))
return -EIO; return -EIO;
if ((current->signal->tty != tty) && !capable(CAP_SYS_ADMIN)) if ((current->signal->tty != tty) && !capable(CAP_SYS_ADMIN))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment