Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

tty: make everyone's write_room return >= 0

The tty line disciplines don't expect tty_operations::write_room to
return negative values. Fix the five drivers which violate this.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Link: https://lore.kernel.org/r/20210302062214.29627-44-jslaby@suse.cz
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Jiri Slaby and committed by
Greg Kroah-Hartman
6bfbfcfc 10eb63e5

+6 -6
+1 -1
drivers/staging/gdm724x/gdm_tty.c
··· 188 188 struct gdm *gdm = tty->driver_data; 189 189 190 190 if (!GDM_TTY_READY(gdm)) 191 - return -ENODEV; 191 + return 0; 192 192 193 193 return WRITE_SIZE; 194 194 }
+2 -2
drivers/tty/ipwireless/tty.c
··· 235 235 236 236 /* FIXME: Exactly how is the tty object locked here .. */ 237 237 if (!tty) 238 - return -ENODEV; 238 + return 0; 239 239 240 240 if (!tty->port.count) 241 - return -EINVAL; 241 + return 0; 242 242 243 243 room = IPWIRELESS_TX_QUEUE_SIZE - tty->tx_bytes_queued; 244 244 if (room < 0)
+1 -1
drivers/tty/n_gsm.c
··· 3048 3048 { 3049 3049 struct gsm_dlci *dlci = tty->driver_data; 3050 3050 if (dlci->state == DLCI_CLOSED) 3051 - return -EINVAL; 3051 + return 0; 3052 3052 return TX_SIZE - kfifo_len(&dlci->fifo); 3053 3053 } 3054 3054
+1 -1
drivers/tty/vcc.c
··· 878 878 port = vcc_get_ne(tty->index); 879 879 if (unlikely(!port)) { 880 880 pr_err("VCC: write_room: Failed to find VCC port\n"); 881 - return -ENODEV; 881 + return 0; 882 882 } 883 883 884 884 num = VCC_BUFF_LEN - port->chars_in_buffer;
+1 -1
drivers/usb/serial/mos7720.c
··· 1042 1042 1043 1043 mos7720_port = usb_get_serial_port_data(port); 1044 1044 if (mos7720_port == NULL) 1045 - return -ENODEV; 1045 + return 0; 1046 1046 1047 1047 /* FIXME: Locking */ 1048 1048 for (i = 0; i < NUM_URBS; ++i) {