2019-05-27 05:38:33

by Sugaya Taichi

[permalink] [raw]
Subject: [PATCH] serial: Fix an invalid comparing statement

Drop the if-statement which refers to 8th bit field of u8 variable.
The bit field is no longer used.

Fixes: ba44dc043004 ("serial: Add Milbeaut serial control")
Reported-by: Colin Ian King <[email protected]>
Signed-off-by: Sugaya Taichi <[email protected]>
---
drivers/tty/serial/milbeaut_usio.c | 15 +++++----------
1 file changed, 5 insertions(+), 10 deletions(-)

diff --git a/drivers/tty/serial/milbeaut_usio.c b/drivers/tty/serial/milbeaut_usio.c
index 949ab7e..d7207ab 100644
--- a/drivers/tty/serial/milbeaut_usio.c
+++ b/drivers/tty/serial/milbeaut_usio.c
@@ -56,7 +56,6 @@
#define MLB_USIO_SSR_FRE BIT(4)
#define MLB_USIO_SSR_PE BIT(5)
#define MLB_USIO_SSR_REC BIT(7)
-#define MLB_USIO_SSR_BRK BIT(8)
#define MLB_USIO_FCR_FE1 BIT(0)
#define MLB_USIO_FCR_FE2 BIT(1)
#define MLB_USIO_FCR_FCL1 BIT(2)
@@ -180,18 +179,14 @@ static void mlb_usio_rx_chars(struct uart_port *port)
if (status & MLB_USIO_SSR_ORE)
port->icount.overrun++;
status &= port->read_status_mask;
- if (status & MLB_USIO_SSR_BRK) {
- flag = TTY_BREAK;
+ if (status & MLB_USIO_SSR_PE) {
+ flag = TTY_PARITY;
ch = 0;
} else
- if (status & MLB_USIO_SSR_PE) {
- flag = TTY_PARITY;
+ if (status & MLB_USIO_SSR_FRE) {
+ flag = TTY_FRAME;
ch = 0;
- } else
- if (status & MLB_USIO_SSR_FRE) {
- flag = TTY_FRAME;
- ch = 0;
- }
+ }
if (flag)
uart_insert_char(port, status, MLB_USIO_SSR_ORE,
ch, flag);
--
1.9.1


2019-06-10 12:00:20

by Sugaya Taichi

[permalink] [raw]
Subject: Re: [PATCH] serial: Fix an invalid comparing statement

Hi

Does anyone have comments?

On 2019/05/27 14:01, Sugaya Taichi wrote:
> Drop the if-statement which refers to 8th bit field of u8 variable.
> The bit field is no longer used.
>
> Fixes: ba44dc043004 ("serial: Add Milbeaut serial control")
> Reported-by: Colin Ian King <[email protected]>
> Signed-off-by: Sugaya Taichi <[email protected]>
> ---
> drivers/tty/serial/milbeaut_usio.c | 15 +++++----------
> 1 file changed, 5 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/tty/serial/milbeaut_usio.c b/drivers/tty/serial/milbeaut_usio.c
> index 949ab7e..d7207ab 100644
> --- a/drivers/tty/serial/milbeaut_usio.c
> +++ b/drivers/tty/serial/milbeaut_usio.c
> @@ -56,7 +56,6 @@
> #define MLB_USIO_SSR_FRE BIT(4)
> #define MLB_USIO_SSR_PE BIT(5)
> #define MLB_USIO_SSR_REC BIT(7)
> -#define MLB_USIO_SSR_BRK BIT(8)
> #define MLB_USIO_FCR_FE1 BIT(0)
> #define MLB_USIO_FCR_FE2 BIT(1)
> #define MLB_USIO_FCR_FCL1 BIT(2)
> @@ -180,18 +179,14 @@ static void mlb_usio_rx_chars(struct uart_port *port)
> if (status & MLB_USIO_SSR_ORE)
> port->icount.overrun++;
> status &= port->read_status_mask;
> - if (status & MLB_USIO_SSR_BRK) {
> - flag = TTY_BREAK;
> + if (status & MLB_USIO_SSR_PE) {
> + flag = TTY_PARITY;
> ch = 0;
> } else
> - if (status & MLB_USIO_SSR_PE) {
> - flag = TTY_PARITY;
> + if (status & MLB_USIO_SSR_FRE) {
> + flag = TTY_FRAME;
> ch = 0;
> - } else
> - if (status & MLB_USIO_SSR_FRE) {
> - flag = TTY_FRAME;
> - ch = 0;
> - }
> + }
> if (flag)
> uart_insert_char(port, status, MLB_USIO_SSR_ORE,
> ch, flag);
>

2019-06-10 16:57:38

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] serial: Fix an invalid comparing statement

On Mon, May 27, 2019 at 02:01:27PM +0900, Sugaya Taichi wrote:
> Drop the if-statement which refers to 8th bit field of u8 variable.
> The bit field is no longer used.
>
> Fixes: ba44dc043004 ("serial: Add Milbeaut serial control")
> Reported-by: Colin Ian King <[email protected]>
> Signed-off-by: Sugaya Taichi <[email protected]>
> ---
> drivers/tty/serial/milbeaut_usio.c | 15 +++++----------
> 1 file changed, 5 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/tty/serial/milbeaut_usio.c b/drivers/tty/serial/milbeaut_usio.c
> index 949ab7e..d7207ab 100644
> --- a/drivers/tty/serial/milbeaut_usio.c
> +++ b/drivers/tty/serial/milbeaut_usio.c
> @@ -56,7 +56,6 @@
> #define MLB_USIO_SSR_FRE BIT(4)
> #define MLB_USIO_SSR_PE BIT(5)
> #define MLB_USIO_SSR_REC BIT(7)
> -#define MLB_USIO_SSR_BRK BIT(8)
> #define MLB_USIO_FCR_FE1 BIT(0)
> #define MLB_USIO_FCR_FE2 BIT(1)
> #define MLB_USIO_FCR_FCL1 BIT(2)
> @@ -180,18 +179,14 @@ static void mlb_usio_rx_chars(struct uart_port *port)
> if (status & MLB_USIO_SSR_ORE)
> port->icount.overrun++;
> status &= port->read_status_mask;
> - if (status & MLB_USIO_SSR_BRK) {
> - flag = TTY_BREAK;
> + if (status & MLB_USIO_SSR_PE) {
> + flag = TTY_PARITY;
> ch = 0;
> } else
> - if (status & MLB_USIO_SSR_PE) {
> - flag = TTY_PARITY;
> + if (status & MLB_USIO_SSR_FRE) {
> + flag = TTY_FRAME;
> ch = 0;
> - } else
> - if (status & MLB_USIO_SSR_FRE) {
> - flag = TTY_FRAME;
> - ch = 0;
> - }
> + }
> if (flag)
> uart_insert_char(port, status, MLB_USIO_SSR_ORE,
> ch, flag);

While the code never actually supported Break, you are explicitly
removing that logic now. So shouldn't you instead _fix_ break handling?
The code before and after your change does not work any differently, so
this patch isn't really needed at this point.

thanks,

greg k-h

2019-06-12 09:29:50

by Sugaya Taichi

[permalink] [raw]
Subject: Re: [PATCH] serial: Fix an invalid comparing statement

Hi,

On 2019/06/11 1:56, Greg Kroah-Hartman wrote:
> On Mon, May 27, 2019 at 02:01:27PM +0900, Sugaya Taichi wrote:
>> Drop the if-statement which refers to 8th bit field of u8 variable.
>> The bit field is no longer used.
>>
>> Fixes: ba44dc043004 ("serial: Add Milbeaut serial control")
>> Reported-by: Colin Ian King <[email protected]>
>> Signed-off-by: Sugaya Taichi <[email protected]>
>> ---
>> drivers/tty/serial/milbeaut_usio.c | 15 +++++----------
>> 1 file changed, 5 insertions(+), 10 deletions(-)
>>
>> diff --git a/drivers/tty/serial/milbeaut_usio.c b/drivers/tty/serial/milbeaut_usio.c
>> index 949ab7e..d7207ab 100644
>> --- a/drivers/tty/serial/milbeaut_usio.c
>> +++ b/drivers/tty/serial/milbeaut_usio.c
>> @@ -56,7 +56,6 @@
>> #define MLB_USIO_SSR_FRE BIT(4)
>> #define MLB_USIO_SSR_PE BIT(5)
>> #define MLB_USIO_SSR_REC BIT(7)
>> -#define MLB_USIO_SSR_BRK BIT(8)
>> #define MLB_USIO_FCR_FE1 BIT(0)
>> #define MLB_USIO_FCR_FE2 BIT(1)
>> #define MLB_USIO_FCR_FCL1 BIT(2)
>> @@ -180,18 +179,14 @@ static void mlb_usio_rx_chars(struct uart_port *port)
>> if (status & MLB_USIO_SSR_ORE)
>> port->icount.overrun++;
>> status &= port->read_status_mask;
>> - if (status & MLB_USIO_SSR_BRK) {
>> - flag = TTY_BREAK;
>> + if (status & MLB_USIO_SSR_PE) {
>> + flag = TTY_PARITY;
>> ch = 0;
>> } else
>> - if (status & MLB_USIO_SSR_PE) {
>> - flag = TTY_PARITY;
>> + if (status & MLB_USIO_SSR_FRE) {
>> + flag = TTY_FRAME;
>> ch = 0;
>> - } else
>> - if (status & MLB_USIO_SSR_FRE) {
>> - flag = TTY_FRAME;
>> - ch = 0;
>> - }
>> + }
>> if (flag)
>> uart_insert_char(port, status, MLB_USIO_SSR_ORE,
>> ch, flag);
>
> While the code never actually supported Break, you are explicitly
> removing that logic now. So shouldn't you instead _fix_ break handling?
> The code before and after your change does not work any differently, so
> this patch isn't really needed at this point.
>

According to research, MLB_USIO_SSR_BRK was a remnant of old HW.
Since current one does not handle the Break, all logic related it should be
removed. I try to make a new fix patch.

Thanks,
Sugaya Taichi

> thanks,
>
> greg k-h
>