diff mbox

[v2] tty: serial: msm_serial.c: Cleaning up uninitialized variables

Message ID 1404665232-14311-1-git-send-email-rickard_strandqvist@spectrumdigital.se (mailing list archive)
State New, archived
Headers show

Commit Message

Rickard Strandqvist July 6, 2014, 4:47 p.m. UTC
Set reasonable initial value of some variables, in case
they do not get set to something otherwise.
And I've also added a plausibility control of the values.

Signed-off-by: Rickard Strandqvist <rickard_strandqvist@spectrumdigital.se>
---
 drivers/tty/serial/msm_serial.c |   18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

Comments

Stephen Boyd July 9, 2014, 6:02 p.m. UTC | #1
On 07/06/14 09:47, Rickard Strandqvist wrote:
> Set reasonable initial value of some variables, in case
> they do not get set to something otherwise.
> And I've also added a plausibility control of the values.
>
> Signed-off-by: Rickard Strandqvist <rickard_strandqvist@spectrumdigital.se>
> ---

This patch doesn't look right...

> @@ -930,17 +930,21 @@ static int __init msm_console_setup(struct console *co, char *options)
>  
>  	msm_init_clock(port);
>  
> -	if (options)
> +	if (options) {
>  		uart_parse_options(options, &baud, &parity, &bits, &flow);
> +		if (baud < 300 || baud > 115200)
> +			baud = 115200;
> +		if (NULL == strchr("noeNOE", parity))
> +			parity = 'n';
> +		if (bits != 7)
> +			bits = 8;
> +		if (flow != 'r')
> +			flow = 'n';
> +	}
>  
> -	bits = 8;
> -	parity = 'n';
> -	flow = 'n';
>  	msm_write(port, UART_MR2_BITS_PER_CHAR_8 | UART_MR2_STOP_BIT_LEN_ONE,
>  		  UART_MR2);	/* 8N1 */
>  

because this code is overriding whatever is parsed from
uart_parse_options() on purpose. The hardware is configured for 8 bits,
no parity, no flow control with this msm_write() statement. Maybe we
should extend the code to configure the parity and flow control bits
instead.

> -	if (baud < 300 || baud > 115200)
> -		baud = 115200;
>  	msm_set_baud_rate(port, baud);
>  
>  	msm_reset(port);
Rickard Strandqvist July 9, 2014, 9:01 p.m. UTC | #2
2014-07-09 20:02 GMT+02:00 Stephen Boyd <sboyd@codeaurora.org>:
> On 07/06/14 09:47, Rickard Strandqvist wrote:
>> Set reasonable initial value of some variables, in case
>> they do not get set to something otherwise.
>> And I've also added a plausibility control of the values.
>>
>> Signed-off-by: Rickard Strandqvist <rickard_strandqvist@spectrumdigital.se>
>> ---
>
> This patch doesn't look right...
>
>> @@ -930,17 +930,21 @@ static int __init msm_console_setup(struct console *co, char *options)
>>
>>       msm_init_clock(port);
>>
>> -     if (options)
>> +     if (options) {
>>               uart_parse_options(options, &baud, &parity, &bits, &flow);
>> +             if (baud < 300 || baud > 115200)
>> +                     baud = 115200;
>> +             if (NULL == strchr("noeNOE", parity))
>> +                     parity = 'n';
>> +             if (bits != 7)
>> +                     bits = 8;
>> +             if (flow != 'r')
>> +                     flow = 'n';
>> +     }
>>
>> -     bits = 8;
>> -     parity = 'n';
>> -     flow = 'n';
>>       msm_write(port, UART_MR2_BITS_PER_CHAR_8 | UART_MR2_STOP_BIT_LEN_ONE,
>>                 UART_MR2);    /* 8N1 */
>>
>
> because this code is overriding whatever is parsed from
> uart_parse_options() on purpose. The hardware is configured for 8 bits,
> no parity, no flow control with this msm_write() statement. Maybe we
> should extend the code to configure the parity and flow control bits
> instead.



Hi

Okay, well that explains the strange code.
Maybe there should be a comment about this?

You mean that UART_MR2_BITS_PER_CHAR_8 | UART_MR2_STOP_BIT_LEN_ONE is
set correctly for the msm_write function?
I can do that...

Regardless, the original error whas that baud could be used uninitialized.


Kind regards
Rickard Strandqvist
--
To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/tty/serial/msm_serial.c b/drivers/tty/serial/msm_serial.c
index 72000a6..4491108 100644
--- a/drivers/tty/serial/msm_serial.c
+++ b/drivers/tty/serial/msm_serial.c
@@ -917,7 +917,7 @@  static int __init msm_console_setup(struct console *co, char *options)
 {
 	struct uart_port *port;
 	struct msm_port *msm_port;
-	int baud, flow, bits, parity;
+	int baud = 115200, flow = 'n', bits = 8, parity = 'n';
 
 	if (unlikely(co->index >= UART_NR || co->index < 0))
 		return -ENXIO;
@@ -930,17 +930,21 @@  static int __init msm_console_setup(struct console *co, char *options)
 
 	msm_init_clock(port);
 
-	if (options)
+	if (options) {
 		uart_parse_options(options, &baud, &parity, &bits, &flow);
+		if (baud < 300 || baud > 115200)
+			baud = 115200;
+		if (NULL == strchr("noeNOE", parity))
+			parity = 'n';
+		if (bits != 7)
+			bits = 8;
+		if (flow != 'r')
+			flow = 'n';
+	}
 
-	bits = 8;
-	parity = 'n';
-	flow = 'n';
 	msm_write(port, UART_MR2_BITS_PER_CHAR_8 | UART_MR2_STOP_BIT_LEN_ONE,
 		  UART_MR2);	/* 8N1 */
 
-	if (baud < 300 || baud > 115200)
-		baud = 115200;
 	msm_set_baud_rate(port, baud);
 
 	msm_reset(port);