serial: 8250: Check for valid console index

Message ID 20231004085511.42645-1-tony@atomide.com
State New
Headers
Series serial: 8250: Check for valid console index |

Commit Message

Tony Lindgren Oct. 4, 2023, 8:55 a.m. UTC
  Let's not allow negative numbers for console index.

Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 drivers/tty/serial/8250/8250_core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Ilpo Järvinen Oct. 4, 2023, 9:05 a.m. UTC | #1
On Wed, 4 Oct 2023, Tony Lindgren wrote:

> Let's not allow negative numbers for console index.
> 
> Signed-off-by: Tony Lindgren <tony@atomide.com>
> ---
>  drivers/tty/serial/8250/8250_core.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
> --- a/drivers/tty/serial/8250/8250_core.c
> +++ b/drivers/tty/serial/8250/8250_core.c
> @@ -611,7 +611,7 @@ static int univ8250_console_setup(struct console *co, char *options)
>  	 * if so, search for the first available port that does have
>  	 * console support.
>  	 */
> -	if (co->index >= UART_NR)
> +	if (co->index < 0 || co->index >= UART_NR)
>  		co->index = 0;

The inconsistencies how different serial drivers handle this situation 
seem staggering. Perhaps there should be some effort to make the behavior
uniform across them?
  
Tony Lindgren Oct. 4, 2023, 9:08 a.m. UTC | #2
* Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> [231004 09:05]:
> On Wed, 4 Oct 2023, Tony Lindgren wrote:
> 
> > Let's not allow negative numbers for console index.
> > 
> > Signed-off-by: Tony Lindgren <tony@atomide.com>
> > ---
> >  drivers/tty/serial/8250/8250_core.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
> > --- a/drivers/tty/serial/8250/8250_core.c
> > +++ b/drivers/tty/serial/8250/8250_core.c
> > @@ -611,7 +611,7 @@ static int univ8250_console_setup(struct console *co, char *options)
> >  	 * if so, search for the first available port that does have
> >  	 * console support.
> >  	 */
> > -	if (co->index >= UART_NR)
> > +	if (co->index < 0 || co->index >= UART_NR)
> >  		co->index = 0;
> 
> The inconsistencies how different serial drivers handle this situation 
> seem staggering. Perhaps there should be some effort to make the behavior
> uniform across them?

Hmm yeah we should just have them all check for co->index < 0.

Regards,

Tony
  
Ilpo Järvinen Oct. 4, 2023, 9:13 a.m. UTC | #3
On Wed, 4 Oct 2023, Tony Lindgren wrote:

> * Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> [231004 09:05]:
> > On Wed, 4 Oct 2023, Tony Lindgren wrote:
> > 
> > > Let's not allow negative numbers for console index.
> > > 
> > > Signed-off-by: Tony Lindgren <tony@atomide.com>
> > > ---
> > >  drivers/tty/serial/8250/8250_core.c | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > 
> > > diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
> > > --- a/drivers/tty/serial/8250/8250_core.c
> > > +++ b/drivers/tty/serial/8250/8250_core.c
> > > @@ -611,7 +611,7 @@ static int univ8250_console_setup(struct console *co, char *options)
> > >  	 * if so, search for the first available port that does have
> > >  	 * console support.
> > >  	 */
> > > -	if (co->index >= UART_NR)
> > > +	if (co->index < 0 || co->index >= UART_NR)
> > >  		co->index = 0;
> > 
> > The inconsistencies how different serial drivers handle this situation 
> > seem staggering. Perhaps there should be some effort to make the behavior
> > uniform across them?
> 
> Hmm yeah we should just have them all check for co->index < 0.

Right but it's only about that, some return -Exx codes (more than one -Exx 
variant) and some do assign just 0 like here.
  
Tony Lindgren Oct. 4, 2023, 9:21 a.m. UTC | #4
* Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> [231004 09:13]:
> On Wed, 4 Oct 2023, Tony Lindgren wrote:
> 
> > * Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> [231004 09:05]:
> > > On Wed, 4 Oct 2023, Tony Lindgren wrote:
> > > 
> > > > Let's not allow negative numbers for console index.
> > > > 
> > > > Signed-off-by: Tony Lindgren <tony@atomide.com>
> > > > ---
> > > >  drivers/tty/serial/8250/8250_core.c | 2 +-
> > > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > > 
> > > > diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
> > > > --- a/drivers/tty/serial/8250/8250_core.c
> > > > +++ b/drivers/tty/serial/8250/8250_core.c
> > > > @@ -611,7 +611,7 @@ static int univ8250_console_setup(struct console *co, char *options)
> > > >  	 * if so, search for the first available port that does have
> > > >  	 * console support.
> > > >  	 */
> > > > -	if (co->index >= UART_NR)
> > > > +	if (co->index < 0 || co->index >= UART_NR)
> > > >  		co->index = 0;
> > > 
> > > The inconsistencies how different serial drivers handle this situation 
> > > seem staggering. Perhaps there should be some effort to make the behavior
> > > uniform across them?
> > 
> > Hmm yeah we should just have them all check for co->index < 0.
> 
> Right but it's only about that, some return -Exx codes (more than one -Exx 
> variant) and some do assign just 0 like here.

What do you have in mind then? They should all assume co->index < 0 is an
invalid console index still, right :)

Regards,

Tony
  
Andy Shevchenko Oct. 5, 2023, 9:08 a.m. UTC | #5
On Wed, Oct 04, 2023 at 11:55:10AM +0300, Tony Lindgren wrote:
> Let's not allow negative numbers for console index.

...

> -	if (co->index >= UART_NR)
> +	if (co->index < 0 || co->index >= UART_NR)
>  		co->index = 0;

in_range() ?
  

Patch

diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
--- a/drivers/tty/serial/8250/8250_core.c
+++ b/drivers/tty/serial/8250/8250_core.c
@@ -611,7 +611,7 @@  static int univ8250_console_setup(struct console *co, char *options)
 	 * if so, search for the first available port that does have
 	 * console support.
 	 */
-	if (co->index >= UART_NR)
+	if (co->index < 0 || co->index >= UART_NR)
 		co->index = 0;
 
 	/*