Linux kernel -stable discussions
 help / color / mirror / Atom feed
* [PATCH v2 1/2] serial: sifive: lock port in startup()/shutdown() callbacks
       [not found] <20250330003058.386447-1-ryotkkr98@gmail.com>
@ 2025-03-30  0:35 ` Ryo Takakura
  2025-03-30  0:38   ` kernel test robot
  0 siblings, 1 reply; 5+ messages in thread
From: Ryo Takakura @ 2025-03-30  0:35 UTC (permalink / raw)
  To: alex, aou, gregkh, jirislaby, john.ogness, palmer, paul.walmsley,
	pmladek, samuel.holland, bigeasy, conor.dooley, u.kleine-koenig
  Cc: linux-kernel, linux-riscv, linux-serial, stable, Ryo Takakura

startup()/shutdown() callbacks access SIFIVE_SERIAL_IE_OFFS.
The register is also accessed from write() callback.

If console were printing and startup()/shutdown() callback
gets called, its access to the register could be overwritten.

Add port->lock to startup()/shutdown() callbacks to make sure
their access to SIFIVE_SERIAL_IE_OFFS is synchronized against
write() callback.

Signed-off-by: Ryo Takakura <ryotkkr98@gmail.com>
---
 drivers/tty/serial/sifive.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/tty/serial/sifive.c b/drivers/tty/serial/sifive.c
index 5904a2d4c..054a8e630 100644
--- a/drivers/tty/serial/sifive.c
+++ b/drivers/tty/serial/sifive.c
@@ -563,8 +563,11 @@ static void sifive_serial_break_ctl(struct uart_port *port, int break_state)
 static int sifive_serial_startup(struct uart_port *port)
 {
 	struct sifive_serial_port *ssp = port_to_sifive_serial_port(port);
+	unsigned long flags;
 
+	uart_port_lock_irqsave(&ssp->port, &flags);
 	__ssp_enable_rxwm(ssp);
+	uart_port_unlock_irqrestore(&ssp->port, flags);
 
 	return 0;
 }
