mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 02:24:24 +02:00
serial: serial_core: simplify uart_ioctl() returns
Neither uart_do_autoconfig(), nor uart_wait_modem_status() can return -ENOIOCTLCMD. The ENOIOCTLCMD checks are there to check if 'cmd' matched against TIOCSERCONFIG, and TIOCMIWAIT respectively. (With 0 or error in 'ret', it does not matter.) Therefore, the code can simply return from the TIOCSERCONFIG and TIOCMIWAIT spots immediately. To be more explicit, use 'if' instead of switch-case for those single values. And return without jumping to the 'out' label -- it can be removed too. Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org> Link: https://patch.msgid.link/20251119100140.830761-10-jirislaby@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
dee7e10498
commit
f374a33e90
|
|
@ -1560,37 +1560,20 @@ uart_ioctl(struct tty_struct *tty, unsigned int cmd, unsigned long arg)
|
|||
void __user *uarg = (void __user *)arg;
|
||||
int ret = -ENOIOCTLCMD;
|
||||
|
||||
|
||||
/*
|
||||
* These ioctls don't rely on the hardware to be present.
|
||||
*/
|
||||
switch (cmd) {
|
||||
case TIOCSERCONFIG:
|
||||
/* This ioctl doesn't rely on the hardware to be present. */
|
||||
if (cmd == TIOCSERCONFIG) {
|
||||
down_write(&tty->termios_rwsem);
|
||||
ret = uart_do_autoconfig(tty, state);
|
||||
up_write(&tty->termios_rwsem);
|
||||
break;
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (ret != -ENOIOCTLCMD)
|
||||
goto out;
|
||||
if (tty_io_error(tty))
|
||||
return -EIO;
|
||||
|
||||
if (tty_io_error(tty)) {
|
||||
ret = -EIO;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/*
|
||||
* The following should only be used when hardware is present.
|
||||
*/
|
||||
switch (cmd) {
|
||||
case TIOCMIWAIT:
|
||||
ret = uart_wait_modem_status(state, arg);
|
||||
break;
|
||||
}
|
||||
|
||||
if (ret != -ENOIOCTLCMD)
|
||||
goto out;
|
||||
/* This should only be used when the hardware is present. */
|
||||
if (cmd == TIOCMIWAIT)
|
||||
return uart_wait_modem_status(state, arg);
|
||||
|
||||
/* rs485_config requires more locking than others */
|
||||
if (cmd == TIOCSRS485)
|
||||
|
|
@ -1638,7 +1621,7 @@ uart_ioctl(struct tty_struct *tty, unsigned int cmd, unsigned long arg)
|
|||
mutex_unlock(&port->mutex);
|
||||
if (cmd == TIOCSRS485)
|
||||
up_write(&tty->termios_rwsem);
|
||||
out:
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user