All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jiri Slaby <jirislaby@kernel.org>
To: "Pali Rohár" <pali@kernel.org>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>
Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] serial: 8250: Fix restoring termios speed after suspend
Date: Mon, 26 Sep 2022 09:16:43 +0200	[thread overview]
Message-ID: <f61a3a55-808e-01cc-287e-d840f7948d2f@kernel.org> (raw)
In-Reply-To: <20220924104324.4035-1-pali@kernel.org>

On 24. 09. 22, 12:43, Pali Rohár wrote:
> Since commit edc6afc54968 ("tty: switch to ktermios and new framework")
> termios speed is no longer stored only in c_cflag member but also in new
> additional c_ispeed and c_ospeed members. If BOTHER flag is set in c_cflag
> then termios speed is stored only in these new members.
> 
> Since commit 027b57170bf8 ("serial: core: Fix initializing and restoring
> termios speed") termios speed is available also in struct console.
> 
> So properly restore also c_ispeed and c_ospeed members after suspend to fix
> restoring termios speed which is not represented by Bnnn constant.
> 
> Fixes: 4516d50aabed ("serial: 8250: Use canary to restart console after suspend")
> Signed-off-by: Pali Rohár <pali@kernel.org>
> ---
>   drivers/tty/serial/8250/8250_port.c | 7 ++++++-
>   1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c
> index 39b35a61958c..441f317c55af 100644
> --- a/drivers/tty/serial/8250/8250_port.c
> +++ b/drivers/tty/serial/8250/8250_port.c
> @@ -3314,8 +3314,13 @@ static void serial8250_console_restore(struct uart_8250_port *up)
>   	unsigned int baud, quot, frac = 0;
>   
>   	termios.c_cflag = port->cons->cflag;
> -	if (port->state->port.tty && termios.c_cflag == 0)
> +	termios.c_ispeed = port->cons->ispeed;
> +	termios.c_ospeed = port->cons->ospeed;
> +	if (port->state->port.tty && termios.c_cflag == 0) {

I don't currently know how safe it is to assume port->state->port.tty 
cannot change between the test above and the dereferences below.

In anyway, you should cache it as it is used 4 times now. It would make 
the code definitely more readable.

>   		termios.c_cflag = port->state->port.tty->termios.c_cflag;
> +		termios.c_ispeed = port->state->port.tty->termios.c_ispeed;
> +		termios.c_ospeed = port->state->port.tty->termios.c_ospeed;
> +	}
>   
>   	baud = serial8250_get_baud_rate(port, &termios, NULL);
>   	quot = serial8250_get_divisor(port, baud, &frac);

-- 
js
suse labs


      reply	other threads:[~2022-09-26  7:16 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-24 10:43 [PATCH] serial: 8250: Fix restoring termios speed after suspend Pali Rohár
2022-09-26  7:16 ` Jiri Slaby [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f61a3a55-808e-01cc-287e-d840f7948d2f@kernel.org \
    --to=jirislaby@kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=pali@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.