mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 10:00:17 +00:00
serial: fix TIOCSRS485 locking
commit9e4f2a8004upstream. The RS485 multipoint addressing support for some reason added a new ADDRB termios cflag which is (only!) updated from one of the RS485 ioctls. Make sure to take the termios rw semaphore for the right ioctl (i.e. set, not get). Fixes:ae50bb2752("serial: take termios_rwsem for ->rs485_config() & pass termios as param") Cc: stable@vger.kernel.org # 6.0 Cc: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Johan Hovold <johan@kernel.org> Link: https://lore.kernel.org/r/20230412124811.11217-1-johan@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
1a82446d40
commit
deb309ffda
@@ -1552,7 +1552,7 @@ uart_ioctl(struct tty_struct *tty, unsigned int cmd, unsigned long arg)
|
||||
goto out;
|
||||
|
||||
/* rs485_config requires more locking than others */
|
||||
if (cmd == TIOCGRS485)
|
||||
if (cmd == TIOCSRS485)
|
||||
down_write(&tty->termios_rwsem);
|
||||
|
||||
mutex_lock(&port->mutex);
|
||||
@@ -1595,7 +1595,7 @@ uart_ioctl(struct tty_struct *tty, unsigned int cmd, unsigned long arg)
|
||||
}
|
||||
out_up:
|
||||
mutex_unlock(&port->mutex);
|
||||
if (cmd == TIOCGRS485)
|
||||
if (cmd == TIOCSRS485)
|
||||
up_write(&tty->termios_rwsem);
|
||||
out:
|
||||
return ret;
|
||||
|
||||
Reference in New Issue
Block a user