2015-07-30 22:54:43

by John Ogness

[permalink] [raw]
Subject: [PATCH 2/3] serial: 8250: move rx_running out of the bitfield

That bitfield is modified by read + or + write operation. If someone
sets any of the other two bits it might render the lock useless.

Signed-off-by: John Ogness <[email protected]>
Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
---
drivers/tty/serial/8250/8250.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/tty/serial/8250/8250.h b/drivers/tty/serial/8250/8250.h
index c43f74c..78f5e3a 100644
--- a/drivers/tty/serial/8250/8250.h
+++ b/drivers/tty/serial/8250/8250.h
@@ -44,7 +44,7 @@ struct uart_8250_dma {

unsigned char tx_running:1;
unsigned char tx_err: 1;
- unsigned char rx_running:1;
+ unsigned char rx_running;
};

struct old_serial_port {
--
1.7.10.4


2015-07-30 23:24:25

by Peter Hurley

[permalink] [raw]
Subject: Re: [PATCH 2/3] serial: 8250: move rx_running out of the bitfield

On 07/30/2015 06:54 PM, John Ogness wrote:
> That bitfield is modified by read + or + write operation. If someone
> sets any of the other two bits it might render the lock useless.

Good catch.
Let's just make all of the fields not bitfield though.

Regards,
Peter Hurley

> Signed-off-by: John Ogness <[email protected]>
> Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
> ---
> drivers/tty/serial/8250/8250.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/tty/serial/8250/8250.h b/drivers/tty/serial/8250/8250.h
> index c43f74c..78f5e3a 100644
> --- a/drivers/tty/serial/8250/8250.h
> +++ b/drivers/tty/serial/8250/8250.h
> @@ -44,7 +44,7 @@ struct uart_8250_dma {
>
> unsigned char tx_running:1;
> unsigned char tx_err: 1;
> - unsigned char rx_running:1;
> + unsigned char rx_running;
> };
>
> struct old_serial_port {
>