Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0f9b9684 authored by Jiri Slaby's avatar Jiri Slaby Committed by Greg Kroah-Hartman
Browse files

TTY: amiserial, simplify set_serial_info



Do not copy whole serial_state. We only need to know whether the speed
is to be changed. Hence store the info in advance and use it later.
A simple bool is enough.

Also remove reduntant assignments and move the tests directly to the
'if'.

Signed-off-by: default avatarJiri Slaby <jslaby@suse.cz>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 916b7656
Loading
Loading
Loading
Loading
+8 −12
Original line number Diff line number Diff line
@@ -1042,19 +1042,17 @@ static int set_serial_info(struct serial_state *state,
			   struct serial_struct __user * new_info)
{
	struct serial_struct new_serial;
	struct serial_state old_state;
	unsigned int		change_irq,change_port;
	bool change_spd;
	int 			retval = 0;

	if (copy_from_user(&new_serial,new_info,sizeof(new_serial)))
		return -EFAULT;

	tty_lock();
	old_state = *state;
  
	change_irq = new_serial.irq != state->irq;
	change_port = (new_serial.port != state->port);
	if(change_irq || change_port || (new_serial.xmit_fifo_size != state->xmit_fifo_size)) {
	change_spd = ((new_serial.flags ^ state->flags) & ASYNC_SPD_MASK) ||
		new_serial.custom_divisor != state->custom_divisor;
	if (new_serial.irq != state->irq || new_serial.port != state->port ||
			new_serial.xmit_fifo_size != state->xmit_fifo_size) {
		tty_unlock();
		return -EINVAL;
	}
@@ -1092,9 +1090,7 @@ static int set_serial_info(struct serial_state *state,

check_and_exit:
	if (state->flags & ASYNC_INITIALIZED) {
		if (((old_state.flags & ASYNC_SPD_MASK) !=
		     (state->flags & ASYNC_SPD_MASK)) ||
		    (old_state.custom_divisor != state->custom_divisor)) {
		if (change_spd) {
			if ((state->flags & ASYNC_SPD_MASK) == ASYNC_SPD_HI)
				state->tty->alt_speed = 57600;
			if ((state->flags & ASYNC_SPD_MASK) == ASYNC_SPD_VHI)