@@ -572,9 +575,12 @@ static int sifive_serial_startup(struct uart_port *port)
 static void sifive_serial_shutdown(struct uart_port *port)
 {
 	struct sifive_serial_port *ssp = port_to_sifive_serial_port(port);
+	unsigned long flags;
 
+	uart_port_lock_irqsave(&ssp->port, &flags);
 	__ssp_disable_rxwm(ssp);
 	__ssp_disable_txwm(ssp);
+	uart_port_unlock_irqrestore(&ssp->port, flags);
 }
 
 /**
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 1/2] serial: sifive: lock port in startup()/shutdown() callbacks
  2025-03-30  0:35 ` [PATCH v2 1/2] serial: sifive: lock port in startup()/shutdown() callbacks Ryo Takakura
@ 2025-03-30  0:38   ` kernel test robot
  2025-03-30  1:16     ` Ryo Takakura
  0 siblings, 1 reply; 5+ messages in thread
From: kernel test robot @ 2025-03-30  0:38 UTC (permalink / raw)
  To: Ryo Takakura; +Cc: stable, oe-kbuild-all

Hi,

Thanks for your patch.

FYI: kernel test robot notices the stable kernel rule is not satisfied.

The check is based on https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html#option-1

Rule: add the tag "Cc: stable@vger.kernel.org" in the sign-off area to have the patch automatically included in the stable tree.
Subject: [PATCH v2 1/2] serial: sifive: lock port in startup()/shutdown() callbacks
Link: https://lore.kernel.org/stable/20250330003522.386632-1-ryotkkr98%40gmail.com

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki




^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 1/2] serial: sifive: lock port in startup()/shutdown() callbacks
  2025-03-30  0:38   ` kernel test robot
@ 2025-03-30  1:16     ` Ryo Takakura
  2025-03-30  7:30       ` Greg KH
  0 siblings, 1 reply; 5+ messages in thread
From: Ryo Takakura @ 2025-03-30  1:16 UTC (permalink / raw)
  To: alex, aou, gregkh, jirislaby, john.ogness, palmer, paul.walmsley,
	pmladek, samuel.holland, bigeasy, conor.dooley, u.kleine-koenig,
	lkp
  Cc: linux-kernel, linux-riscv, linux-serial, stable, oe-kbuild-all,
	Ryo Takakura

startup()/shutdown() callbacks access SIFIVE_SERIAL_IE_OFFS.
The register is also accessed from write() callback.

If console were printing and startup()/shutdown() callback
gets called, its access to the register could be overwritten.

Add port->lock to startup()/shutdown() callbacks to make sure
their access to SIFIVE_SERIAL_IE_OFFS is synchronized against
write() callback.

Signed-off-by: Ryo Takakura <ryotkkr98@gmail.com>
Cc: stable@vger.kernel.org
---

Hi,

I'm sorry that I wasn't aware of how Cc stable should be done. 

I added Cc for stable but please tell me if this patch should be
resent or if there is any that is missing.

Sincerely,
Ryo Takakura

---
 drivers/tty/serial/sifive.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/tty/serial/sifive.c b/drivers/tty/serial/sifive.c
index 5904a2d4c..054a8e630 100644
--- a/drivers/tty/serial/sifive.c
+++ b/drivers/tty/serial/sifive.c
@@ -563,8 +563,11 @@ static void sifive_serial_break_ctl(struct uart_port *port, int break_state)
 static int sifive_serial_startup(struct uart_port *port)
 {
 	struct sifive_serial_port *ssp = port_to_sifive_serial_port(port);
+	unsigned long flags;
 
+	uart_port_lock_irqsave(&ssp->port, &flags);
 	__ssp_enable_rxwm(ssp);
+	uart_port_unlock_irqrestore(&ssp->port, flags);
 
 	return 0;
 }
@@ -572,9 +575,12 @@ static int sifive_serial_startup(struct uart_port *port)
 static void sifive_serial_shutdown(struct uart_port *port)
 {
 	struct sifive_serial_port *ssp = port_to_sifive_serial_port(port);
+	unsigned long flags;
 
+	uart_port_lock_irqsave(&ssp->port, &flags);
 	__ssp_disable_rxwm(ssp);
 	__ssp_disable_txwm(ssp);
+	uart_port_unlock_irqrestore(&ssp->port, flags);
 }
 
 /**
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 1/2] serial: sifive: lock port in startup()/shutdown() callbacks
  2025-03-30  1:16     ` Ryo Takakura
@ 2025-03-30  7:30       ` Greg KH
  2025-03-30 10:51         ` Ryo Takakura
  0 siblings, 1 reply; 5+ messages in thread
From: Greg KH @ 2025-03-30  7:30 UTC (permalink / raw)
  To: Ryo Takakura
  Cc: alex, aou, jirislaby, john.ogness, palmer, paul.walmsley, pmladek,
	samuel.holland, bigeasy, conor.dooley, u.kleine-koenig, lkp,
	linux-kernel, linux-riscv, linux-serial, stable, oe-kbuild-all

On Sun, Mar 30, 2025 at 10:16:10AM +0900, Ryo Takakura wrote:
> startup()/shutdown() callbacks access SIFIVE_SERIAL_IE_OFFS.
> The register is also accessed from write() callback.
> 
> If console were printing and startup()/shutdown() callback
> gets called, its access to the register could be overwritten.
> 
> Add port->lock to startup()/shutdown() callbacks to make sure
> their access to SIFIVE_SERIAL_IE_OFFS is synchronized against
> write() callback.
> 
> Signed-off-by: Ryo Takakura <ryotkkr98@gmail.com>
> Cc: stable@vger.kernel.org
> ---
> 
> Hi,
> 
> I'm sorry that I wasn't aware of how Cc stable should be done. 
> 
> I added Cc for stable but please tell me if this patch should be
> resent or if there is any that is missing.

Please resend a v3.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 1/2] serial: sifive: lock port in startup()/shutdown() callbacks
  2025-03-30  7:30       ` Greg KH
@ 2025-03-30 10:51         ` Ryo Takakura
  0 siblings, 0 replies; 5+ messages in thread
From: Ryo Takakura @ 2025-03-30 10:51 UTC (permalink / raw)
  To: gregkh
  Cc: alex, aou, bigeasy, conor.dooley, jirislaby, john.ogness,
	linux-kernel, linux-riscv, linux-serial, lkp, oe-kbuild-all,
	palmer, paul.walmsley, pmladek, ryotkkr98, samuel.holland, stable,
	u.kleine-koenig

Hi Greg,

On Sun, 30 Mar 2025 09:30:27 +0200, Greg KH wrote:
>On Sun, Mar 30, 2025 at 10:16:10AM +0900, Ryo Takakura wrote:
>> startup()/shutdown() callbacks access SIFIVE_SERIAL_IE_OFFS.
>> The register is also accessed from write() callback.
>> 
>> If console were printing and startup()/shutdown() callback
>> gets called, its access to the register could be overwritten.
>> 
>> Add port->lock to startup()/shutdown() callbacks to make sure
>> their access to SIFIVE_SERIAL_IE_OFFS is synchronized against
>> write() callback.
>> 
>> Signed-off-by: Ryo Takakura <ryotkkr98@gmail.com>
>> Cc: stable@vger.kernel.org
>> ---
>> 
>> Hi,
>> 
>> I'm sorry that I wasn't aware of how Cc stable should be done. 
>> 
>> I added Cc for stable but please tell me if this patch should be
>> resent or if there is any that is missing.
>
>Please resend a v3.

Ok. I'll send v3 shortly ;)

Sincerely,
Ryo Takakura

>thanks,
>
>greg k-h

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2025-03-30 10:51 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20250330003058.386447-1-ryotkkr98@gmail.com>
2025-03-30  0:35 ` [PATCH v2 1/2] serial: sifive: lock port in startup()/shutdown() callbacks Ryo Takakura
2025-03-30  0:38   ` kernel test robot
2025-03-30  1:16     ` Ryo Takakura
2025-03-30  7:30       ` Greg KH
2025-03-30 10:51         ` Ryo Takakura

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox